ark-curves-cherry-picked/mnt4_753/src/fields/fq2.rs
mnt4_753/src/fields/fq2.rsRaw
1use ark_ff::{
2 fields::fp2::{Fp2, Fp2Config},
3 MontFp, QuadExt,
4};
5
6use crate::{Fq, FQ_ONE};
7
8pub type Fq2 = Fp2<Fq2Config>;
9
10pub struct Fq2Config;
11
12impl Fp2Config for Fq2Config {
13 type Fp = Fq;
14
15 // non_residue = 13
16 const NONRESIDUE: Fq = MontFp!(Fq, "13");
17
18 // qnr = (8, 1)
19 const QUADRATIC_NONRESIDUE: Fq2 = QuadExt!(MontFp!(Fq, "8"), FQ_ONE);
20
21 // Coefficients:
22 // [1, 41898490967918953402344214791240637128170709919953949071783502921025352812571106773058893763790338921418070971888253786114353726529584385201591605722013126468931404347949840543007986327743462853720628051692141265303114721689600]
23 // see https://github.com/o1-labs/snarky/blob/2cf5ef3a14989e57c17518832b3c52590068fc48/src/camlsnark_c/libsnark-caml/depends/libff/libff/algebra/curves/mnt753/mnt4753/mnt4753_init.cpp
24 const FROBENIUS_COEFF_FP2_C1: &'static [Self::Fp] = &[
25 FQ_ONE,
26 MontFp!(Fq, "41898490967918953402344214791240637128170709919953949071783502921025352812571106773058893763790338921418070971888253786114353726529584385201591605722013126468931404347949840543007986327743462853720628051692141265303114721689600"),
27 ];
28}