Struct Fq
pub struct Fq(pub(crate) [u64; 4]);Expand description
This represents an element of $\mathbb{F}_q$ where
p = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47
is the base field of the BN254 curve.
Tuple Fields§
§0: [u64; 4]Implementations§
§impl Fq
impl Fq
pub fn invert(&self) -> CtOption<Fq>
pub fn invert(&self) -> CtOption<Fq>
Returns the multiplicative inverse of the element. If it is zero, the method fails.
pub fn jacobi(&self) -> i64
pub const fn from_raw(val: [u64; 4]) -> Fq
pub const fn from_raw(val: [u64; 4]) -> Fq
Converts from an integer represented in little endian
into its (congruent) $field representation.
pub fn from_bytes(bytes: &[u8; 32]) -> CtOption<Fq>
pub fn from_bytes(bytes: &[u8; 32]) -> CtOption<Fq>
Attempts to convert a little-endian byte representation of
a scalar into a Fr, failing if the input is not canonical.
Trait Implementations§
§impl<'b> AddAssign<&'b Fq> for Fq
impl<'b> AddAssign<&'b Fq> for Fq
§fn add_assign(&mut self, rhs: &'b Fq)
fn add_assign(&mut self, rhs: &'b Fq)
Performs the
+= operation. Read more§impl ConditionallySelectable for Fq
impl ConditionallySelectable for Fq
Source§fn conditional_assign(&mut self, other: &Self, choice: Choice)
fn conditional_assign(&mut self, other: &Self, choice: Choice)
Source§fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
Conditionally swap
self and other if choice == 1; otherwise,
reassign both unto themselves. Read more§impl ConstantTimeEq for Fq
impl ConstantTimeEq for Fq
§impl<'de> Deserialize<'de> for Fq
impl<'de> Deserialize<'de> for Fq
§fn deserialize<D>(
deserializer: D,
) -> Result<Fq, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<Fq, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
§impl Field for Fq
impl Field for Fq
§fn invert(&self) -> CtOption<Fq>
fn invert(&self) -> CtOption<Fq>
Returns the multiplicative inverse of the element. If it is zero, the method fails.
§fn random(rng: impl RngCore) -> Fq
fn random(rng: impl RngCore) -> Fq
Returns an element chosen uniformly at random using a user-provided RNG.
§fn is_zero_vartime(&self) -> bool
fn is_zero_vartime(&self) -> bool
Returns true iff this element is zero. Read more
§fn pow_vartime<S>(&self, exp: S) -> Self
fn pow_vartime<S>(&self, exp: S) -> Self
§impl FromUniformBytes<64> for Fq
impl FromUniformBytes<64> for Fq
§fn from_uniform_bytes(bytes: &[u8; 64]) -> Fq
fn from_uniform_bytes(bytes: &[u8; 64]) -> Fq
Converts a 512-bit little endian integer into
an Fq by reducing by the modulus.
Source§impl HasByteRepresentation for Fq
impl HasByteRepresentation for Fq
Source§const REPR_NUM_BYTES: usize = 32
const REPR_NUM_BYTES: usize = 32
Number of bytes within the element’s representation.
Source§fn from_bytes_le(bytes: &[u8]) -> Self
fn from_bytes_le(bytes: &[u8]) -> Self
Constructor which creates an instance of the element from a vec of
less than or equal to length
REPR_NUM_BYTES.
If length less than REPR_NUM_BYTES, pads the most significant
bits with 0s until it is of equal length to REPR_NUM_BYTES.Source§fn to_bytes_le(&self) -> Vec<u8> ⓘ
fn to_bytes_le(&self) -> Vec<u8> ⓘ
Function which creates an equivalent representation of the element
in a byte array of length
REPR_NUM_BYTES.Source§fn to_u64s_le(&self) -> Vec<u64>
fn to_u64s_le(&self) -> Vec<u64>
Similar to
to_bytes_le but returns chunks of u64s.§impl Legendre for Fq
impl Legendre for Fq
fn legendre(&self) -> i64
fn ct_quadratic_non_residue(&self) -> Choice
fn ct_quadratic_residue(&self) -> Choice
§impl<'b> MulAssign<&'b Fq> for Fq
impl<'b> MulAssign<&'b Fq> for Fq
§fn mul_assign(&mut self, rhs: &'b Fq)
fn mul_assign(&mut self, rhs: &'b Fq)
Performs the
*= operation. Read more§impl Ord for Fq
impl Ord for Fq
§impl PartialOrd for Fq
impl PartialOrd for Fq
§impl PrimeField for Fq
impl PrimeField for Fq
§const CAPACITY: u32 = 253
const CAPACITY: u32 = 253
How many bits of information can be reliably stored in the field element. Read more
§const MODULUS: &'static str = MODULUS_STR
const MODULUS: &'static str = MODULUS_STR
Modulus of the field written as a string for debugging purposes. Read more
§const MULTIPLICATIVE_GENERATOR: Fq = MULTIPLICATIVE_GENERATOR
const MULTIPLICATIVE_GENERATOR: Fq = MULTIPLICATIVE_GENERATOR
A fixed multiplicative generator of
modulus - 1 order. This element must also be
a quadratic nonresidue. Read more§const ROOT_OF_UNITY: Fq = ROOT_OF_UNITY
const ROOT_OF_UNITY: Fq = ROOT_OF_UNITY
The
2^s root of unity. Read more§const ROOT_OF_UNITY_INV: Fq = ROOT_OF_UNITY_INV
const ROOT_OF_UNITY_INV: Fq = ROOT_OF_UNITY_INV
Inverse of [
Self::ROOT_OF_UNITY].§type Repr = [u8; 32]
type Repr = [u8; 32]
The prime field can be converted back and forth into this binary
representation.
§fn from_repr(repr: <Fq as PrimeField>::Repr) -> CtOption<Fq>
fn from_repr(repr: <Fq as PrimeField>::Repr) -> CtOption<Fq>
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). Read more
§fn to_repr(&self) -> <Fq as PrimeField>::Repr
fn to_repr(&self) -> <Fq as PrimeField>::Repr
Converts an element of the prime field into the standard byte representation for
this field. Read more
§fn from_str_vartime(s: &str) -> Option<Self>
fn from_str_vartime(s: &str) -> Option<Self>
Interpret a string of numbers as a (congruent) prime field element.
Does not accept unnecessary leading zeroes or a blank string. Read more
§fn from_repr_vartime(repr: Self::Repr) -> Option<Self>
fn from_repr_vartime(repr: Self::Repr) -> Option<Self>
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). Read more
§impl PrimeFieldBits for Fq
Available on crate feature bits only.
impl PrimeFieldBits for Fq
Available on crate feature
bits only.§fn to_le_bits(&self) -> BitArray<<Fq as PrimeFieldBits>::ReprBits>
fn to_le_bits(&self) -> BitArray<<Fq as PrimeFieldBits>::ReprBits>
Converts an element of the prime field into a little-endian sequence of bits.
§fn char_le_bits() -> BitArray<<Fq as PrimeFieldBits>::ReprBits>
fn char_le_bits() -> BitArray<<Fq as PrimeFieldBits>::ReprBits>
Returns the bits of the field characteristic (the modulus) in little-endian order.
§impl SerdeObject for Fq
impl SerdeObject for Fq
§fn from_raw_bytes_unchecked(bytes: &[u8]) -> Fq
fn from_raw_bytes_unchecked(bytes: &[u8]) -> Fq
The purpose of unchecked functions is to read the internal memory representation
of a type from bytes as quickly as possible. No sanitization checks are performed
to ensure the bytes represent a valid object. As such this function should only be
used internally as an extension of machine memory. It should not be used to deserialize
externally provided data.
fn from_raw_bytes(bytes: &[u8]) -> Option<Fq>
fn to_raw_bytes(&self) -> Vec<u8> ⓘ
§fn read_raw_unchecked<R>(reader: &mut R) -> Fqwhere
R: Read,
fn read_raw_unchecked<R>(reader: &mut R) -> Fqwhere
R: Read,
The purpose of unchecked functions is to read the internal memory representation
of a type from disk as quickly as possible. No sanitization checks are performed
to ensure the bytes represent a valid object. This function should only be used
internally when some machine state cannot be kept in memory (e.g., between runs)
and needs to be reloaded as quickly as possible.
fn read_raw<R>(reader: &mut R) -> Result<Fq, Error>where
R: Read,
fn write_raw<W>(&self, writer: &mut W) -> Result<(), Error>where
W: Write,
§impl Serialize for Fq
impl Serialize for Fq
§fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
Serialize this value into the given Serde serializer. Read more
§impl<'b> SubAssign<&'b Fq> for Fq
impl<'b> SubAssign<&'b Fq> for Fq
§fn sub_assign(&mut self, rhs: &'b Fq)
fn sub_assign(&mut self, rhs: &'b Fq)
Performs the
-= operation. Read moreimpl Copy for Fq
impl Eq for Fq
impl StructuralPartialEq for Fq
Auto Trait Implementations§
impl Freeze for Fq
impl RefUnwindSafe for Fq
impl Send for Fq
impl Sync for Fq
impl Unpin for Fq
impl UnwindSafe for Fq
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ConditionallyNegatable for T
impl<T> ConditionallyNegatable for T
Source§fn conditional_negate(&mut self, choice: Choice)
fn conditional_negate(&mut self, choice: Choice)
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.