mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-08 16:53:07 +00:00
Add linear combination of filter columns
This commit is contained in:
parent
820456fc88
commit
dcb8c37f45
@ -107,9 +107,9 @@ mod tests {
|
|||||||
looking_tables: vec![TableWithColumns::new(
|
looking_tables: vec![TableWithColumns::new(
|
||||||
Table::Cpu,
|
Table::Cpu,
|
||||||
vec![cpu::columns::OPCODE],
|
vec![cpu::columns::OPCODE],
|
||||||
None,
|
vec![],
|
||||||
)],
|
)],
|
||||||
looked_table: TableWithColumns::new(Table::Keccak, vec![keccak_looked_col], None),
|
looked_table: TableWithColumns::new(Table::Keccak, vec![keccak_looked_col], vec![]),
|
||||||
default,
|
default,
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
use anyhow::{ensure, Result};
|
use anyhow::{ensure, Result};
|
||||||
use plonky2::field::extension_field::{Extendable, FieldExtension};
|
use plonky2::field::extension_field::{Extendable, FieldExtension};
|
||||||
use plonky2::field::field_types::Field;
|
use plonky2::field::field_types::Field;
|
||||||
@ -22,17 +24,24 @@ use crate::vars::{StarkEvaluationTargets, StarkEvaluationVars};
|
|||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct TableWithColumns {
|
pub struct TableWithColumns {
|
||||||
pub table: Table,
|
table: Table,
|
||||||
pub columns: Vec<usize>,
|
columns: Vec<usize>,
|
||||||
pub filter_column: Option<usize>,
|
/// Vector of columns `{c_1,...,c_k}` used as a filter using the sum `c_1 + ... + c_k`.
|
||||||
|
/// An empty vector corresponds to no filter.
|
||||||
|
filter_columns: Vec<usize>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TableWithColumns {
|
impl TableWithColumns {
|
||||||
pub fn new(table: Table, columns: Vec<usize>, filter_column: Option<usize>) -> Self {
|
pub fn new(table: Table, columns: Vec<usize>, filter_columns: Vec<usize>) -> Self {
|
||||||
|
debug_assert_eq!(
|
||||||
|
filter_columns.iter().collect::<HashSet<_>>().len(),
|
||||||
|
filter_columns.len(),
|
||||||
|
"Duplicate filter columns."
|
||||||
|
);
|
||||||
Self {
|
Self {
|
||||||
table,
|
table,
|
||||||
columns,
|
columns,
|
||||||
filter_column,
|
filter_columns,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user