Structs
Represent Fp2 point as
FieldVector
with degree = 2
Fp2 = Fp[u] / (u^2 + 1)
This implementation assumes p = 3 (mod 4) in order for the polynomial u^2 + 1 to be irreducible over Fp; i.e., in order for -1 to not be a square (quadratic residue) in Fp
This means we store an Fp2 point as a_0 + a_1 * u
where a_0, a_1 in Fp