スカラーモジュロp(pは素数(2^32)-5)でintのベクトル(32ビット)を乗算し、次に減算するコードを最適化する必要があります。モジュロpの別のベクトルからのそのベクトル。素数を法とする速い乗算と減算
コードは次のようになります(
public static void multiplyAndSubtract(long fragmentCoefficient, long[] equationToSubtractFrom, long[] equationToSubtract) {
for (int i = 0; i < equationToSubtractFrom.length; i++) {
equationToSubtractFrom[i] = modP(equationToSubtractFrom[i] - multiplyModP(fragmentCoefficient, equationToSubtract[i]));
}
}
Javaは符号なし整数をサポートしていないので、私はlong型を使用していますが、あなたはすべての数は= X ことを期待することができますので、両方のベクトルはモッズpは2^32)-5
これを最適化する方法はありますか? mod p演算は実行時間の大部分を占めているので、これを最適化する方法の1つは、乗算後にmodPを実行せず、減算後に行うだけです。どのようにそれを行う上の任意のアイデアですか?
ありがとうございました。私は乗算の後にmod pを削除しようとしましたが、私の回帰テストは失敗します。私はオーバーフローエラーの何らかの形を得ると思います。私はもっと詳しく調べます。 – Yrlec