pub trait PrimeField: FftField<FftParameters = Self::Parameters> + PoseidonDefaultField + FromStr<Err = FieldError> {
    type Parameters: FieldParameters<BigInteger = Self::BigInteger>;
    type BigInteger: BigInteger;

    const SIZE_IN_BITS: usize = <Self::Parameters>::MODULUS_BITS as usize;
    const SIZE_IN_DATA_BITS: usize = <Self::Parameters>::CAPACITY as usize;

    // Required methods
    fn from_bigint(repr: Self::BigInteger) -> Option<Self>;
    fn to_bigint(&self) -> Self::BigInteger;
    fn decompose(
        &self,
        q1: &[u64; 4],
        q2: &[u64; 4],
        b1: Self,
        b2: Self,
        r128: Self,
        half_r: &[u64; 8]
    ) -> (Self, Self, bool, bool);

    // Provided methods
    fn size_in_bits() -> usize { ... }
    fn size_in_data_bits() -> usize { ... }
    fn modulus() -> Self::BigInteger { ... }
    fn modulus_minus_one_div_two() -> Self::BigInteger { ... }
    fn trace() -> Self::BigInteger { ... }
    fn trace_minus_one_div_two() -> Self::BigInteger { ... }
    fn from_bytes_be_mod_order(bytes: &[u8]) -> Self { ... }
    fn from_bytes_le_mod_order(bytes: &[u8]) -> Self { ... }
}
Expand description

The interface for a prime field.

Required Associated Types§

type Parameters: FieldParameters<BigInteger = Self::BigInteger>

type BigInteger: BigInteger

Provided Associated Constants§

const SIZE_IN_BITS: usize = <Self::Parameters>::MODULUS_BITS as usize

Returns the field size in bits.

const SIZE_IN_DATA_BITS: usize = <Self::Parameters>::CAPACITY as usize

Returns the field capacity for data bits.

Required Methods§

fn from_bigint(repr: Self::BigInteger) -> Option<Self>

Constructs a PrimeField element given a human-readable Self::BigInteger.

fn to_bigint(&self) -> Self::BigInteger

Returns a human-readable Self::BigInteger in the range 0..(Self::MODULUS - 1).

fn decompose( &self, q1: &[u64; 4], q2: &[u64; 4], b1: Self, b2: Self, r128: Self, half_r: &[u64; 8] ) -> (Self, Self, bool, bool)

Returns the decomposition of the scalar.

Provided Methods§

fn size_in_bits() -> usize

Returns the field size in bits.

fn size_in_data_bits() -> usize

Returns the capacity size for data bits.

fn modulus() -> Self::BigInteger

Returns the modulus.

fn modulus_minus_one_div_two() -> Self::BigInteger

Returns the modulus minus one divided by two.

fn trace() -> Self::BigInteger

Returns the trace.

fn trace_minus_one_div_two() -> Self::BigInteger

Returns the trace minus one divided by two.

fn from_bytes_be_mod_order(bytes: &[u8]) -> Self

Reads bytes in big-endian, and converts them to a field element. If the bytes are larger than the modulus, it will reduce them.

fn from_bytes_le_mod_order(bytes: &[u8]) -> Self

Reads bytes in little-endian, and converts them to a field element. If the bytes are larger than the modulus, it will reduce them.

Implementors§

§

impl<P> PrimeField for Fp256<P>where P: Fp256Parameters,

§

type BigInteger = BigInteger256

§

type Parameters = P

§

impl<P> PrimeField for Fp384<P>where P: Fp384Parameters,

§

type BigInteger = BigInteger384

§

type Parameters = P