diff --git a/src/utils/field.rs b/src/utils/field.rs index f0da8f0..63e2230 100644 --- a/src/utils/field.rs +++ b/src/utils/field.rs @@ -1,6 +1,6 @@ use std::{ env::args, - ops::{Add, Mul}, + ops::{Add, BitXor, Mul}, }; use anyhow::{anyhow, Ok, Result}; @@ -73,9 +73,13 @@ impl Mul for Polynomial { impl Add for Polynomial { type Output = Self; fn add(self, rhs: Self) -> Self::Output { - FieldElement::new( - xor_bytes(&self.field_element, rhs.field_element).expect("Error in poly add"), - ) + for i in 0..self.polynomial.len() { + for j in 0..rhs.polynomial.len() { + polynomial[i + j] = &polynomial[i + j] + + &(self.polynomial.get(i).unwrap() * rhs.polynomial.get(j).unwrap()); + } + } + Polynomial::new(polynomial) } } @@ -169,6 +173,14 @@ impl Clone for FieldElement { } } +/* +impl BitXor for FieldElement { + fn bitxor(self, rhs: Self) -> Self::Output { + FieldElement + } +} +*/ + /* impl From> for FieldElement { fn from(item: Vec) -> Self {