arnaucube
arnaucube/ark-curves-cherry-pickedPublic Self-hosted repository
ark-curves-cherry-picked/ed_on_cp6_782/src/fields/fr.rs
ed_on_cp6_782/src/fields/fr.rsRaw
  1use ark_ff::{
  2    biginteger::BigInteger384 as BigInteger,
  3    fields::{FftParameters, Fp384, Fp384Parameters, FpParameters},
  4};
  5
  6pub type Fr = Fp384<FrParameters>;
  7
  8pub struct FrParameters;
  9
 10impl Fp384Parameters for FrParameters {}
 11impl FftParameters for FrParameters {
 12    type BigInt = BigInteger;
 13
 14    const TWO_ADICITY: u32 = 2u32;
 15
 16    #[rustfmt::skip]
 17    const TWO_ADIC_ROOT_OF_UNITY: BigInteger = BigInteger([
 18        12119792640622387781u64,
 19        8318439284650634613u64,
 20        6931324077796168275u64,
 21        12851391603681523141u64,
 22        6881015057611215092u64,
 23        1893962574900431u64,
 24    ]);
 25}
 26impl FpParameters for FrParameters {
 27    /// MODULUS = 32333053251621136751331591711861691692049189094364332567435817881934511297123972799646723302813083835942624121493
 28    #[rustfmt::skip]
 29    const MODULUS: BigInteger = BigInteger([
 30        4684667634276979349u64,
 31        3748803659444032385u64,
 32        16273581227874629698u64,
 33        7152942431629910641u64,
 34        6397188139321141543u64,
 35        15137289088311837u64,
 36    ]);
 37
 38    const MODULUS_BITS: u32 = 374;
 39
 40    const CAPACITY: u32 = Self::MODULUS_BITS - 1;
 41
 42    const REPR_SHAVE_BITS: u32 = 10;
 43
 44    #[rustfmt::skip]
 45    const R: BigInteger = BigInteger([
 46        12565484300600153878u64,
 47        8749673077137355528u64,
 48        9027943686469014788u64,
 49        13026065139386752555u64,
 50        11197589485989933721u64,
 51        9525964145733727u64,
 52    ]);
 53
 54    #[rustfmt::skip]
 55    const R2: BigInteger = BigInteger([
 56        17257035094703902127u64,
 57        16096159112880350050u64,
 58        3498553494623421763u64,
 59        333405339929360058u64,
 60        1125865524035793947u64,
 61        1586246138566285u64,
 62    ]);
 63
 64    const INV: u64 = 16242011933465909059u64;
 65
 66    // 2
 67    #[rustfmt::skip]
 68    const GENERATOR: BigInteger = BigInteger([
 69        1999556893213776791u64,
 70        13750542494830678672u64,
 71        1782306145063399878u64,
 72        452443773434042853u64,
 73        15997990832658725900u64,
 74        3914639203155617u64,
 75    ]);
 76
 77    #[rustfmt::skip]
 78    const MODULUS_MINUS_ONE_DIV_TWO: BigInteger = BigInteger([
 79        11565705853993265482u64,
 80        1874401829722016192u64,
 81        17360162650792090657u64,
 82        12799843252669731128u64,
 83        12421966106515346579u64,
 84        7568644544155918u64,
 85    ]);
 86
 87    /// 8083263312905284187832897927965422923012297273591083141858954470483627824280993199911680825703270958985656030373
 88    const T: BigInteger = BigInteger([
 89        5782852926996632741,
 90        10160572951715783904,
 91        8680081325396045328,
 92        15623293663189641372,
 93        6210983053257673289,
 94        3784322272077959,
 95    ]);
 96
 97    /// 4041631656452642093916448963982711461506148636795541570929477235241813912140496599955840412851635479492828015186
 98    const T_MINUS_ONE_DIV_TWO: BigInteger = BigInteger([
 99        2891426463498316370,
100        5080286475857891952,
101        4340040662698022664,
102        17035018868449596494,
103        12328863563483612452,
104        1892161136038979,
105    ]);
106}