psi method

G2Projective psi()

Implementation

G2Projective psi() {
  // 1 / ((u+1) ^ ((q-1)/3))
  final coeffX = Bls12Fp2(
    c0: Bls12Fp.zero(),
    c1: Bls12Fp([
      BigInt.parse('0x890dc9e4867545c3'),
      BigInt.parse('0x2af322533285a5d5'),
      BigInt.parse('0x50880866309b7e2c'),
      BigInt.parse('0xa20d1b8c7e881024'),
      BigInt.parse('0x14e4f04fe2db9068'),
      BigInt.parse('0x14e56d3f1564853a'),
    ]),
  );
  // 1 / ((u+1) ^ (p-1)/2)
  final coeffY = Bls12Fp2(
    c0: Bls12Fp([
      BigInt.parse('0x3e2f585da55c9ad1'),
      BigInt.parse('0x4294213d86c18183'),
      BigInt.parse('0x382844c88b623732'),
      BigInt.parse('0x92ad2afd19103e18'),
      BigInt.parse('0x1d794e4fac7cf0b9'),
      BigInt.parse('0x0bd592fc7d825ec8'),
    ]),
    c1: Bls12Fp([
      BigInt.parse('0x7bcfa7a25aa30fda'),
      BigInt.parse('0xdc17dec12a927e7c'),
      BigInt.parse('0x2f088dd86b4ebef1'),
      BigInt.parse('0xd1ca2087da74d4a7'),
      BigInt.parse('0x2da2596696cebc1d'),
      BigInt.parse('0x0e2b7eedbbfd87d2'),
    ]),
  );
  return G2Projective(
    x: x.frobeniusMap() * coeffX,
    y: y.frobeniusMap() * coeffY,
    z: z.frobeniusMap(),
  );
}