Merge Monic functionality #19

Merged
0xalivecow merged 3 commits from dev into main 2024-11-22 14:49:59 +00:00
Showing only changes of commit 6391912bc4 - Show all commits

View file

@ -219,6 +219,22 @@ impl Polynomial {
*fieldelement = fieldelement.clone() / divident.clone();
}
while !self.polynomial.is_empty()
&& self
.polynomial
.last()
.unwrap()
.as_ref()
.iter()
.all(|&x| x == 0)
{
self.polynomial.pop();
}
if self.is_empty() {
self = Polynomial::new(vec![FieldElement::new(vec![0; 16])]);
}
self
}
}
@ -1047,7 +1063,6 @@ mod tests {
let result = element1.pow_mod(10000000, modulus);
assert!(!result.is_zero())
//assert_eq!(BASE64_STANDARD.encode(product), "MoAAAAAAAAAAAAAAAAAAAA==");
}
#[test]
@ -1069,6 +1084,32 @@ mod tests {
let result = element1.monic();
assert_eq!(json!(result.to_c_array()), expected);
//assert_eq!(BASE64_STANDARD.encode(product), "MoAAAAAAAAAAAAAAAAAAAA==");
}
#[test]
fn test_poly_monic_poly_zero() {
let json1 = json!(["AAAAAAAAAAAAAAAAAAAAAA=="]);
let expected = json!(["AAAAAAAAAAAAAAAAAAAAAA=="]);
let element1: Polynomial = Polynomial::from_c_array(&json1);
let result = element1.monic();
assert_eq!(json!(result.to_c_array()), expected);
}
#[test]
fn test_poly_monic_poly_multiple_zero() {
let json1 = json!([
"AAAAAAAAAAAAAAAAAAAAAA==",
"AAAAAAAAAAAAAAAAAAAAAA==",
"AAAAAAAAAAAAAAAAAAAAAA==",
"AAAAAAAAAAAAAAAAAAAAAA=="
]);
let expected = json!(["AAAAAAAAAAAAAAAAAAAAAA=="]);
let element1: Polynomial = Polynomial::from_c_array(&json1);
let result = element1.monic();
assert_eq!(json!(result.to_c_array()), expected);
}
}