psi method
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(),
);
}