arnaucube
arnaucube/ark-curves-cherry-pickedPublic Self-hosted repository
ark-curves-cherry-picked/bn254/src/fields/fq12.rs
bn254/src/fields/fq12.rsRaw
  1use ark_ff::{fields::*, CubicExt, MontFp, QuadExt};
  2
  3use crate::*;
  4
  5pub type Fq12 = Fp12<Fq12Config>;
  6
  7#[derive(Clone, Copy)]
  8pub struct Fq12Config;
  9
 10impl Fp12Config for Fq12Config {
 11    type Fp6Config = Fq6Config;
 12
 13    const NONRESIDUE: Fq6 = CubicExt!(FQ2_ZERO, FQ2_ONE, FQ2_ZERO);
 14
 15    const FROBENIUS_COEFF_FP12_C1: &'static [Fq2] = &[
 16        // Fp2::NONRESIDUE^(((q^0) - 1) / 6)
 17        QuadExt!(MontFp!(Fq, "1"), MontFp!(Fq, "0"),),
 18        // Fp2::NONRESIDUE^(((q^1) - 1) / 6)
 19        QuadExt!(
 20            MontFp!(
 21                Fq,
 22                "8376118865763821496583973867626364092589906065868298776909617916018768340080"
 23            ),
 24            MontFp!(
 25                Fq,
 26                "16469823323077808223889137241176536799009286646108169935659301613961712198316"
 27            ),
 28        ),
 29        // Fp2::NONRESIDUE^(((q^2) - 1) / 6)
 30        QuadExt!(
 31            MontFp!(
 32                Fq,
 33                "21888242871839275220042445260109153167277707414472061641714758635765020556617"
 34            ),
 35            MontFp!(Fq, "0"),
 36        ),
 37        // Fp2::NONRESIDUE^(((q^3) - 1) / 6)
 38        QuadExt!(
 39            MontFp!(
 40                Fq,
 41                "11697423496358154304825782922584725312912383441159505038794027105778954184319"
 42            ),
 43            MontFp!(
 44                Fq,
 45                "303847389135065887422783454877609941456349188919719272345083954437860409601"
 46            ),
 47        ),
 48        // Fp2::NONRESIDUE^(((q^4) - 1) / 6)
 49        QuadExt!(
 50            MontFp!(
 51                Fq,
 52                "21888242871839275220042445260109153167277707414472061641714758635765020556616"
 53            ),
 54            MontFp!(Fq, "0"),
 55        ),
 56        // Fp2::NONRESIDUE^(((q^5) - 1) / 6)
 57        QuadExt!(
 58            MontFp!(
 59                Fq,
 60                "3321304630594332808241809054958361220322477375291206261884409189760185844239"
 61            ),
 62            MontFp!(
 63                Fq,
 64                "5722266937896532885780051958958348231143373700109372999374820235121374419868"
 65            ),
 66        ),
 67        // Fp2::NONRESIDUE^(((q^6) - 1) / 6)
 68        QuadExt!(MontFp!(Fq, "-1"), MontFp!(Fq, "0"),),
 69        // Fp2::NONRESIDUE^(((q^7) - 1) / 6)
 70        QuadExt!(
 71            MontFp!(
 72                Fq,
 73                "13512124006075453725662431877630910996106405091429524885779419978626457868503"
 74            ),
 75            MontFp!(
 76                Fq,
 77                "5418419548761466998357268504080738289687024511189653727029736280683514010267"
 78            ),
 79        ),
 80        // Fp2::NONRESIDUE^(((q^8) - 1) / 6)
 81        QuadExt!(
 82            MontFp!(
 83                Fq,
 84                "2203960485148121921418603742825762020974279258880205651966"
 85            ),
 86            MontFp!(Fq, "0"),
 87        ),
 88        // Fp2::NONRESIDUE^(((q^9) - 1) / 6)
 89        QuadExt!(
 90            MontFp!(
 91                Fq,
 92                "10190819375481120917420622822672549775783927716138318623895010788866272024264"
 93            ),
 94            MontFp!(
 95                Fq,
 96                "21584395482704209334823622290379665147239961968378104390343953940207365798982"
 97            ),
 98        ),
 99        // Fp2::NONRESIDUE^(((q^10) - 1) / 6)
100        QuadExt!(
101            MontFp!(
102                Fq,
103                "2203960485148121921418603742825762020974279258880205651967"
104            ),
105            MontFp!(Fq, "0"),
106        ),
107        // Fp2::NONRESIDUE^(((q^11) - 1) / 6)
108        QuadExt!(
109            MontFp!(
110                Fq,
111                "18566938241244942414004596690298913868373833782006617400804628704885040364344"
112            ),
113            MontFp!(
114                Fq,
115                "16165975933942742336466353786298926857552937457188450663314217659523851788715"
116            ),
117        ),
118    ];
119}