secp256k1Modinv64Mul62 static method
void
secp256k1Modinv64Mul62(
- Secp256k1ModinvSigned r,
- Secp256k1ModinvSigned a,
- int alen,
- BigInt factor,
Implementation
static void secp256k1Modinv64Mul62(Secp256k1ModinvSigned r,
Secp256k1ModinvSigned a, int alen, BigInt factor) {
BigInt m62 = Secp256k1Const.mask62;
Secp256k1Int128 c = Secp256k1Int128(), d = Secp256k1Int128();
int i;
secp256k1I128FromI64(c, BigInt.zero);
for (i = 0; i < 4; ++i) {
if (i < alen) secp256k1I128AccumMul(c, a[i], factor);
r[i] = secp256k1I128ToU64(c) & m62;
secp256k1I128Rshift(c, 62);
}
if (4 < alen) secp256k1I128AccumMul(c, a[4], factor);
secp256k1I128FromI64(d, secp256k1I128ToI64(c));
_cond(secp256k1I128EqVar(c, d) == 1, "secp256k1Modinv64Mul62");
r[4] = secp256k1I128ToI64(c);
}