Merge sff runner adaption #24

Merged
0xalivecow merged 4 commits from dev into main 2024-11-25 13:24:23 +00:00
Showing only changes of commit 2d4f7a1110 - Show all commits

View file

@ -1,3 +1,5 @@
use std::usize;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::utils::{ use crate::utils::{
@ -10,13 +12,13 @@ use super::poly::Polynomial;
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
struct Factors { struct Factors {
factor: Vec<String>, factor: Vec<String>,
exponent: u32, exponent: usize,
} }
pub fn sff(mut f: Polynomial) -> Vec<(Polynomial, u32)> { pub fn sff(mut f: Polynomial) -> Vec<Polynomial> {
let mut c = gcd(&f, &f.clone().diff()); let mut c = gcd(&f, &f.clone().diff());
f = f.div(&c).0; f = f.div(&c).0;
let mut z: Vec<(Polynomial, u32)> = vec![]; let mut z: Vec<Polynomial> = vec![];
let mut e: u32 = 1; let mut e: u32 = 1;
let one_element = Polynomial::new(vec![FieldElement::new( let one_element = Polynomial::new(vec![FieldElement::new(
@ -26,7 +28,7 @@ pub fn sff(mut f: Polynomial) -> Vec<(Polynomial, u32)> {
while f != one_element { while f != one_element {
let y = gcd(&f, &c); let y = gcd(&f, &c);
if f != y { if f != y {
z.push(((f.div(&y).0), e)); z.push(f.div(&y).0);
} }
f = y.clone(); f = y.clone();
@ -36,8 +38,8 @@ pub fn sff(mut f: Polynomial) -> Vec<(Polynomial, u32)> {
if c != one_element { if c != one_element {
let r = sff(c.sqrt()); let r = sff(c.sqrt());
for (f_star, e_star) in r { for f_star in r {
z.push((f_star, 2 * e_star)); z.push(f_star);
} }
} }
@ -74,17 +76,19 @@ mod tests {
]); ]);
let poly_f = Polynomial::from_c_array(&json_f); let poly_f = Polynomial::from_c_array(&json_f);
let factors = sff(poly_f); let mut factors = sff(poly_f);
factors.sort();
let mut result: Vec<Factors> = vec![]; let mut result: Vec<Factors> = vec![];
for (factor, exponent) in factors { for (exponent, factor) in factors.iter().enumerate() {
result.push(Factors { result.push(Factors {
factor: factor.to_c_array(), factor: factor.clone().to_c_array(),
exponent, exponent: exponent + 1,
}); });
} }
println!("{:?}", result.sort()); println!("{:?}", result);
let bit_indices: Vec<u8> = vec![0]; let bit_indices: Vec<u8> = vec![0];
assert!(false) assert!(false)
} }