Struct halo2curves::pasta::Fq
[−]pub struct Fq(_);
Expand description
This represents an element of $\mathbb{F}_q$ where
q = 0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000001
is the base field of the Vesta curve.
Implementations
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 moreimpl ConditionallySelectable for Fq
impl ConditionallySelectable for Fq
fn conditional_select(a: &Fq, b: &Fq, choice: Choice) -> Fq
fn conditional_select(a: &Fq, b: &Fq, choice: Choice) -> Fq
sourcefn conditional_assign(&mut self, other: &Self, choice: Choice)
fn conditional_assign(&mut self, other: &Self, choice: Choice)
impl ConstantTimeEq for Fq
impl ConstantTimeEq for Fq
impl Field for Fq
impl Field for Fq
fn invert(&self) -> CtOption<Fq>
fn invert(&self) -> CtOption<Fq>
Computes the multiplicative inverse of this element, failing if the element is zero.
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 pow_vartime<S>(&self, exp: S) -> Fqwhere
S: AsRef<[u64]>,
fn pow_vartime<S>(&self, exp: S) -> Fqwhere
S: AsRef<[u64]>,
fn is_zero_vartime(&self) -> bool
fn is_zero_vartime(&self) -> bool
Returns true iff this element is zero. Read more
fn cube(&self) -> Self
fn cube(&self) -> Self
Cubes this element.
impl FieldExt for Fq
impl FieldExt for Fq
fn from_bytes_wide(bytes: &[u8; 64]) -> Fq
fn from_bytes_wide(bytes: &[u8; 64]) -> Fq
Converts a 512-bit little endian integer into
a Fq
by reducing by the modulus.
const MODULUS: &'static str = "0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000001"
const MODULUS: &'static str = "0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000001"
Modulus of the field written as a string for display purposes
const ROOT_OF_UNITY_INV: Fq = Fq::from_raw([6336227815658842166, 5391806631710861324, 17638615478710601409,
2465124479527549238])
const ROOT_OF_UNITY_INV: Fq = Fq::from_raw([6336227815658842166, 5391806631710861324, 17638615478710601409, 2465124479527549238])
Inverse of
PrimeField::root_of_unity()
const TWO_INV: Fq = Fq::from_raw([14277384507177828353, 1234914826959606894, 0,
2305843009213693952])
const TWO_INV: Fq = Fq::from_raw([14277384507177828353, 1234914826959606894, 0, 2305843009213693952])
Inverse of $2$ in the field.
const ZETA: Fq = Fq::from_raw([3074220081524903503, 1147650983937979311, 5845026731688660826,
468825539646214798])
const ZETA: Fq = Fq::from_raw([3074220081524903503, 1147650983937979311, 5845026731688660826, 468825539646214798])
Element of multiplicative order $3$.
fn get_lower_128(&self) -> u128
fn get_lower_128(&self) -> u128
Gets the lower 128 bits of this field element when expressed
canonically. Read more
impl Group for Fq
impl Group for Fq
type Scalar = Fq
type Scalar = Fq
The group is assumed to be of prime order $p$.
Scalar
is the
associated scalar field of size $p$. Read morefn group_zero() -> Fq
fn group_zero() -> Fq
Returns the additive identity of the group.
fn group_scale(&mut self, by: &<Fq as Group>::Scalar)
fn group_scale(&mut self, by: &<Fq as Group>::Scalar)
Scales this group element by a scalar.
impl<'b> MulAssign<&'b Fq> for Ep
impl<'b> MulAssign<&'b Fq> for Ep
fn mul_assign(&mut self, rhs: &'b Fq)
fn mul_assign(&mut self, rhs: &'b Fq)
Performs the
*=
operation. Read moreimpl<'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 moreimpl Ord for Fq
impl Ord for Fq
1.21.0 · sourcefn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
1.21.0 · sourcefn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the minimum of two values. Read more
1.50.0 · sourcefn clamp(self, min: Self, max: Self) -> Selfwhere
Self: Sized + PartialOrd<Self>,
fn clamp(self, min: Self, max: Self) -> Selfwhere
Self: Sized + PartialOrd<Self>,
Restrict a value to a certain interval. Read more
impl PartialOrd<Fq> for Fq
impl PartialOrd<Fq> for Fq
impl PrimeField for Fq
impl PrimeField for Fq
type Repr = [u8; 32]
type Repr = [u8; 32]
The prime field can be converted back and forth into this binary
representation. Read more
const CAPACITY: u32 = 254u32
const CAPACITY: u32 = 254u32
How many bits of information can be reliably stored in the field element. Read more
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 multiplicative_generator() -> Fq
fn multiplicative_generator() -> Fq
Returns a fixed multiplicative generator of
modulus - 1
order. This element must
also be a quadratic nonresidue. Read morefn root_of_unity() -> Fq
fn root_of_unity() -> Fq
Returns the
2^s
root of unity. Read morefn 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
impl PrimeFieldBits for Fq
fn to_le_bits(&self) -> BitArray<<Fq as PrimeFieldBits>::ReprBits, Lsb0>
fn to_le_bits(&self) -> BitArray<<Fq as PrimeFieldBits>::ReprBits, Lsb0>
Converts an element of the prime field into a little-endian sequence of bits.
fn char_le_bits() -> BitArray<<Fq as PrimeFieldBits>::ReprBits, Lsb0>
fn char_le_bits() -> BitArray<<Fq as PrimeFieldBits>::ReprBits, Lsb0>
Returns the bits of the field characteristic (the modulus) in little-endian order.
impl SqrtRatio for Fq
impl SqrtRatio for Fq
const T_MINUS1_OVER2: [u64; 4] = T_MINUS1_OVER2
const T_MINUS1_OVER2: [u64; 4] = T_MINUS1_OVER2
The value $(T-1)/2$ such that $2^S \cdot T = p - 1$ with $T$ odd.
fn pow_by_t_minus1_over2(&self) -> Fq
fn pow_by_t_minus1_over2(&self) -> Fq
Raise this field element to the power [
Self::T_MINUS1_OVER2
]. Read morefn get_lower_32(&self) -> u32
fn get_lower_32(&self) -> u32
Gets the lower 32 bits of this field element when expressed
canonically. 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 StructuralEq for Fq
Auto Trait Implementations
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ConditionallyNegatable for Twhere
T: ConditionallySelectable,
&'a T: for<'a> Neg<Output = T>,
impl<T> ConditionallyNegatable for Twhere
T: ConditionallySelectable,
&'a T: for<'a> Neg<Output = T>,
sourcefn conditional_negate(&mut self, choice: Choice)
fn conditional_negate(&mut self, choice: Choice)
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,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
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,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
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> 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 morefn 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 morefn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
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) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere
Self: Deref<Target = T>,
T: 'a + ?Sized,
R: 'a,
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere
Self: Deref<Target = T>,
T: 'a + ?Sized,
R: 'a,
Borrows
self
, then passes self.deref()
into the pipe function.impl<T> Tap for T
impl<T> Tap for T
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
Immutable access to the
Borrow<B>
of a value. Read morefn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
Mutable access to the
BorrowMut<B>
of a value. Read morefn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
Immutable access to the
AsRef<R>
view of a value. Read morefn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
Mutable access to the
AsMut<R>
view of a value. Read morefn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
Immutable access to the
Deref::Target
of a value. Read morefn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
Mutable access to the
Deref::Target
of a value. Read morefn 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. Read morefn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds. Read morefn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds. Read morefn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
Calls
.tap_ref()
only in debug builds, and is erased in release
builds. Read morefn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds. Read more