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    const T: BigInteger = BigInteger([0x0, 0x0, 0x0, 0x0, 0x0, 0x0]);
88
89    const T_MINUS_ONE_DIV_TWO: BigInteger = BigInteger([0x0, 0x0, 0x0, 0x0, 0x0, 0x0]);
90}