Skip to content
Snippets Groups Projects
Commit ad31f8bc authored by quentin.fasler's avatar quentin.fasler
Browse files
parents 53507693 629e1bc3
No related branches found
No related tags found
No related merge requests found
import math
from numbers import Number from numbers import Number
import itertools import itertools
import json import json
...@@ -77,6 +78,7 @@ class Polynomial: ...@@ -77,6 +78,7 @@ class Polynomial:
str_value = "" str_value = ""
for i, x in enumerate(reversed(self.value)): for i, x in enumerate(reversed(self.value)):
x = math.ceil(x)
if x == 0: if x == 0:
continue continue
if i != 0: if i != 0:
...@@ -130,7 +132,29 @@ def modular_inverse(a, n): ...@@ -130,7 +132,29 @@ def modular_inverse(a, n):
def compute_lagrange_polynomial(points, prime_number): def compute_lagrange_polynomial(points, prime_number):
pass nb_points = len(points)
lagrange = Polynomial((0,))
# Create a polynomial for each points
for i in range(nb_points):
poly_li = Polynomial((1,))
divider = 1
# Compute the lagrange polynomial
for k in range(nb_points):
if k != i:
dividend = Polynomial((-points[k][0], 1)) # x - value
poly_li *= dividend
divider *= (points[i][0] - points[k][0])
divider = 1 / divider
point_yi = points[i][1]
poly_li = poly_li * Polynomial((divider,)) * Polynomial((point_yi,))
lagrange += poly_li
return lagrange
def reed_solomon(points, data_length, last_error_index, prime_number): def reed_solomon(points, data_length, last_error_index, prime_number):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment