我需要優化一些代碼,其中我通過標量模p(其中p是質數(2^32)-5)乘以整數(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不支持無符號整數,但兩個矢量的模p所以你可以期待每一個數字爲0 < = X <( 2^32)-5
任何想法來優化? mod p操作佔用了大部分執行時間,所以優化這種方法的一種方式可能在乘法之後不能做modP,而只能在減法之後做。任何想法如何做到這一點?
謝謝。我試圖在乘法之後刪除mod p,但現在我的迴歸測試失敗了。我想我得到某種形式的溢出錯誤。我會更仔細地研究它。 – Yrlec