mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-16 04:33:10 +00:00
* Draw challenge points from the extension field * Now building * Misc * Default eval_unfiltered_base * fmt * A few field settings * Add to Sage * Display tweak * eval_filtered_base * Quartic in bench * Missing methods * Fix tests * PR feedback
47 lines
1.5 KiB
Rust
47 lines
1.5 KiB
Rust
use std::convert::TryInto;
|
|
use std::ops::Range;
|
|
|
|
use crate::field::extension_field::target::{ExtensionExtensionTarget, ExtensionTarget};
|
|
use crate::field::extension_field::{Extendable, FieldExtension};
|
|
use crate::field::field::Field;
|
|
|
|
#[derive(Copy, Clone)]
|
|
pub struct EvaluationVars<'a, F: Extendable<D>, const D: usize> {
|
|
pub(crate) local_constants: &'a [F::Extension],
|
|
pub(crate) local_wires: &'a [F::Extension],
|
|
}
|
|
|
|
#[derive(Copy, Clone)]
|
|
pub struct EvaluationVarsBase<'a, F: Field> {
|
|
pub(crate) local_constants: &'a [F],
|
|
pub(crate) local_wires: &'a [F],
|
|
}
|
|
|
|
impl<'a, F: Extendable<D>, const D: usize> EvaluationVars<'a, F, D> {
|
|
pub fn get_local_ext_ext(
|
|
&self,
|
|
wire_range: Range<usize>,
|
|
) -> <<F as Extendable<D>>::Extension as Extendable<D>>::Extension
|
|
where
|
|
F::Extension: Extendable<D>,
|
|
{
|
|
debug_assert_eq!(wire_range.len(), D);
|
|
let arr = self.local_wires[wire_range].try_into().unwrap();
|
|
<<F as Extendable<D>>::Extension as Extendable<D>>::Extension::from_basefield_array(arr)
|
|
}
|
|
}
|
|
|
|
#[derive(Copy, Clone)]
|
|
pub struct EvaluationTargets<'a, const D: usize> {
|
|
pub(crate) local_constants: &'a [ExtensionTarget<D>],
|
|
pub(crate) local_wires: &'a [ExtensionTarget<D>],
|
|
}
|
|
|
|
impl<'a, const D: usize> EvaluationTargets<'a, D> {
|
|
pub fn get_local_ext_ext(&self, wire_range: Range<usize>) -> ExtensionExtensionTarget<D> {
|
|
debug_assert_eq!(wire_range.len(), D);
|
|
let arr = self.local_wires[wire_range].try_into().unwrap();
|
|
ExtensionExtensionTarget(arr)
|
|
}
|
|
}
|