secp256k1GeXFracOnCurveVar static method

int secp256k1GeXFracOnCurveVar(
  1. Secp256k1Fe xn,
  2. Secp256k1Fe xd
)

Implementation

static int secp256k1GeXFracOnCurveVar(Secp256k1Fe xn, Secp256k1Fe xd) {
  Secp256k1Fe r = Secp256k1Fe(), t = Secp256k1Fe();
  _cond(
      secp256k1FeNormalizesToZeroVar(xd) == 0, "secp256k1GeXFracOnCurveVar");

  secp256k1FeMul(r, xd, xn);
  secp256k1FeSqr(t, xn);
  secp256k1FeMul(r, r, t);
  secp256k1FeSqr(t, xd);
  secp256k1FeSqr(t, t);
  _cond(Secp256k1Const.secp256k1B <= 31, "secp256k1GeXFracOnCurveVar");
  secp256k1FeMulInt(t, Secp256k1Const.secp256k1B);
  secp256k1FeAdd(r, t);
  return secp256k1FeIsSquareVar(r);
}