diff --git a/bls12_381/src/curves/g1.rs b/bls12_381/src/curves/g1.rs index c328725..2cc63ac 100644 --- a/bls12_381/src/curves/g1.rs +++ b/bls12_381/src/curves/g1.rs @@ -3,10 +3,7 @@ use ark_ec::{ bls12, models::{ModelParameters, SWModelParameters}, }; -use ark_ff::{ - biginteger::{BigInteger256, BigInteger384}, - field_new, Zero, -}; +use ark_ff::{field_new, Zero}; pub type G1Affine = bls12::G1Affine; pub type G1Projective = bls12::G1Projective; @@ -21,18 +18,11 @@ impl ModelParameters for Parameters { impl SWModelParameters for Parameters { /// COEFF_A = 0 - const COEFF_A: Fq = field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])); + const COEFF_A: Fq = field_new!(Fq, "0"); /// COEFF_B = 4 #[rustfmt::skip] - const COEFF_B: Fq = field_new!(Fq, BigInteger384([ - 0xaa270000000cfff3, - 0x53cc0032fc34000a, - 0x478fe97a6b0a807f, - 0xb1d37ebee6ba24d7, - 0x8ec9733bbf78ab2f, - 0x9d645513d83de7e, - ])); + const COEFF_B: Fq = field_new!(Fq, "4"); /// COFACTOR = (x - 1)^2 / 3 = 76329603384216526031706109802092473003 const COFACTOR: &'static [u64] = &[0x8c00aaab0000aaab, 0x396c8c005555e156]; @@ -40,12 +30,7 @@ impl SWModelParameters for Parameters { /// COFACTOR_INV = COFACTOR^{-1} mod r /// = 52435875175126190458656871551744051925719901746859129887267498875565241663483 #[rustfmt::skip] - const COFACTOR_INV: Fr = field_new!(Fr, BigInteger256([ - 288839107172787499, - 1152722415086798946, - 2612889808468387987, - 5124657601728438008, - ])); + const COFACTOR_INV: Fr = field_new!(Fr, "52435875175126190458656871551744051925719901746859129887267498875565241663483"); /// AFFINE_GENERATOR_COEFFS = (G1_GENERATOR_X, G1_GENERATOR_Y) const AFFINE_GENERATOR_COEFFS: (Self::BaseField, Self::BaseField) = @@ -60,23 +45,9 @@ impl SWModelParameters for Parameters { /// G1_GENERATOR_X = /// 3685416753713387016781088315183077757961620795782546409894578378688607592378376318836054947676345821548104185464507 #[rustfmt::skip] -pub const G1_GENERATOR_X: Fq = field_new!(Fq, BigInteger384([ - 0x5cb38790fd530c16, - 0x7817fc679976fff5, - 0x154f95c7143ba1c1, - 0xf0ae6acdf3d0e747, - 0xedce6ecc21dbf440, - 0x120177419e0bfb75, -])); +pub const G1_GENERATOR_X: Fq = field_new!(Fq, "3685416753713387016781088315183077757961620795782546409894578378688607592378376318836054947676345821548104185464507"); /// G1_GENERATOR_Y = /// 1339506544944476473020471379941921221584933875938349620426543736416511423956333506472724655353366534992391756441569 #[rustfmt::skip] -pub const G1_GENERATOR_Y: Fq = field_new!(Fq, BigInteger384([ - 0xbaac93d50ce72271, - 0x8c22631a7918fd8e, - 0xdd595f13570725ce, - 0x51ac582950405194, - 0xe1c8c3fad0059c0, - 0xbbc3efc5008a26a, -])); +pub const G1_GENERATOR_Y: Fq = field_new!(Fq, "1339506544944476473020471379941921221584933875938349620426543736416511423956333506472724655353366534992391756441569"); diff --git a/bls12_381/src/curves/g2.rs b/bls12_381/src/curves/g2.rs index ba6a14f..f1147e6 100644 --- a/bls12_381/src/curves/g2.rs +++ b/bls12_381/src/curves/g2.rs @@ -3,10 +3,7 @@ use ark_ec::{ bls12, models::{ModelParameters, SWModelParameters}, }; -use ark_ff::{ - biginteger::{BigInteger256, BigInteger384}, - field_new, Zero, -}; +use ark_ff::{field_new, Zero}; pub type G2Affine = bls12::G2Affine; pub type G2Projective = bls12::G2Projective; @@ -44,12 +41,7 @@ impl SWModelParameters for Parameters { /// COFACTOR_INV = COFACTOR^{-1} mod r /// 26652489039290660355457965112010883481355318854675681319708643586776743290055 #[rustfmt::skip] - const COFACTOR_INV: Fr = field_new!(Fr, BigInteger256([ - 6746407649509787816, - 1304054119431494378, - 2461312685643913071, - 5956596749362435284, - ])); + const COFACTOR_INV: Fr = field_new!(Fr, "26652489039290660355457965112010883481355318854675681319708643586776743290055"); /// AFFINE_GENERATOR_COEFFS = (G2_GENERATOR_X, G2_GENERATOR_Y) const AFFINE_GENERATOR_COEFFS: (Self::BaseField, Self::BaseField) = @@ -67,47 +59,19 @@ pub const G2_GENERATOR_Y: Fq2 = field_new!(Fq2, G2_GENERATOR_Y_C0, G2_GENERATOR_ /// G2_GENERATOR_X_C0 = /// 352701069587466618187139116011060144890029952792775240219908644239793785735715026873347600343865175952761926303160 #[rustfmt::skip] -pub const G2_GENERATOR_X_C0: Fq = field_new!(Fq, BigInteger384([ - 0xf5f28fa202940a10, - 0xb3f5fb2687b4961a, - 0xa1a893b53e2ae580, - 0x9894999d1a3caee9, - 0x6f67b7631863366b, - 0x58191924350bcd7, -])); +pub const G2_GENERATOR_X_C0: Fq = field_new!(Fq, "352701069587466618187139116011060144890029952792775240219908644239793785735715026873347600343865175952761926303160"); /// G2_GENERATOR_X_C1 = /// 3059144344244213709971259814753781636986470325476647558659373206291635324768958432433509563104347017837885763365758 #[rustfmt::skip] -pub const G2_GENERATOR_X_C1: Fq = field_new!(Fq, BigInteger384([ - 0xa5a9c0759e23f606, - 0xaaa0c59dbccd60c3, - 0x3bb17e18e2867806, - 0x1b1ab6cc8541b367, - 0xc2b6ed0ef2158547, - 0x11922a097360edf3, -])); +pub const G2_GENERATOR_X_C1: Fq = field_new!(Fq, "3059144344244213709971259814753781636986470325476647558659373206291635324768958432433509563104347017837885763365758"); /// G2_GENERATOR_Y_C0 = /// 1985150602287291935568054521177171638300868978215655730859378665066344726373823718423869104263333984641494340347905 #[rustfmt::skip] -pub const G2_GENERATOR_Y_C0: Fq = field_new!(Fq, BigInteger384([ - 0x4c730af860494c4a, - 0x597cfa1f5e369c5a, - 0xe7e6856caa0a635a, - 0xbbefb5e96e0d495f, - 0x7d3a975f0ef25a2, - 0x83fd8e7e80dae5, -])); +pub const G2_GENERATOR_Y_C0: Fq = field_new!(Fq, "1985150602287291935568054521177171638300868978215655730859378665066344726373823718423869104263333984641494340347905"); /// G2_GENERATOR_Y_C1 = /// 927553665492332455747201965776037880757740193453592970025027978793976877002675564980949289727957565575433344219582 #[rustfmt::skip] -pub const G2_GENERATOR_Y_C1: Fq = field_new!(Fq, BigInteger384([ - 0xadc0fc92df64b05d, - 0x18aa270a2b1461dc, - 0x86adac6a3be4eba0, - 0x79495c4ec93da33a, - 0xe7175850a43ccaed, - 0xb2bc2a163de1bf2, -])); +pub const G2_GENERATOR_Y_C1: Fq = field_new!(Fq, "927553665492332455747201965776037880757740193453592970025027978793976877002675564980949289727957565575433344219582"); diff --git a/bls12_381/src/fields/fq.rs b/bls12_381/src/fields/fq.rs index 53ed147..0db8750 100644 --- a/bls12_381/src/fields/fq.rs +++ b/bls12_381/src/fields/fq.rs @@ -111,5 +111,5 @@ impl FpParameters for FqParameters { ]); } -pub const FQ_ONE: Fq = field_new!(Fq, FqParameters::R); -pub const FQ_ZERO: Fq = field_new!(Fq, BigInteger([0, 0, 0, 0, 0, 0])); +pub const FQ_ONE: Fq = field_new!(Fq, "1"); +pub const FQ_ZERO: Fq = field_new!(Fq, "0"); diff --git a/bls12_381/src/fields/fq12.rs b/bls12_381/src/fields/fq12.rs index 8791ec0..b21d563 100644 --- a/bls12_381/src/fields/fq12.rs +++ b/bls12_381/src/fields/fq12.rs @@ -1,5 +1,5 @@ use crate::*; -use ark_ff::{biginteger::BigInteger384, field_new, fields::*}; +use ark_ff::{field_new, fields::*}; pub type Fq12 = Fp12; @@ -11,183 +11,66 @@ impl Fp12Parameters for Fq12Parameters { const NONRESIDUE: Fq6 = field_new!(Fq6, FQ2_ZERO, FQ2_ONE, FQ2_ZERO); - #[rustfmt::skip] const FROBENIUS_COEFF_FP12_C1: &'static [Fq2] = &[ - // Fq2(u + 1)**(((q^0) - 1) / 6) - FQ2_ONE, - // Fq2(u + 1)**(((q^1) - 1) / 6) + // Fp2::NONRESIDUE^(((q^0) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x7089552b319d465, - 0xc6695f92b50a8313, - 0x97e83cccd117228f, - 0xa35baecab2dc29ee, - 0x1ce393ea5daace4d, - 0x8f2220fb0fb66eb, - ])), - field_new!(Fq, BigInteger384([ - 0xb2f66aad4ce5d646, - 0x5842a06bfc497cec, - 0xcf4895d42599d394, - 0xc11b9cba40a8e8d0, - 0x2e3813cbe5a0de89, - 0x110eefda88847faf, - ])), + field_new!(Fq, "1"), + field_new!(Fq, "0"), ), - // Fq2(u + 1)**(((q^2) - 1) / 6) + // Fp2::NONRESIDUE^(((q^1) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0xecfb361b798dba3a, - 0xc100ddb891865a2c, - 0xec08ff1232bda8e, - 0xd5c13cc6f1ca4721, - 0x47222a47bf7b5c04, - 0x110f184e51c5f59, - ])), - FQ_ZERO, + field_new!(Fq, "3850754370037169011952147076051364057158807420970682438676050522613628423219637725072182697113062777891589506424760"), + field_new!(Fq, "151655185184498381465642749684540099398075398968325446656007613510403227271200139370504932015952886146304766135027"), ), - // Fq2(u + 1)**(((q^3) - 1) / 6) + // Fp2::NONRESIDUE^(((q^2) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x3e2f585da55c9ad1, - 0x4294213d86c18183, - 0x382844c88b623732, - 0x92ad2afd19103e18, - 0x1d794e4fac7cf0b9, - 0xbd592fc7d825ec8, - ])), - field_new!(Fq, BigInteger384([ - 0x7bcfa7a25aa30fda, - 0xdc17dec12a927e7c, - 0x2f088dd86b4ebef1, - 0xd1ca2087da74d4a7, - 0x2da2596696cebc1d, - 0xe2b7eedbbfd87d2, - ])), + field_new!(Fq, "793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620351"), + field_new!(Fq, "0"), ), - // Fq2(u + 1)**(((q^4) - 1) / 6) + // Fp2::NONRESIDUE^(((q^3) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x30f1361b798a64e8, - 0xf3b8ddab7ece5a2a, - 0x16a8ca3ac61577f7, - 0xc26a2ff874fd029b, - 0x3636b76660701c6e, - 0x51ba4ab241b6160, - ])), - FQ_ZERO, + field_new!(Fq, "2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530"), + field_new!(Fq, "1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257"), ), - // Fq2(u + 1)**(((q^5) - 1) / 6) + // Fp2::NONRESIDUE^(((q^4) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x3726c30af242c66c, - 0x7c2ac1aad1b6fe70, - 0xa04007fbba4b14a2, - 0xef517c3266341429, - 0x95ba654ed2226b, - 0x2e370eccc86f7dd, - ])), - field_new!(Fq, BigInteger384([ - 0x82d83cf50dbce43f, - 0xa2813e53df9d018f, - 0xc6f0caa53c65e181, - 0x7525cf528d50fe95, - 0x4a85ed50f4798a6b, - 0x171da0fd6cf8eebd, - ])), + field_new!(Fq, "793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350"), + field_new!(Fq, "0"), ), - // Fq2(u + 1)**(((q^6) - 1) / 6) + // Fp2::NONRESIDUE^(((q^5) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x43f5fffffffcaaae, - 0x32b7fff2ed47fffd, - 0x7e83a49a2e99d69, - 0xeca8f3318332bb7a, - 0xef148d1ea0f4c069, - 0x40ab3263eff0206, - ])), - FQ_ZERO, + field_new!(Fq, "3125332594171059424908108096204648978570118281977575435832422631601824034463382777937621250592425535493320683825557"), + field_new!(Fq, "877076961050607968509681729531255177986764537961432449499635504522207616027455086505066378536590128544573588734230"), ), - // Fq2(u + 1)**(((q^7) - 1) / 6) + // Fp2::NONRESIDUE^(((q^6) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0xb2f66aad4ce5d646, - 0x5842a06bfc497cec, - 0xcf4895d42599d394, - 0xc11b9cba40a8e8d0, - 0x2e3813cbe5a0de89, - 0x110eefda88847faf, - ])), - field_new!(Fq, BigInteger384([ - 0x7089552b319d465, - 0xc6695f92b50a8313, - 0x97e83cccd117228f, - 0xa35baecab2dc29ee, - 0x1ce393ea5daace4d, - 0x8f2220fb0fb66eb, - ])), + field_new!(Fq, "-1"), + field_new!(Fq, "0"), ), - // Fq2(u + 1)**(((q^8) - 1) / 6) + // Fp2::NONRESIDUE^(((q^7) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0xcd03c9e48671f071, - 0x5dab22461fcda5d2, - 0x587042afd3851b95, - 0x8eb60ebe01bacb9e, - 0x3f97d6e83d050d2, - 0x18f0206554638741, - ])), - FQ_ZERO, + field_new!(Fq, "151655185184498381465642749684540099398075398968325446656007613510403227271200139370504932015952886146304766135027"), + field_new!(Fq, "3850754370037169011952147076051364057158807420970682438676050522613628423219637725072182697113062777891589506424760"), ), - // Fq2(u + 1)**(((q^9) - 1) / 6) + // Fp2::NONRESIDUE^(((q^8) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x7bcfa7a25aa30fda, - 0xdc17dec12a927e7c, - 0x2f088dd86b4ebef1, - 0xd1ca2087da74d4a7, - 0x2da2596696cebc1d, - 0xe2b7eedbbfd87d2, - ])), - field_new!(Fq, BigInteger384([ - 0x3e2f585da55c9ad1, - 0x4294213d86c18183, - 0x382844c88b623732, - 0x92ad2afd19103e18, - 0x1d794e4fac7cf0b9, - 0xbd592fc7d825ec8, - ])), + field_new!(Fq, "4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436"), + field_new!(Fq, "0"), ), - // Fq2(u + 1)**(((q^10) - 1) / 6) + // Fp2::NONRESIDUE^(((q^9) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x890dc9e4867545c3, - 0x2af322533285a5d5, - 0x50880866309b7e2c, - 0xa20d1b8c7e881024, - 0x14e4f04fe2db9068, - 0x14e56d3f1564853a, - ])), - FQ_ZERO, + field_new!(Fq, "1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257"), + field_new!(Fq, "2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530"), ), - // Fq2(u + 1)**(((q^11) - 1) / 6) + // Fp2::NONRESIDUE^(((q^10) - 1) / 6) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x82d83cf50dbce43f, - 0xa2813e53df9d018f, - 0xc6f0caa53c65e181, - 0x7525cf528d50fe95, - 0x4a85ed50f4798a6b, - 0x171da0fd6cf8eebd, - ])), - field_new!(Fq, BigInteger384([ - 0x3726c30af242c66c, - 0x7c2ac1aad1b6fe70, - 0xa04007fbba4b14a2, - 0xef517c3266341429, - 0x95ba654ed2226b, - 0x2e370eccc86f7dd, - ])), + field_new!(Fq, "4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437"), + field_new!(Fq, "0"), + ), + // Fp2::NONRESIDUE^(((q^11) - 1) / 6) + field_new!(Fq2, + field_new!(Fq, "877076961050607968509681729531255177986764537961432449499635504522207616027455086505066378536590128544573588734230"), + field_new!(Fq, "3125332594171059424908108096204648978570118281977575435832422631601824034463382777937621250592425535493320683825557"), ), ]; } diff --git a/bls12_381/src/fields/fq2.rs b/bls12_381/src/fields/fq2.rs index 736dd25..917c136 100644 --- a/bls12_381/src/fields/fq2.rs +++ b/bls12_381/src/fields/fq2.rs @@ -1,5 +1,5 @@ use crate::*; -use ark_ff::{biginteger::BigInteger384 as BigInteger, field_new, fields::*}; +use ark_ff::{field_new, fields::*}; pub type Fq2 = Fp2; @@ -10,57 +10,19 @@ impl Fp2Parameters for Fq2Parameters { /// NONRESIDUE = -1 #[rustfmt::skip] - const NONRESIDUE: Fq = field_new!(Fq, BigInteger([ - 0x43f5fffffffcaaae, - 0x32b7fff2ed47fffd, - 0x7e83a49a2e99d69, - 0xeca8f3318332bb7a, - 0xef148d1ea0f4c069, - 0x40ab3263eff0206, - ])); + const NONRESIDUE: Fq = field_new!(Fq, "-1"); /// QUADRATIC_NONRESIDUE = (U + 1) #[rustfmt::skip] - const QUADRATIC_NONRESIDUE: (Fq, Fq) = ( - field_new!(Fq, BigInteger([ - 0x760900000002fffd, - 0xebf4000bc40c0002, - 0x5f48985753c758ba, - 0x77ce585370525745, - 0x5c071a97a256ec6d, - 0x15f65ec3fa80e493, - ])), - field_new!(Fq, BigInteger([ - 0x760900000002fffd, - 0xebf4000bc40c0002, - 0x5f48985753c758ba, - 0x77ce585370525745, - 0x5c071a97a256ec6d, - 0x15f65ec3fa80e493, - ])), - ); + const QUADRATIC_NONRESIDUE: (Fq, Fq) = (FQ_ONE, FQ_ONE); /// Coefficients for the Frobenius automorphism. #[rustfmt::skip] const FROBENIUS_COEFF_FP2_C1: &'static [Fq] = &[ // Fq(-1)**(((q^0) - 1) / 2) - field_new!(Fq, BigInteger([ - 0x760900000002fffd, - 0xebf4000bc40c0002, - 0x5f48985753c758ba, - 0x77ce585370525745, - 0x5c071a97a256ec6d, - 0x15f65ec3fa80e493, - ])), + field_new!(Fq, "1"), // Fq(-1)**(((q^1) - 1) / 2) - field_new!(Fq, BigInteger([ - 0x43f5fffffffcaaae, - 0x32b7fff2ed47fffd, - 0x7e83a49a2e99d69, - 0xeca8f3318332bb7a, - 0xef148d1ea0f4c069, - 0x40ab3263eff0206, - ])), + field_new!(Fq, "-1"), ]; #[inline(always)] diff --git a/bls12_381/src/fields/fq6.rs b/bls12_381/src/fields/fq6.rs index 18853ac..e99a889 100644 --- a/bls12_381/src/fields/fq6.rs +++ b/bls12_381/src/fields/fq6.rs @@ -1,5 +1,5 @@ use crate::*; -use ark_ff::{biginteger::BigInteger384, field_new, fields::*}; +use ark_ff::{field_new, fields::*}; pub type Fq6 = Fp6; @@ -12,173 +12,75 @@ impl Fp6Parameters for Fq6Parameters { /// NONRESIDUE = (U + 1) #[rustfmt::skip] const NONRESIDUE: Fq2 = field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x760900000002fffd, - 0xebf4000bc40c0002, - 0x5f48985753c758ba, - 0x77ce585370525745, - 0x5c071a97a256ec6d, - 0x15f65ec3fa80e493, - ])), - field_new!(Fq, BigInteger384([ - 0x760900000002fffd, - 0xebf4000bc40c0002, - 0x5f48985753c758ba, - 0x77ce585370525745, - 0x5c071a97a256ec6d, - 0x15f65ec3fa80e493, - ])), + field_new!(Fq, "1"), + field_new!(Fq, "1"), ); #[rustfmt::skip] const FROBENIUS_COEFF_FP6_C1: &'static [Fq2] = &[ - // Fq2(u + 1)**(((q^0) - 1) / 3) - field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x760900000002fffd, - 0xebf4000bc40c0002, - 0x5f48985753c758ba, - 0x77ce585370525745, - 0x5c071a97a256ec6d, - 0x15f65ec3fa80e493, - ])), - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), + // Fp2::NONRESIDUE^(((q^0) - 1) / 3) + field_new!(Fq2, + field_new!(Fq, "1"), + field_new!(Fq, "0"), ), - // Fq2(u + 1)**(((q^1) - 1) / 3) - field_new!(Fq2, - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), - field_new!(Fq, BigInteger384([ - 0xcd03c9e48671f071, - 0x5dab22461fcda5d2, - 0x587042afd3851b95, - 0x8eb60ebe01bacb9e, - 0x3f97d6e83d050d2, - 0x18f0206554638741, - ])), + // Fp2::NONRESIDUE^(((q^1) - 1) / 3) + field_new!(Fq2, + field_new!(Fq, "0"), + field_new!(Fq, "4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436"), ), - // Fq2(u + 1)**(((q^2) - 1) / 3) - field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x30f1361b798a64e8, - 0xf3b8ddab7ece5a2a, - 0x16a8ca3ac61577f7, - 0xc26a2ff874fd029b, - 0x3636b76660701c6e, - 0x51ba4ab241b6160, - ])), - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), + // Fp2::NONRESIDUE^(((q^2) - 1) / 3) + field_new!(Fq2, + field_new!(Fq, "793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350"), + field_new!(Fq, "0"), ), - // Fq2(u + 1)**(((q^3) - 1) / 3) - field_new!(Fq2, - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), - field_new!(Fq, BigInteger384([ - 0x760900000002fffd, - 0xebf4000bc40c0002, - 0x5f48985753c758ba, - 0x77ce585370525745, - 0x5c071a97a256ec6d, - 0x15f65ec3fa80e493, - ])), + // Fp2::NONRESIDUE^(((q^3) - 1) / 3) + field_new!(Fq2, + field_new!(Fq, "0"), + field_new!(Fq, "1"), ), - // Fq2(u + 1)**(((q^4) - 1) / 3) - field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0xcd03c9e48671f071, - 0x5dab22461fcda5d2, - 0x587042afd3851b95, - 0x8eb60ebe01bacb9e, - 0x3f97d6e83d050d2, - 0x18f0206554638741, - ])), - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), + // Fp2::NONRESIDUE^(((q^4) - 1) / 3) + field_new!(Fq2, + field_new!(Fq, "4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436"), + field_new!(Fq, "0"), ), - // Fq2(u + 1)**(((q^5) - 1) / 3) - field_new!(Fq2, - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), - field_new!(Fq, BigInteger384([ - 0x30f1361b798a64e8, - 0xf3b8ddab7ece5a2a, - 0x16a8ca3ac61577f7, - 0xc26a2ff874fd029b, - 0x3636b76660701c6e, - 0x51ba4ab241b6160, - ])), + // Fp2::NONRESIDUE^(((q^5) - 1) / 3) + field_new!(Fq2, + field_new!(Fq, "0"), + field_new!(Fq, "793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350"), ), - ]; +]; #[rustfmt::skip] const FROBENIUS_COEFF_FP6_C2: &'static [Fq2] = &[ // Fq2(u + 1)**(((2q^0) - 2) / 3) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x760900000002fffd, - 0xebf4000bc40c0002, - 0x5f48985753c758ba, - 0x77ce585370525745, - 0x5c071a97a256ec6d, - 0x15f65ec3fa80e493, - ])), - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), + field_new!(Fq, "1"), + field_new!(Fq, "0"), ), // Fq2(u + 1)**(((2q^1) - 2) / 3) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x890dc9e4867545c3, - 0x2af322533285a5d5, - 0x50880866309b7e2c, - 0xa20d1b8c7e881024, - 0x14e4f04fe2db9068, - 0x14e56d3f1564853a, - ])), - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), + field_new!(Fq, "4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437"), + field_new!(Fq, "0"), ), // Fq2(u + 1)**(((2q^2) - 2) / 3) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0xcd03c9e48671f071, - 0x5dab22461fcda5d2, - 0x587042afd3851b95, - 0x8eb60ebe01bacb9e, - 0x3f97d6e83d050d2, - 0x18f0206554638741, - ])), - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), + field_new!(Fq, "4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436"), + field_new!(Fq, "0"), ), // Fq2(u + 1)**(((2q^3) - 2) / 3) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x43f5fffffffcaaae, - 0x32b7fff2ed47fffd, - 0x7e83a49a2e99d69, - 0xeca8f3318332bb7a, - 0xef148d1ea0f4c069, - 0x40ab3263eff0206, - ])), - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), + field_new!(Fq, "-1"), + field_new!(Fq, "0"), ), // Fq2(u + 1)**(((2q^4) - 2) / 3) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0x30f1361b798a64e8, - 0xf3b8ddab7ece5a2a, - 0x16a8ca3ac61577f7, - 0xc26a2ff874fd029b, - 0x3636b76660701c6e, - 0x51ba4ab241b6160, - ])), - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), + field_new!(Fq, "793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350"), + field_new!(Fq, "0"), ), // Fq2(u + 1)**(((2q^5) - 2) / 3) field_new!(Fq2, - field_new!(Fq, BigInteger384([ - 0xecfb361b798dba3a, - 0xc100ddb891865a2c, - 0xec08ff1232bda8e, - 0xd5c13cc6f1ca4721, - 0x47222a47bf7b5c04, - 0x110f184e51c5f59, - ])), - field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])), + field_new!(Fq, "793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620351"), + field_new!(Fq, "0"), ), ];