fix: Add further handling to leading zero blocks in add and powmod #15

Merged
0xalivecow merged 1 commit from dev into main 2024-11-16 14:01:18 +00:00
Showing only changes of commit 295ed98c1e - Show all commits

View file

@ -81,7 +81,7 @@ impl Polynomial {
if exponent == 0 { if exponent == 0 {
Polynomial::new(vec![FieldElement::new( Polynomial::new(vec![FieldElement::new(
polynomial_2_block(vec![1], "gcm").unwrap(), polynomial_2_block(vec![0], "gcm").unwrap(),
)]) )])
.div(&modulus) .div(&modulus)
.1; .1;
@ -102,6 +102,23 @@ impl Polynomial {
//eprintln!("After mod: {:?}", self); //eprintln!("After mod: {:?}", self);
exponent >>= 1; exponent >>= 1;
} }
while !result.polynomial.is_empty()
&& result
.polynomial
.last()
.unwrap()
.as_ref()
.iter()
.all(|&x| x == 0)
{
result.polynomial.pop();
}
if result.is_empty() {
result = Polynomial::new(vec![FieldElement::new(vec![0; 16])]);
}
result result
} }
@ -246,10 +263,13 @@ impl Add for Polynomial {
} }
} }
for i in (0..polynomial.len() - 1).rev() { while !polynomial.is_empty() && polynomial.last().unwrap().as_ref().iter().all(|&x| x == 0)
if polynomial[i].is_zero() { {
polynomial.pop(); polynomial.pop();
} }
if polynomial.is_empty() {
return Polynomial::new(vec![FieldElement::new(vec![0; 16])]);
} }
Polynomial::new(polynomial) Polynomial::new(polynomial)