Skip to content
Open
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
faa70ad
batch proving with same number of variables - part 1
CarloModicaPortfolio Dec 23, 2025
2a9326d
Update src/poly/evals.rs
CarloModicaPortfolio Dec 24, 2025
7eb4361
Update src/poly/evals.rs
CarloModicaPortfolio Dec 24, 2025
bb8fc16
Update src/whir/batch_proof.rs
CarloModicaPortfolio Dec 24, 2025
0cb5617
Update src/whir/batch_proof.rs
CarloModicaPortfolio Dec 24, 2025
43ea6d5
Update src/whir/batch_proof.rs
CarloModicaPortfolio Dec 24, 2025
0789a5b
Update src/whir/batch_proof.rs
CarloModicaPortfolio Dec 24, 2025
9e72199
Update src/whir/batch_proof.rs
CarloModicaPortfolio Dec 24, 2025
dcad22f
fold OOD constaints after selector round; both polynomials can use th…
CarloModicaPortfolio Dec 23, 2025
91e3a70
removed === for code style consitency
CarloModicaPortfolio Dec 24, 2025
3f64f6b
added explaination for alpha
CarloModicaPortfolio Dec 24, 2025
179d115
added TODO!
CarloModicaPortfolio Dec 24, 2025
c58cd68
deleted useless test
CarloModicaPortfolio Dec 24, 2025
3d7be34
removed another useless test
CarloModicaPortfolio Dec 24, 2025
182bee0
removed useless test and add test for selector round function
CarloModicaPortfolio Dec 24, 2025
f2a441c
added MyWhirConfig for more lean code
CarloModicaPortfolio Dec 24, 2025
c2edf5b
Update batch_proof.rs
CarloModicaPortfolio Dec 25, 2025
cc6d12d
added Batch option in QueryOpening
CarloModicaPortfolio Dec 30, 2025
7604d9d
update RoundState to accomodate multiple committed polynomials at once
CarloModicaPortfolio Dec 30, 2025
b0b1c61
batch query placeholder
CarloModicaPortfolio Dec 30, 2025
3e6a9ad
input to the verifier is now a parsed commitment vector
CarloModicaPortfolio Dec 30, 2025
194508b
WIP changes on the batch opening
CarloModicaPortfolio Jan 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions src/poly/evals.rs
Original file line number Diff line number Diff line change
Expand Up @@ -919,6 +919,23 @@ where
// REDUCTION: Merge all thread-local accumulators
.par_fold_reduce(SvoAccumulators::new, |a, b| a + b, |a, b| a + b)
}

/// Compute g = coeff_a·f_a + coeff_b·f_b element-wise
pub fn linear_combination<EF: ExtensionField<F>>(
f_a: &Self,
coeff_a: EF,
f_b: &Self,
coeff_b: EF,
) -> EvaluationsList<EF> {
assert_eq!(f_a.num_evals(), f_b.num_evals());
let evals = f_a
.as_slice()
.iter()
.zip(f_b.as_slice().iter())
.map(|(&a, &b)| coeff_a * a + coeff_b * b)
.collect();
EvaluationsList::new(evals)
}
}

impl<A: Copy + Send + Sync + PrimeCharacteristicRing> EvaluationsList<A> {
Expand Down Expand Up @@ -1246,6 +1263,21 @@ mod tests {
assert_eq!(evaluations_list.as_slice(), &evals);
}

#[test]
fn test_linear_combination() {
let f_a = EvaluationsList::new(vec![F::ONE, F::TWO]);
let f_b = EvaluationsList::new(vec![F::TWO, F::ONE]);
let coeff_a = EF4::from_u64(3);
let coeff_b = EF4::from_u64(2);

let result = EvaluationsList::<F>::linear_combination(&f_a, coeff_a, &f_b, coeff_b);

// result[0] = 3*1 + 2*2 = 7, result[1] = 3*2 + 2*1 = 8
assert_eq!(result.as_slice().len(), 2);
assert_eq!(result.as_slice()[0], EF4::from_u64(7));
assert_eq!(result.as_slice()[1], EF4::from_u64(8));
}

#[test]
#[should_panic]
fn test_new_evaluations_list_invalid_length() {
Expand Down
Loading