mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-26 01:23:06 +00:00
Minor
This commit is contained in:
parent
110763fa79
commit
0ce1a4c5eb
@ -174,14 +174,16 @@ impl<F: Field + Extendable<D>, const D: usize> SimpleGenerator<F>
|
||||
|
||||
fn run_once(&self, witness: &PartialWitness<F>) -> PartialWitness<F> {
|
||||
let n = self.gate.num_points;
|
||||
|
||||
let local_wire = |input| {
|
||||
Wire { gate: self.gate_index, input }
|
||||
};
|
||||
|
||||
let lookup_fe = |wire_range: Range<usize>| {
|
||||
debug_assert_eq!(wire_range.len(), D);
|
||||
let values = wire_range
|
||||
.map(|input| {
|
||||
witness.get_wire(Wire {
|
||||
gate: self.gate_index,
|
||||
input,
|
||||
})
|
||||
witness.get_wire(local_wire(input))
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
let arr = values.try_into().unwrap();
|
||||
@ -202,6 +204,13 @@ impl<F: Field + Extendable<D>, const D: usize> SimpleGenerator<F>
|
||||
.collect::<Vec<_>>();
|
||||
let interpolant = interpolant(&points);
|
||||
|
||||
let mut result = PartialWitness::<F>::new();
|
||||
for (i, &coeff) in interpolant.coeffs.iter().enumerate() {
|
||||
let wire_range = self.gate.wires_coeff(i);
|
||||
let wires = wire_range.map(|i| local_wire(i)).collect::<Vec<_>>();
|
||||
result.set_ext_wires(&wires, coeff);
|
||||
}
|
||||
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ use std::collections::HashMap;
|
||||
use crate::field::field::Field;
|
||||
use crate::target::Target;
|
||||
use crate::wire::Wire;
|
||||
use crate::field::extension_field::{Extendable, FieldExtension};
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct PartialWitness<F: Field> {
|
||||
@ -73,6 +74,19 @@ impl<F: Field> PartialWitness<F> {
|
||||
self.set_target(Target::Wire(wire), value)
|
||||
}
|
||||
|
||||
pub fn set_wires(&mut self, wires: &[Wire], values: &[F]) {
|
||||
debug_assert_eq!(wires.len(), values.len());
|
||||
for (&wire, &value) in wires.iter().zip(values) {
|
||||
self.set_wire(wire, value);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_ext_wires<const D: usize>(&mut self, wires: &[Wire], value: F::Extension)
|
||||
where F: Extendable<D> {
|
||||
debug_assert_eq!(wires.len(), D);
|
||||
self.set_wires(wires, &value.to_basefield_array());
|
||||
}
|
||||
|
||||
pub fn extend(&mut self, other: PartialWitness<F>) {
|
||||
for (target, value) in other.target_values {
|
||||
self.set_target(target, value);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user