I necesidad de optimizar un cierto código donde multiplicar un vector de enteros (32 bits) por un escalar módulo p (donde p es el número primo (2^32) -5) y luego restar ese vector de otro vector módulo p.multiplicación rápida y sustracción módulo un primer
El código es el siguiente:
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]));
}
}
estoy usando anhela porque Java no soporta enteros sin signo, pero ambos vectores son mod p por lo que se puede esperar que cada número sea 0 = x < < (2^32) -5
¿Alguna idea para optimizar esto? La operación mod p es lo que está ocupando la mayor parte del tiempo de ejecución por lo que una manera de optimizar este posible para hacer de alguna manera no MODP después de la multiplicación y sólo lo hacen después de la sustracción. ¿Alguna idea sobre cómo hacer eso?
Gracias. Intenté simplemente eliminar el mod p después de la multiplicación, pero ahora mis pruebas de regresión fallan. Supongo que recibo algún tipo de error de desbordamiento. Lo investigaré más de cerca. – Yrlec