arnaucube
arnaucube/ark-curves-cherry-pickedPublic Self-hosted repository
ark-curves-cherry-picked/bw6_761/src/fields/fq6.rs
bw6_761/src/fields/fq6.rsRaw
  1use crate::{Fq, Fq3, Fq3Parameters, FQ_ONE, FQ_ZERO};
  2use ark_ff::{
  3    biginteger::BigInteger768 as BigInteger,
  4    field_new,
  5    fields::fp6_2over3::{Fp6, Fp6Parameters},
  6};
  7
  8pub type Fq6 = Fp6<Fq6Parameters>;
  9
 10pub struct Fq6Parameters;
 11
 12impl Fp6Parameters for Fq6Parameters {
 13    type Fp3Params = Fq3Parameters;
 14
 15    /// NONRESIDUE = (0, 1, 0)
 16    #[rustfmt::skip]
 17    const NONRESIDUE: Fq3 = field_new!(Fq3, FQ_ZERO, FQ_ONE, FQ_ZERO);
 18
 19    #[rustfmt::skip]
 20    const FROBENIUS_COEFF_FP6_C1: &'static [Fq] = &[
 21        field_new!(Fq, BigInteger([
 22            0x0202ffffffff85d5,
 23            0x5a5826358fff8ce7,
 24            0x9e996e43827faade,
 25            0xda6aff320ee47df4,
 26            0xece9cb3e1d94b80b,
 27            0xc0e667a25248240b,
 28            0xa74da5bfdcad3905,
 29            0x2352e7fe462f2103,
 30            0x7b56588008b1c87c,
 31            0x45848a63e711022f,
 32            0xd7a81ebb9f65a9df,
 33            0x51f77ef127e87d,
 34        ])),
 35        field_new!(Fq, BigInteger([
 36            0x8cfcb51bd8404a93,
 37            0x495e69d68495a383,
 38            0xd23cbc9234705263,
 39            0x8d2b4c2b5fcf4f52,
 40            0x6a798a5d20c612ce,
 41            0x3e825d90eb6c2443,
 42            0x772b249f2c9525fe,
 43            0x521b2ed366e4b9bb,
 44            0x84abb49bd7c4471d,
 45            0x907062359c0f17e3,
 46            0x3385e55030cc6f12,
 47            0x3f11a3a41a2606,
 48        ])),
 49        field_new!(Fq, BigInteger([
 50            0x7f96b51bd840c549,
 51            0xd59782096496171f,
 52            0x49b046fd9ce14bbc,
 53            0x4b6163bba7527a56,
 54            0xef6c92fb771d59f1,
 55            0x0425bedbac1dfdc7,
 56            0xd3ac39de759c0ffd,
 57            0x9f43ed0e063a81d0,
 58            0x5bd7d20b4f9a3ce2,
 59            0x0411f03c36cf5c3c,
 60            0x2d658fd49661c472,
 61            0x1100249ae760b93,
 62        ])),
 63        field_new!(Fq, BigInteger([
 64            0xf29a000000007ab6,
 65            0x8c391832e000739b,
 66            0x77738a6b6870f959,
 67            0xbe36179047832b03,
 68            0x84f3089e56574722,
 69            0xc5a3614ac0b1d984,
 70            0x5c81153f4906e9fe,
 71            0x4d28be3a9f55c815,
 72            0xd72c1d6f77d5f5c5,
 73            0x73a18e069ac04458,
 74            0xf9dfaa846595555f,
 75            0xd0f0a60a5be58c,
 76        ])),
 77        field_new!(Fq, BigInteger([
 78            0x67a04ae427bfb5f8,
 79            0x9d32d491eb6a5cff,
 80            0x43d03c1cb68051d4,
 81            0x0b75ca96f69859a5,
 82            0x0763497f5325ec60,
 83            0x48076b5c278dd94d,
 84            0x8ca3965ff91efd06,
 85            0x1e6077657ea02f5d,
 86            0xcdd6c153a8c37724,
 87            0x28b5b634e5c22ea4,
 88            0x9e01e3efd42e902c,
 89            0xe3d6815769a804,
 90        ])),
 91        field_new!(Fq, BigInteger([
 92            0x75064ae427bf3b42,
 93            0x10f9bc5f0b69e963,
 94            0xcc5cb1b14e0f587b,
 95            0x4d3fb306af152ea1,
 96            0x827040e0fccea53d,
 97            0x82640a1166dbffc8,
 98            0x30228120b0181307,
 99            0xd137b92adf4a6748,
100            0xf6aaa3e430ed815e,
101            0xb514282e4b01ea4b,
102            0xa422396b6e993acc,
103            0x12e5db4d0dc277,
104        ])),
105    ];
106}