cyclotomicSquare static method
Implementation
static Bls12NativeFp12 cyclotomicSquare(Bls12NativeFp12 f) {
Bls12NativeFp2 z0 = f.c0.c0;
Bls12NativeFp2 z4 = f.c0.c1;
Bls12NativeFp2 z3 = f.c0.c2;
Bls12NativeFp2 z2 = f.c1.c0;
Bls12NativeFp2 z1 = f.c1.c1;
Bls12NativeFp2 z5 = f.c1.c2;
var t = fp4Square(z0, z1);
var t0 = t.$1;
var t1 = t.$2;
// For A
z0 = t0 - z0;
z0 = z0 + z0 + t0;
z1 = t1 + z1;
z1 = z1 + z1 + t1;
t = fp4Square(z2, z3);
t0 = t.$1;
t1 = t.$2;
t = fp4Square(z4, z5);
var t2 = t.$1;
var t3 = t.$2;
// For C
z4 = t0 - z4;
z4 = z4 + z4 + t0;
z5 = t1 + z5;
z5 = z5 + z5 + t1;
// For B
t0 = t3.mulByNonresidue();
z2 = t0 + z2;
z2 = z2 + z2 + t0;
z3 = t2 - z3;
z3 = z3 + z3 + t2;
return Bls12NativeFp12(
c0: Bls12NativeFp6(c0: z0, c1: z4, c2: z3),
c1: Bls12NativeFp6(c0: z2, c1: z1, c2: z5),
);
}