sp1_recursion_compiler/ir/
fold.rs1use sp1_recursion_derive::DslVariable;
2
3use super::{Ext, Felt, Var};
4use crate::ir::{Array, Builder, Config, MemIndex, MemVariable, Ptr, Variable};
5
6#[derive(DslVariable, Debug, Clone)]
7pub struct FriFoldInput<C: Config> {
8 pub z: Ext<C::F, C::EF>,
9 pub alpha: Ext<C::F, C::EF>,
10 pub x: Felt<C::F>,
11 pub log_height: Var<C::N>,
12 pub mat_opening: Array<C, Ext<C::F, C::EF>>,
13 pub ps_at_z: Array<C, Ext<C::F, C::EF>>,
14 pub alpha_pow: Array<C, Ext<C::F, C::EF>>,
15 pub ro: Array<C, Ext<C::F, C::EF>>,
16}
17
18#[derive(Debug, Clone)]
19pub struct CircuitV2FriFoldInput<C: Config> {
20 pub z: Ext<C::F, C::EF>,
21 pub alpha: Ext<C::F, C::EF>,
22 pub x: Felt<C::F>,
23 pub mat_opening: Vec<Ext<C::F, C::EF>>,
24 pub ps_at_z: Vec<Ext<C::F, C::EF>>,
25 pub alpha_pow_input: Vec<Ext<C::F, C::EF>>,
26 pub ro_input: Vec<Ext<C::F, C::EF>>,
27}
28
29#[derive(Debug, Clone)]
30pub struct CircuitV2FriFoldOutput<C: Config> {
31 pub alpha_pow_output: Vec<Ext<C::F, C::EF>>,
32 pub ro_output: Vec<Ext<C::F, C::EF>>,
33}