Skip to content
Snippets Groups Projects
Commit e4aa26f3 authored by nicolas.albanesi's avatar nicolas.albanesi
Browse files

Fixed lagrange_compute

parent f61c541d
No related branches found
No related tags found
No related merge requests found
......@@ -26,9 +26,9 @@ def lagrange_compute(l: list) -> polynome:
for x_i, y_i in enumerate(l):
poly_n = polynome([1])
for x_k, y_k in enumerate(l):
if x_k != x_i:
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]))
if y_k[0] != y_i[0]:
d = inverse_mult((y_i[0]-y_k[0]) % poly_n.prime_mod, poly_n.prime_mod)
poly_n = poly_n.mul(polynome([-y_k[0] * d % poly_n.prime_mod, d % poly_n.prime_mod]))
poly_n = poly_n.mul(polynome([y_i[1] % poly_n.prime_mod]))
poly = poly.add(poly_n)
return poly
......@@ -38,18 +38,17 @@ def check_nb_error(l: list, p: polynome) -> int:
nbr_error = 0
for item in l:
if (item[1] % p.prime_mod) != (p.evaluate(item[0]) % p.prime_mod):
print(f"DEBUG PURPOSES ONLY {item[1]} != p.evaluate({item[0]}) = {p.evaluate(item[0])}")
# print(f"DEBUG PURPOSES ONLY {item[1]} != p.evaluate({item[0]}) = {p.evaluate(item[0])}")
nbr_error += 1
return nbr_error
def reed_decode(l: list) -> polynome:
# print("test")
for points in get_possibilities(l):
# print(f"{points}")
# lagrange_compute(points).show()
for points in get_possibilities(l, 20):
err = check_nb_error(l, lagrange_compute(points))
print(f"{err=}")
if ((err) <= 9):
# ? Chercher un polynome avec moins de 9 erreurs ?
# Possibilité d'optimiser en evitant de compute 2 fois le poly
return lagrange_compute(points)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment