secp256k1Modinv64MulCmp62 static method

int secp256k1Modinv64MulCmp62(
  1. Secp256k1ModinvSigned a,
  2. int alen,
  3. Secp256k1ModinvSigned b,
  4. BigInt factor,
)

Implementation

static int secp256k1Modinv64MulCmp62(Secp256k1ModinvSigned a, int alen,
    Secp256k1ModinvSigned b, BigInt factor) {
  int i;
  Secp256k1ModinvSigned am = Secp256k1ModinvSigned(),
      bm = Secp256k1ModinvSigned();
  secp256k1Modinv64Mul62(am, a, alen, BigInt.one);
  secp256k1Modinv64Mul62(bm, b, 5, factor);
  for (i = 0; i < 4; ++i) {
    /// Verify that all but the top limb of a and b are normalized.
    _cond(am[i] >> 62 == BigInt.zero, "secp256k1Modinv64MulCmp62");
    _cond(bm[i] >> 62 == BigInt.zero, "secp256k1Modinv64MulCmp62");
  }
  for (i = 4; i >= 0; --i) {
    if (am[i] < bm[i]) return -1;
    if (am[i] > bm[i]) return 1;
  }
  return 0;
}