Skip to content
Snippets Groups Projects
Commit 629e1bc3 authored by dario.genga's avatar dario.genga
Browse files

Add lagrange polynomial

The prime number is not used for now.
parent 032a0098
No related branches found
No related tags found
No related merge requests found
import math
from numbers import Number
import itertools
import json
......@@ -77,6 +78,7 @@ class Polynomial:
str_value = ""
for i, x in enumerate(reversed(self.value)):
x = math.ceil(x)
if x == 0:
continue
if i != 0:
......@@ -135,7 +137,29 @@ def modular_inverse(a, n):
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):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment