diff --git a/polynome.py b/polynome.py index 843614b38d649c354dda6f510cf3d6a6b4cc8f19..2f8be27262a6a75eb5588d80c73ed755629eb62f 100644 --- a/polynome.py +++ b/polynome.py @@ -38,7 +38,7 @@ class polynome(): coeff_poly_res = [0] * (len(self.coefs) + len(poly_2.coefs) - 1) for index_1, value_1 in enumerate(self.coefs): for index_2, value_2 in enumerate(poly_2.coefs): - coeff_poly_res[index_1 + index_2] += value_1 * value_2 % self.prime_mod + coeff_poly_res[index_1 + index_2] += (value_1 * value_2) % self.prime_mod return polynome(coeff_poly_res) def evaluate(self, x): @@ -46,4 +46,4 @@ class polynome(): res = 0 for i in range(len(self.coefs) - 1, -1, -1): res = (res * x + self.coefs[i]) - return res % self.prime_mod + return (res % self.prime_mod) diff --git a/reed_solomon.py b/reed_solomon.py index c40a79a984f8aae2d5ba2a830e09c40ccdf58614..e905c4dce227fdec58cdc0605eed01cc05402c53 100644 --- a/reed_solomon.py +++ b/reed_solomon.py @@ -29,12 +29,8 @@ def lagrange_compute(l: list) -> polynome: poly_n = polynome([1]) for x_k, y_k in enumerate(l): if x_k != x_i: - #print(f"value : {x_i - x_k}") - d = inverse_mult(x_i-x_k, poly_n.prime_mod) - #print(f"inverse : {d}") - #poly_n = poly_n.mul(polynome([-x_k / (x_i-x_k), 1 / (x_i-x_k)])) + d = inverse_mult((x_i-x_k) % poly_n.prime_mod, poly_n.prime_mod) poly_n = poly_n.mul(polynome([-x_k * d % poly_n.prime_mod, d % poly_n.prime_mod])) - #poly_n.show() poly_n = poly_n.mul(polynome([y_i[1] % poly_n.prime_mod])) poly = poly.add(poly_n) return poly @@ -43,7 +39,7 @@ def check_nb_error(l: list, p: polynome) -> int: pass if __name__ == '__main__': - list_ = [(0, 2), (1, 4), (2, 8)] + list_ = [(0, 0), (1, 1), (2, 2)] poly = lagrange_compute(list_) - poly.show() - print(poly.evaluate(1)) + #poly.show() + print(poly.evaluate(5))