Struct triton_vm::prelude::XFieldElement
source · pub struct XFieldElement {
pub coefficients: [BFieldElement; 3],
}Fields§
§coefficients: [BFieldElement; 3]Implementations§
source§impl XFieldElement
impl XFieldElement
sourcepub fn shah_polynomial() -> Polynomial<BFieldElement>
pub fn shah_polynomial() -> Polynomial<BFieldElement>
The quotient defining the field extension over the base field, namely x³ - x + 1.
pub const fn new(coefficients: [BFieldElement; 3]) -> XFieldElement
pub const fn new_const(element: BFieldElement) -> XFieldElement
pub fn unlift(&self) -> Option<BFieldElement>
pub fn increment(&mut self, index: usize)
pub fn decrement(&mut self, index: usize)
Trait Implementations§
source§impl Add<BFieldElement> for XFieldElement
impl Add<BFieldElement> for XFieldElement
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
+ operator.source§fn add(self, other: BFieldElement) -> XFieldElement
fn add(self, other: BFieldElement) -> XFieldElement
Performs the
+ operation. Read moresource§impl Add<XFieldElement> for BFieldElement
impl Add<XFieldElement> for BFieldElement
The bfe + xfe -> xfe instance belongs to BFieldElement.
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
+ operator.source§fn add(self, other: XFieldElement) -> XFieldElement
fn add(self, other: XFieldElement) -> XFieldElement
Performs the
+ operation. Read moresource§impl Add for XFieldElement
impl Add for XFieldElement
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
+ operator.source§fn add(self, other: XFieldElement) -> XFieldElement
fn add(self, other: XFieldElement) -> XFieldElement
Performs the
+ operation. Read moresource§impl AddAssign<BFieldElement> for XFieldElement
impl AddAssign<BFieldElement> for XFieldElement
source§fn add_assign(&mut self, rhs: BFieldElement)
fn add_assign(&mut self, rhs: BFieldElement)
Performs the
+= operation. Read moresource§impl AddAssign for XFieldElement
impl AddAssign for XFieldElement
source§fn add_assign(&mut self, rhs: XFieldElement)
fn add_assign(&mut self, rhs: XFieldElement)
Performs the
+= operation. Read moresource§impl<'arbitrary> Arbitrary<'arbitrary> for XFieldElement
impl<'arbitrary> Arbitrary<'arbitrary> for XFieldElement
source§fn arbitrary(u: &mut Unstructured<'arbitrary>) -> Result<XFieldElement, Error>
fn arbitrary(u: &mut Unstructured<'arbitrary>) -> Result<XFieldElement, Error>
Generate an arbitrary value of
Self from the given unstructured data. Read moresource§fn arbitrary_take_rest(
u: Unstructured<'arbitrary>
) -> Result<XFieldElement, Error>
fn arbitrary_take_rest( u: Unstructured<'arbitrary> ) -> Result<XFieldElement, Error>
Generate an arbitrary value of
Self from the entirety of the given
unstructured data. Read moresource§impl BFieldCodec for XFieldElement
impl BFieldCodec for XFieldElement
type Error = XFieldElementBFieldDecodingError
fn decode( sequence: &[BFieldElement] ) -> Result<Box<XFieldElement>, <XFieldElement as BFieldCodec>::Error>
fn encode(&self) -> Vec<BFieldElement>
source§fn static_length() -> Option<usize>
fn static_length() -> Option<usize>
Returns the length in number of BFieldElements if it is known at compile-time.
Otherwise, None.
source§impl Clone for XFieldElement
impl Clone for XFieldElement
source§fn clone(&self) -> XFieldElement
fn clone(&self) -> XFieldElement
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moresource§impl CyclicGroupGenerator for XFieldElement
impl CyclicGroupGenerator for XFieldElement
fn get_cyclic_group_elements(&self, max: Option<usize>) -> Vec<XFieldElement>
source§impl Debug for XFieldElement
impl Debug for XFieldElement
source§impl<'de> Deserialize<'de> for XFieldElement
impl<'de> Deserialize<'de> for XFieldElement
source§fn deserialize<__D>(
__deserializer: __D
) -> Result<XFieldElement, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<XFieldElement, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl Display for XFieldElement
impl Display for XFieldElement
source§impl Div for XFieldElement
impl Div for XFieldElement
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
/ operator.source§fn div(self, other: XFieldElement) -> XFieldElement
fn div(self, other: XFieldElement) -> XFieldElement
Performs the
/ operation. Read moresource§impl Evaluable<XFieldElement> for MasterExtTable
impl Evaluable<XFieldElement> for MasterExtTable
source§fn evaluate_initial_constraints(
base_row: ArrayView1<'_, XFieldElement>,
ext_row: ArrayView1<'_, XFieldElement>,
challenges: &Challenges
) -> Vec<XFieldElement>
fn evaluate_initial_constraints( base_row: ArrayView1<'_, XFieldElement>, ext_row: ArrayView1<'_, XFieldElement>, challenges: &Challenges ) -> Vec<XFieldElement>
The code for this method must be generated by running
cargo run --bin constraint-evaluation-generatorsource§fn evaluate_consistency_constraints(
base_row: ArrayView1<'_, XFieldElement>,
ext_row: ArrayView1<'_, XFieldElement>,
challenges: &Challenges
) -> Vec<XFieldElement>
fn evaluate_consistency_constraints( base_row: ArrayView1<'_, XFieldElement>, ext_row: ArrayView1<'_, XFieldElement>, challenges: &Challenges ) -> Vec<XFieldElement>
The code for this method must be generated by running
cargo run --bin constraint-evaluation-generatorsource§fn evaluate_transition_constraints(
current_base_row: ArrayView1<'_, XFieldElement>,
current_ext_row: ArrayView1<'_, XFieldElement>,
next_base_row: ArrayView1<'_, XFieldElement>,
next_ext_row: ArrayView1<'_, XFieldElement>,
challenges: &Challenges
) -> Vec<XFieldElement>
fn evaluate_transition_constraints( current_base_row: ArrayView1<'_, XFieldElement>, current_ext_row: ArrayView1<'_, XFieldElement>, next_base_row: ArrayView1<'_, XFieldElement>, next_ext_row: ArrayView1<'_, XFieldElement>, challenges: &Challenges ) -> Vec<XFieldElement>
The code for this method must be generated by running
cargo run --bin constraint-evaluation-generatorsource§fn evaluate_terminal_constraints(
base_row: ArrayView1<'_, XFieldElement>,
ext_row: ArrayView1<'_, XFieldElement>,
challenges: &Challenges
) -> Vec<XFieldElement>
fn evaluate_terminal_constraints( base_row: ArrayView1<'_, XFieldElement>, ext_row: ArrayView1<'_, XFieldElement>, challenges: &Challenges ) -> Vec<XFieldElement>
The code for this method must be generated by running
cargo run --bin constraint-evaluation-generatorsource§impl FiniteField for XFieldElement
impl FiniteField for XFieldElement
source§impl<T> From<[T; 3]> for XFieldElementwhere
T: Into<BFieldElement>,
impl<T> From<[T; 3]> for XFieldElementwhere
T: Into<BFieldElement>,
source§fn from(value: [T; 3]) -> XFieldElement
fn from(value: [T; 3]) -> XFieldElement
Converts to this type from the input type.
source§impl From<Polynomial<BFieldElement>> for XFieldElement
impl From<Polynomial<BFieldElement>> for XFieldElement
source§fn from(poly: Polynomial<BFieldElement>) -> XFieldElement
fn from(poly: Polynomial<BFieldElement>) -> XFieldElement
Converts to this type from the input type.
source§impl<T> From<T> for XFieldElementwhere
T: Into<BFieldElement>,
impl<T> From<T> for XFieldElementwhere
T: Into<BFieldElement>,
source§fn from(value: T) -> XFieldElement
fn from(value: T) -> XFieldElement
Converts to this type from the input type.
source§impl From<XFieldElement> for Digest
impl From<XFieldElement> for Digest
source§fn from(xfe: XFieldElement) -> Digest
fn from(xfe: XFieldElement) -> Digest
Interpret the XFieldElement as a Digest. No hashing is performed. This
interpretation can be useful for the
AlgebraicHasher trait and,
by extension, allows building
MerkleTrees directly from XFieldElements.
source§impl Hash for XFieldElement
impl Hash for XFieldElement
source§impl Inverse for XFieldElement
impl Inverse for XFieldElement
fn inverse(&self) -> XFieldElement
fn inverse_or_zero(&self) -> Self
source§impl MasterTable<XFieldElement> for MasterExtTable
impl MasterTable<XFieldElement> for MasterExtTable
fn trace_domain(&self) -> ArithmeticDomain
fn randomized_trace_domain(&self) -> ArithmeticDomain
fn quotient_domain(&self) -> ArithmeticDomain
fn fri_domain(&self) -> ArithmeticDomain
source§fn trace_table(&self) -> ArrayView2<'_, XFieldElement>
fn trace_table(&self) -> ArrayView2<'_, XFieldElement>
Presents underlying trace data, excluding trace randomizers and randomizer polynomials.
source§fn trace_table_mut(&mut self) -> ArrayViewMut2<'_, XFieldElement>
fn trace_table_mut(&mut self) -> ArrayViewMut2<'_, XFieldElement>
Mutably presents underlying trace data, excluding trace randomizers and randomizer
polynomials.
fn randomized_trace_table(&self) -> ArrayView2<'_, XFieldElement>
fn randomized_trace_table_mut(&mut self) -> ArrayViewMut2<'_, XFieldElement>
source§fn quotient_domain_table(&self) -> ArrayView2<'_, XFieldElement>
fn quotient_domain_table(&self) -> ArrayView2<'_, XFieldElement>
The low-degree extended randomized trace data over the quotient domain. Includes randomizer
polynomials. Requires having called
low_degree_extend_all_columns first.source§fn fri_domain_table(&self) -> ArrayView2<'_, XFieldElement>
fn fri_domain_table(&self) -> ArrayView2<'_, XFieldElement>
The low-degree extended randomized trace data over the FRI domain. Includes randomizer
polynomials. Requires having called
low_degree_extend_all_columns first.source§fn memoize_low_degree_extended_table(
&mut self,
low_degree_extended_columns: Array2<XFieldElement>
)
fn memoize_low_degree_extended_table( &mut self, low_degree_extended_columns: Array2<XFieldElement> )
Not intended for direct use, but through
Self::low_degree_extend_all_columns.source§fn low_degree_extended_table(&self) -> ArrayView2<'_, XFieldElement>
fn low_degree_extended_table(&self) -> ArrayView2<'_, XFieldElement>
Requires having called
low_degree_extend_all_columns first.source§fn memoize_interpolation_polynomials(
&mut self,
interpolation_polynomials: Array1<Polynomial<XFieldElement>>
)
fn memoize_interpolation_polynomials( &mut self, interpolation_polynomials: Array1<Polynomial<XFieldElement>> )
Memoize the polynomials interpolating the columns.
Not intended for direct use, but through
Self::low_degree_extend_all_columns.source§fn interpolation_polynomials(&self) -> ArrayView1<'_, Polynomial<XFieldElement>>
fn interpolation_polynomials(&self) -> ArrayView1<'_, Polynomial<XFieldElement>>
Requires having called
low_degree_extend_all_columns first. source§fn row(&self, row_index: XFieldElement) -> Array1<XFieldElement>
fn row(&self, row_index: XFieldElement) -> Array1<XFieldElement>
Get one row of the table at an arbitrary index. Notably, the index does not have to be in
any of the domains. In other words, can be used to compute out-of-domain rows. Requires
having called
low_degree_extend_all_columns first.
Does not include randomizer polynomials.fn hash_one_row(row: ArrayView1<'_, XFieldElement>) -> Digest
source§fn randomize_trace(&mut self)
fn randomize_trace(&mut self)
Set all rows not part of the actual (padded) trace to random values.
source§fn low_degree_extend_all_columns(&mut self)
fn low_degree_extend_all_columns(&mut self)
Low-degree extend all columns of the randomized trace domain table. The resulting
low-degree extended columns can be accessed using
quotient_domain_table and
fri_domain_table.source§fn merkle_tree(
&self,
maybe_profiler: &mut Option<TritonProfiler>
) -> MerkleTree<Tip5>
fn merkle_tree( &self, maybe_profiler: &mut Option<TritonProfiler> ) -> MerkleTree<Tip5>
Compute a Merkle tree of the FRI domain table. Every row gives one leaf in the tree.
The function
hash_row is used to hash each row.fn hash_all_fri_domain_rows(&self) -> Vec<Digest>
source§impl ModPowU32 for XFieldElement
impl ModPowU32 for XFieldElement
fn mod_pow_u32(&self, exp: u32) -> XFieldElement
source§impl ModPowU64 for XFieldElement
impl ModPowU64 for XFieldElement
fn mod_pow_u64(&self, exponent: u64) -> XFieldElement
source§impl Mul<BFieldElement> for XFieldElement
impl Mul<BFieldElement> for XFieldElement
XField * BField means scalar multiplication of the BFieldElement onto each coefficient of the XField.
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
* operator.source§fn mul(self, other: BFieldElement) -> XFieldElement
fn mul(self, other: BFieldElement) -> XFieldElement
Performs the
* operation. Read moresource§impl Mul<XFieldElement> for BFieldElement
impl Mul<XFieldElement> for BFieldElement
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
* operator.source§fn mul(self, other: XFieldElement) -> XFieldElement
fn mul(self, other: XFieldElement) -> XFieldElement
Performs the
* operation. Read moresource§impl Mul for XFieldElement
impl Mul for XFieldElement
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
* operator.source§fn mul(self, other: XFieldElement) -> XFieldElement
fn mul(self, other: XFieldElement) -> XFieldElement
Performs the
* operation. Read moresource§impl MulAssign<BFieldElement> for XFieldElement
impl MulAssign<BFieldElement> for XFieldElement
source§fn mul_assign(&mut self, rhs: BFieldElement)
fn mul_assign(&mut self, rhs: BFieldElement)
Performs the
*= operation. Read moresource§impl MulAssign for XFieldElement
impl MulAssign for XFieldElement
source§fn mul_assign(&mut self, rhs: XFieldElement)
fn mul_assign(&mut self, rhs: XFieldElement)
Performs the
*= operation. Read moresource§impl Neg for XFieldElement
impl Neg for XFieldElement
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
- operator.source§fn neg(self) -> XFieldElement
fn neg(self) -> XFieldElement
Performs the unary
- operation. Read moresource§impl One for XFieldElement
impl One for XFieldElement
source§impl PartialEq for XFieldElement
impl PartialEq for XFieldElement
source§fn eq(&self, other: &XFieldElement) -> bool
fn eq(&self, other: &XFieldElement) -> bool
This method tests for
self and other values to be equal, and is used
by ==.source§impl PrimitiveRootOfUnity for XFieldElement
impl PrimitiveRootOfUnity for XFieldElement
fn primitive_root_of_unity(n: u64) -> Option<XFieldElement>
source§impl Serialize for XFieldElement
impl Serialize for XFieldElement
source§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
source§impl Sub<BFieldElement> for XFieldElement
impl Sub<BFieldElement> for XFieldElement
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
- operator.source§fn sub(self, other: BFieldElement) -> XFieldElement
fn sub(self, other: BFieldElement) -> XFieldElement
Performs the
- operation. Read moresource§impl Sub<XFieldElement> for BFieldElement
impl Sub<XFieldElement> for BFieldElement
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
- operator.source§fn sub(self, other: XFieldElement) -> XFieldElement
fn sub(self, other: XFieldElement) -> XFieldElement
Performs the
- operation. Read moresource§impl Sub for XFieldElement
impl Sub for XFieldElement
§type Output = XFieldElement
type Output = XFieldElement
The resulting type after applying the
- operator.source§fn sub(self, other: XFieldElement) -> XFieldElement
fn sub(self, other: XFieldElement) -> XFieldElement
Performs the
- operation. Read moresource§impl SubAssign<BFieldElement> for XFieldElement
impl SubAssign<BFieldElement> for XFieldElement
source§fn sub_assign(&mut self, rhs: BFieldElement)
fn sub_assign(&mut self, rhs: BFieldElement)
Performs the
-= operation. Read moresource§impl SubAssign for XFieldElement
impl SubAssign for XFieldElement
source§fn sub_assign(&mut self, rhs: XFieldElement)
fn sub_assign(&mut self, rhs: XFieldElement)
Performs the
-= operation. Read moresource§impl Sum for XFieldElement
impl Sum for XFieldElement
source§fn sum<I>(iter: I) -> XFieldElementwhere
I: Iterator<Item = XFieldElement>,
fn sum<I>(iter: I) -> XFieldElementwhere
I: Iterator<Item = XFieldElement>,
Method which takes an iterator and generates
Self from the elements by
“summing up” the items.source§impl TryFrom<&[BFieldElement]> for XFieldElement
impl TryFrom<&[BFieldElement]> for XFieldElement
§type Error = TryFromXFieldElementError
type Error = TryFromXFieldElementError
The type returned in the event of a conversion error.
source§fn try_from(
value: &[BFieldElement]
) -> Result<XFieldElement, <XFieldElement as TryFrom<&[BFieldElement]>>::Error>
fn try_from( value: &[BFieldElement] ) -> Result<XFieldElement, <XFieldElement as TryFrom<&[BFieldElement]>>::Error>
Performs the conversion.
source§impl TryFrom<Digest> for XFieldElement
impl TryFrom<Digest> for XFieldElement
§type Error = TryFromXFieldElementError
type Error = TryFromXFieldElementError
The type returned in the event of a conversion error.
source§fn try_from(
digest: Digest
) -> Result<XFieldElement, <XFieldElement as TryFrom<Digest>>::Error>
fn try_from( digest: Digest ) -> Result<XFieldElement, <XFieldElement as TryFrom<Digest>>::Error>
Performs the conversion.
source§impl TryFrom<Vec<BFieldElement>> for XFieldElement
impl TryFrom<Vec<BFieldElement>> for XFieldElement
§type Error = TryFromXFieldElementError
type Error = TryFromXFieldElementError
The type returned in the event of a conversion error.
source§fn try_from(
value: Vec<BFieldElement>
) -> Result<XFieldElement, <XFieldElement as TryFrom<Vec<BFieldElement>>>::Error>
fn try_from( value: Vec<BFieldElement> ) -> Result<XFieldElement, <XFieldElement as TryFrom<Vec<BFieldElement>>>::Error>
Performs the conversion.
source§impl Zero for XFieldElement
impl Zero for XFieldElement
impl Copy for XFieldElement
impl Eq for XFieldElement
impl StructuralPartialEq for XFieldElement
Auto Trait Implementations§
impl Freeze for XFieldElement
impl RefUnwindSafe for XFieldElement
impl Send for XFieldElement
impl Sync for XFieldElement
impl Unpin for XFieldElement
impl UnwindSafe for XFieldElement
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> 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