diff --git a/src/utils/dff.rs b/src/utils/dff.rs index da41e33..2d325a0 100644 --- a/src/utils/dff.rs +++ b/src/utils/dff.rs @@ -19,8 +19,9 @@ pub fn ddf(f: Polynomial) -> Vec<(Polynomial, u128)> { let mut f_star = f.clone(); let one_cmp = Polynomial::one(); - while f_star.degree() as u128 >= (d) { - let h = Polynomial::x().bpow_mod(q.clone().pow(d), &f_star) + Polynomial::x(); + + while f_star.degree() as u128 >= (2 * d) { + let h = Polynomial::x().bpow_mod(q.clone().pow(d), f_star.clone()) + Polynomial::x(); let g = gcd(&h, &f_star); if g != one_cmp { @@ -35,9 +36,12 @@ pub fn ddf(f: Polynomial) -> Vec<(Polynomial, u128)> { d += 1; } + if f_star != one_cmp { eprintln!("fstar not one"); z.push((f_star.clone(), f_star.degree() as u128)); + } else if z.len() == 0 { + z.push((f.clone(), 1)); } z diff --git a/src/utils/poly.rs b/src/utils/poly.rs index 84194cd..48242ab 100644 --- a/src/utils/poly.rs +++ b/src/utils/poly.rs @@ -25,7 +25,7 @@ impl Polynomial { } pub fn degree(&self) -> usize { - self.polynomial.len() + self.polynomial.len() - 1 } pub fn one() -> Self {