< prev index next >
src/java.base/share/classes/java/math/MutableBigInteger.java
Print this page
rev 12150 : 8046943: JEP 246: Leverage CPU Instructions for GHASH and RSA
Summary: Add montgomeryMultiply intrinsic
Reviewed-by: kvn
*** 2063,2072 ****
--- 2063,2087 ----
t *= 2 - val*t;
return t;
}
/**
+ * Returns the multiplicative inverse of val mod 2^64. Assumes val is odd.
+ */
+ static long inverseMod64(long val) {
+ // Newton's iteration!
+ long t = val;
+ t *= 2 - val*t;
+ t *= 2 - val*t;
+ t *= 2 - val*t;
+ t *= 2 - val*t;
+ t *= 2 - val*t;
+ assert(t * val == 1);
+ return t;
+ }
+
+ /**
* Calculate the multiplicative inverse of 2^k mod mod, where mod is odd.
*/
static MutableBigInteger modInverseBP2(MutableBigInteger mod, int k) {
// Copy the mod to protect original
return fixup(new MutableBigInteger(1), new MutableBigInteger(mod), k);
< prev index next >