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 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:
...@@ -135,7 +137,29 @@ def modular_inverse(a, n): ...@@ -135,7 +137,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