secp256k1FeImplIsSquareVar static method
Implementation
static int secp256k1FeImplIsSquareVar(Secp256k1Fe x) {
Secp256k1Fe tmp = Secp256k1Fe();
Secp256k1ModinvSigned s = Secp256k1ModinvSigned();
int jac, ret;
tmp = x.clone();
secp256k1FeNormalizeVar(tmp);
/// secp256k1Jacobi64MaybeVar cannot deal with input 0.
if (secp256k1FeIsZero(tmp).toBool) {
return 1;
}
secp256k1FeToSigned62(s, tmp);
jac = secp256k1Jacobi64MaybeVar(s, Secp256k1Const.secp256k1ConstModinfoFe);
if (jac == 0) {
Secp256k1Fe dummy = Secp256k1Fe();
ret = secp256k1FeSqrt(dummy, tmp);
} else {
ret = (jac >= 0).toInt;
}
return ret;
}