Catch up with algebra (#106)

Co-authored-by: Pratyush Mishra <pratyushmishra@berkeley.edu>
This commit is contained in:
Marcin
2022-07-29 21:16:16 +02:00
committed by GitHub
parent 76579d0fbb
commit 93e64df895
120 changed files with 934 additions and 1653 deletions

View File

@@ -1,9 +1,9 @@
use ark_ff::{
fields::fp2::{Fp2, Fp2Config},
MontFp,
Field, MontFp,
};
use crate::{Fq, FQ_ONE};
use crate::Fq;
pub type Fq2 = Fp2<Fq2Config>;
@@ -13,13 +13,13 @@ impl Fp2Config for Fq2Config {
type Fp = Fq;
// non_residue = 13
const NONRESIDUE: Fq = MontFp!(Fq, "13");
const NONRESIDUE: Fq = MontFp!("13");
// Coefficients:
// [1, 41898490967918953402344214791240637128170709919953949071783502921025352812571106773058893763790338921418070971888253786114353726529584385201591605722013126468931404347949840543007986327743462853720628051692141265303114721689600]
// see https://github.com/o1-labs/snarky/blob/2cf5ef3a14989e57c17518832b3c52590068fc48/src/camlsnark_c/libsnark-caml/depends/libff/libff/algebra/curves/mnt753/mnt4753/mnt4753_init.cpp
const FROBENIUS_COEFF_FP2_C1: &'static [Self::Fp] = &[
FQ_ONE,
MontFp!(Fq, "41898490967918953402344214791240637128170709919953949071783502921025352812571106773058893763790338921418070971888253786114353726529584385201591605722013126468931404347949840543007986327743462853720628051692141265303114721689600"),
Fq::ONE,
MontFp!("41898490967918953402344214791240637128170709919953949071783502921025352812571106773058893763790338921418070971888253786114353726529584385201591605722013126468931404347949840543007986327743462853720628051692141265303114721689600"),
];
}

View File

@@ -1,9 +1,9 @@
use ark_ff::{
fields::fp4::{Fp4, Fp4Config},
MontFp, QuadExt,
Field, MontFp,
};
use crate::{Fq, Fq2, Fq2Config, FQ_ONE, FQ_ZERO};
use crate::{Fq, Fq2, Fq2Config};
pub type Fq4 = Fp4<Fq4Config>;
@@ -12,7 +12,7 @@ pub struct Fq4Config;
impl Fp4Config for Fq4Config {
type Fp2Config = Fq2Config;
const NONRESIDUE: Fq2 = QuadExt!(FQ_ZERO, FQ_ONE);
const NONRESIDUE: Fq2 = Fq2::new(Fq::ZERO, Fq::ONE);
// Coefficients for the Frobenius automorphism.
// c1[0] = 1,
@@ -23,9 +23,9 @@ impl Fp4Config for Fq4Config {
// These are calculated as `FROBENIUS_COEFF_FP4_C1[i] =
// Fp2Config::NONRESIDUE^((q^i - 1) / 4)`.
const FROBENIUS_COEFF_FP4_C1: &'static [Fq] = &[
FQ_ONE,
MontFp!(Fq, "18691656569803771296244054523431852464958959799019013859007259692542121208304602539555350517075508287829753932558576476751900235650227380562700444433662761577027341858128610410779088384480737679672900770810745291515010467307990"),
MontFp!(Fq, "41898490967918953402344214791240637128170709919953949071783502921025352812571106773058893763790338921418070971888253786114353726529584385201591605722013126468931404347949840543007986327743462853720628051692141265303114721689600"),
MontFp!(Fq, "23206834398115182106100160267808784663211750120934935212776243228483231604266504233503543246714830633588317039329677309362453490879357004638891161288350364891904062489821230132228897943262725174047727280881395973788104254381611"),
Fq::ONE,
MontFp!("18691656569803771296244054523431852464958959799019013859007259692542121208304602539555350517075508287829753932558576476751900235650227380562700444433662761577027341858128610410779088384480737679672900770810745291515010467307990"),
MontFp!("41898490967918953402344214791240637128170709919953949071783502921025352812571106773058893763790338921418070971888253786114353726529584385201591605722013126468931404347949840543007986327743462853720628051692141265303114721689600"),
MontFp!("23206834398115182106100160267808784663211750120934935212776243228483231604266504233503543246714830633588317039329677309362453490879357004638891161288350364891904062489821230132228897943262725174047727280881395973788104254381611"),
];
}

View File

@@ -1,7 +1,7 @@
use ark_algebra_test_templates::{
fields::*, generate_field_serialization_test, generate_field_test,
};
use ark_ff::{Field, One, PrimeField, SquareRootField, UniformRand, Zero};
use ark_ff::{Field, One, PrimeField, UniformRand, Zero};
use ark_serialize::{buffer_bit_byte_size, CanonicalSerialize};
use ark_std::{rand::Rng, test_rng};
use core::ops::{AddAssign, MulAssign, SubAssign};