Trait ff::PrimeField
source ·
[−]pub trait PrimeField: Field + From<u64> {
type Repr: Default + AsRef<[u8]> + AsMut<[u8]> + From<Self> + for<'r> From<&'r Self>;
type ReprBits: BitView + Send + Sync;
const NUM_BITS: u32;
const CAPACITY: u32;
const S: u32;
fn from_repr(_: Self::Repr) -> Option<Self>;
fn to_repr(&self) -> Self::Repr;
fn to_le_bits(&self) -> BitArray<Lsb0, Self::ReprBits>;
fn is_odd(&self) -> bool;
fn char_le_bits() -> BitArray<Lsb0, Self::ReprBits>;
fn multiplicative_generator() -> Self;
fn root_of_unity() -> Self;
fn from_str(s: &str) -> Option<Self> { ... }
fn is_even(&self) -> bool { ... }
}
Expand description
This represents an element of a prime field.
Associated Types
The prime field can be converted back and forth into this binary representation.
Associated Constants
How many bits of information can be reliably stored in the field element.
This is usually Self::NUM_BITS - 1
.
Required methods
Attempts to convert a byte representation of a field element into an element of this prime field, failing if the input is not canonical (is not smaller than the field’s modulus).
The byte representation is interpreted with the same endianness as elements
returned by PrimeField::to_repr
.
Converts an element of the prime field into the standard byte representation for this field.
The endianness of the byte representation is implementation-specific. Generic encodings of field elements should be treated as opaque.
fn to_le_bits(&self) -> BitArray<Lsb0, Self::ReprBits>
fn to_le_bits(&self) -> BitArray<Lsb0, Self::ReprBits>
Converts an element of the prime field into a little-endian sequence of bits.
fn char_le_bits() -> BitArray<Lsb0, Self::ReprBits>
fn char_le_bits() -> BitArray<Lsb0, Self::ReprBits>
Returns the bits of the field characteristic (the modulus) in little-endian order.
fn multiplicative_generator() -> Self
fn multiplicative_generator() -> Self
Returns a fixed multiplicative generator of modulus - 1
order. This element must
also be a quadratic nonresidue.
It can be calculated using SageMath as GF(modulus).primitive_element()
.
Implementations of this method MUST ensure that this is the generator used to
derive Self::root_of_unity
.
fn root_of_unity() -> Self
fn root_of_unity() -> Self
Returns the 2^s
root of unity.
It can be calculated by exponentiating Self::multiplicative_generator
by t
,
where t = (modulus - 1) >> Self::S
.
Provided methods
Interpret a string of numbers as a (congruent) prime field element. Does not accept unnecessary leading zeroes or a blank string.