Potrzebuję zoptymalizować kod, w którym pomnożę wektor ints (32-bitowy) za pomocą skalarnego modulo p (gdzie p jest liczbą pierwszą (2^32) -5), a następnie odjąć ten wektor z innego wektora modulo p.Szybkie mnożenie i odejmowanie modulo a prime
Kod wygląda następująco:
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]));
}
}
Używam tęskni ponieważ Java nie obsługuje liczb całkowitych, ale oba wektory są mod p więc można się spodziewać każdy numer wynosi 0 < = x < (2^32) -5
Wszelkie pomysły na optymalizację tego? Operacja mod p zajmuje większość czasu wykonania, więc jeden sposób optymalizacji tego może w jakiś sposób nie spowodować modP po mnożeniu i zrobić to dopiero po odjęciu. Wszelkie pomysły, jak to zrobić?
Dzięki. Próbowałem po prostu usunąć mod p po mnożeniu, ale teraz moje testy regresji się nie udały. Chyba dostaję jakiejś formy błędu przepełnienia. Przyjrzę się temu bliżej. – Yrlec