Trait snarkvm_console_program::_
pub trait _: 'static + ToBits + ToBytes + FromBytes + Copy + Clone + Debug + Display + Default + Send + Sync + Eq + for<'a> One<Output = Self, Output = Self> + Ord + Neg<Output = Self> + Uniform + Zero + Sized + Hash + From<u128> + From<u64> + From<u32> + From<u16> + From<u8> + for<'a> Add<Self, Output = Self, Output = Self> + for<'a> Sub<Self, Output = Self, Output = Self> + Mul<Self> + for<'a> Div<Self, Output = Self, Output = Self> + AddAssign<Self> + SubAssign<Self> + MulAssign<Self> + DivAssign<Self> + for<'a> Add<&'a Self> + for<'a> Sub<&'a Self> + for<'a> Mul<&'a Self> + for<'a> Div<&'a Self> + for<'a> AddAssign<&'a Self> + for<'a> SubAssign<&'a Self> + for<'a> MulAssign<&'a Self> + for<'a> DivAssign<&'a Self> + Sum<Self> + for<'a> Sum<&'a Self> + Product<Self> + for<'a> Product<&'a Self> + CanonicalSerialize + CanonicalSerializeWithFlags + CanonicalDeserialize + CanonicalDeserializeWithFlags + Serialize + for<'a> Deserialize<'a> {
type BasePrimeField: PrimeField;
Show 14 methods
// Required methods
fn from_base_prime_field(other: Self::BasePrimeField) -> Self;
fn characteristic<'a>() -> &'a [u64];
fn double(&self) -> Self;
fn double_in_place(&mut self);
fn square(&self) -> Self;
fn square_in_place(&mut self) -> &mut Self;
fn inverse(&self) -> Option<Self>;
fn inverse_in_place(&mut self) -> Option<&mut Self>;
fn frobenius_map(&mut self, power: usize);
fn from_random_bytes_with_flags<F>(bytes: &[u8]) -> Option<(Self, F)>
where F: Flags;
// Provided methods
fn half() -> Self { ... }
fn sum_of_products<'a>(
a: impl Iterator<Item = &'a Self> + Clone,
b: impl Iterator<Item = &'a Self> + Clone
) -> Self { ... }
fn pow<S>(&self, exp: S) -> Self
where S: AsRef<[u64]> { ... }
fn from_random_bytes(bytes: &[u8]) -> Option<Self> { ... }
}
Expand description
The interface for a generic field.
Required Associated Types§
type BasePrimeField: PrimeField
Required Methods§
fn from_base_prime_field(other: Self::BasePrimeField) -> Self
fn from_base_prime_field(other: Self::BasePrimeField) -> Self
Constructs an element of Self
from an element of the base
prime field.
fn characteristic<'a>() -> &'a [u64]
fn characteristic<'a>() -> &'a [u64]
Returns the characteristic of the field.
fn double(&self) -> Self
fn double(&self) -> Self
Returns self + self
.
fn double_in_place(&mut self)
fn double_in_place(&mut self)
Doubles self
in place.
fn square(&self) -> Self
fn square(&self) -> Self
Returns self * self
.
fn square_in_place(&mut self) -> &mut Self
fn square_in_place(&mut self) -> &mut Self
Squares self
in place.
fn inverse_in_place(&mut self) -> Option<&mut Self>
fn inverse_in_place(&mut self) -> Option<&mut Self>
Sets self
to self
’s inverse if it exists. Otherwise it is a no-op.
fn frobenius_map(&mut self, power: usize)
fn frobenius_map(&mut self, power: usize)
Exponentiates this element by a power of the base prime modulus via the Frobenius automorphism.
fn from_random_bytes_with_flags<F>(bytes: &[u8]) -> Option<(Self, F)>where
F: Flags,
fn from_random_bytes_with_flags<F>(bytes: &[u8]) -> Option<(Self, F)>where F: Flags,
Returns a field element with an extra sign bit used for group parsing if the set of bytes forms a valid field element, otherwise returns None. This function is primarily intended for sampling random field elements from a hash-function or RNG output.
Provided Methods§
fn half() -> Self
fn half() -> Self
Returns the constant 2^{-1}.
fn sum_of_products<'a>( a: impl Iterator<Item = &'a Self> + Clone, b: impl Iterator<Item = &'a Self> + Clone ) -> Self
fn pow<S>(&self, exp: S) -> Selfwhere
S: AsRef<[u64]>,
fn pow<S>(&self, exp: S) -> Selfwhere S: AsRef<[u64]>,
Exponentiates this element by a number represented with u64
limbs,
least significant limb first.
fn from_random_bytes(bytes: &[u8]) -> Option<Self>
fn from_random_bytes(bytes: &[u8]) -> Option<Self>
Returns a field element if the set of bytes forms a valid field element, otherwise returns None. This function is primarily intended for sampling random field elements from a hash-function or RNG output.