G2NativePrepared.fromG2 constructor

G2NativePrepared.fromG2(
  1. G2NativeAffinePoint q
)

Implementation

factory G2NativePrepared.fromG2(G2NativeAffinePoint q) {
  bool isIdentity = q.isIdentity();
  final a = G2NativeAffinePoint.conditionalSelect(
    q,
    G2NativeAffinePoint.generator(),
    isIdentity,
  );

  final adder = _G2AffineMillerLoopDriver(
    cur: G2NativeProjective.fromAffine(q),
    base: a,
  );
  Bls12PairingUtils.millerLoop(adder);
  assert(adder.length == 68);
  return G2NativePrepared(coeffs: adder._coeffs, infinity: isIdentity);
}