pub struct Trace<F: Field> { /* private fields */ }Expand description
An execution trace: a 2D table of field elements.
Stored in row-major order: data[row * column_count + col].
Each row has exactly column_count elements.
§Examples
use field_cat::F101;
use machine_cat::{Column, ColumnCount, Trace};
let trace = Trace::from_rows(
ColumnCount::new(2),
&[
vec![F101::new(1), F101::new(1)],
vec![F101::new(1), F101::new(2)],
vec![F101::new(2), F101::new(3)],
vec![F101::new(3), F101::new(5)],
],
)?;
assert_eq!(trace.get(2, Column::new(0))?, F101::new(2));
assert_eq!(trace.get(2, Column::new(1))?, F101::new(3));Implementations§
Source§impl<F: Field> Trace<F>
impl<F: Field> Trace<F>
Sourcepub fn from_rows(
column_count: ColumnCount,
rows: &[Vec<F>],
) -> Result<Self, Error>
pub fn from_rows( column_count: ColumnCount, rows: &[Vec<F>], ) -> Result<Self, Error>
Construct a trace from a vector of rows.
Each inner vector must have exactly column_count elements.
§Errors
Returns Error::EmptyTrace if rows is empty, or
Error::RowLengthMismatch if any row has the wrong length.
Sourcepub fn column_count(&self) -> ColumnCount
pub fn column_count(&self) -> ColumnCount
The number of columns.
Sourcepub fn get(&self, row: usize, col: Column) -> Result<F, Error>
pub fn get(&self, row: usize, col: Column) -> Result<F, Error>
Get the value at (row, col).
§Errors
Returns Error::ColumnOutOfBounds if the row or column
is out of range.
Sourcepub fn row_pair_assignment(
&self,
row: usize,
) -> Result<impl Fn(ColumnRef) -> Result<F, Error> + '_, Error>
pub fn row_pair_assignment( &self, row: usize, ) -> Result<impl Fn(ColumnRef) -> Result<F, Error> + '_, Error>
Build an assignment function for a row pair (row, row+1).
The returned closure maps ColumnRef::Current to values
in row and ColumnRef::Next to values in row + 1.
§Errors
Returns Error::InsufficientRows if row + 1 >= row_count.
Sourcepub fn column_values(&self, col: Column) -> Result<Vec<F>, Error>
pub fn column_values(&self, col: Column) -> Result<Vec<F>, Error>
Extract all values from a single column.
Returns a vector of length row_count.
§Errors
Returns Error::ColumnOutOfBounds if col is out of range.