secp256k1FeHalf static method
Implementation
static void secp256k1FeHalf(Secp256k1Fe r) {
BigInt t0 = r[0], t1 = r[1], t2 = r[2], t3 = r[3], t4 = r[4];
BigInt one = BigInt.one;
BigInt mask = ((-(t0 & one)).toUnsigned64 >> 12).toUnsigned64;
t0 = (t0 + (Secp256k1Const.mask47 & mask)).toUnsigned64;
t1 = (t1 + mask).toUnsigned64;
t2 = (t2 + mask).toUnsigned64;
t3 = (t3 + mask).toUnsigned64;
t4 = (t4 + (mask >> 4)).toUnsigned64;
_cond((t0 & one) == BigInt.zero, "secp256k1FeHalf");
r[0] = (t0 >> 1).toUnsigned64 + ((t1 & one) << 51);
r[1] = (t1 >> 1).toUnsigned64 + ((t2 & one) << 51);
r[2] = (t2 >> 1).toUnsigned64 + ((t3 & one) << 51);
r[3] = (t3 >> 1).toUnsigned64 + ((t4 & one) << 51);
r[4] = (t4 >> 1);
}