sp1_recursion_core/air/
extension.rs1use p3_field::{
2 extension::{BinomialExtensionField, BinomiallyExtendable},
3 AbstractExtensionField, Field,
4};
5use sp1_stark::air::BinomialExtension;
6
7use super::Block;
8
9use crate::runtime::D;
10
11pub trait BinomialExtensionUtils<T> {
12 fn from_block(block: Block<T>) -> Self;
13
14 fn as_block(&self) -> Block<T>;
15}
16
17impl<T: Clone> BinomialExtensionUtils<T> for BinomialExtension<T> {
18 fn from_block(block: Block<T>) -> Self {
19 Self(block.0)
20 }
21
22 fn as_block(&self) -> Block<T> {
23 Block(self.0.clone())
24 }
25}
26
27impl<AF> BinomialExtensionUtils<AF> for BinomialExtensionField<AF, D>
28where
29 AF: Field,
30 AF::F: BinomiallyExtendable<D>,
31{
32 fn from_block(block: Block<AF>) -> Self {
33 Self::from_base_slice(&block.0)
34 }
35
36 fn as_block(&self) -> Block<AF> {
37 Block(self.as_base_slice().try_into().unwrap())
38 }
39}