Skip to content
This repository was archived by the owner on Jan 30, 2023. It is now read-only.

Commit dd667ed

Browse files
committed
changed MPE to the trivial repeated calling of the evaluation function. added a todo block to the documentation.
1 parent 50f9bdd commit dd667ed

File tree

1 file changed

+8
-15
lines changed

1 file changed

+8
-15
lines changed

src/sage/rings/polynomial/skew_polynomial_ring.py

+8-15
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,13 @@ def multi_point_evaluation(self, p, eval_pts):
783783
784784
List of values of `p` at the `eval_pts`.
785785
786+
.. TODO::
787+
788+
This method currently trivially calls the evaluation function
789+
repeatedly and should be updated to the recursive algorithm
790+
from the paper "Fast Operations on Linearized Polynomials
791+
and their Applications in Coding Theory" by Puchinger, et al.
792+
786793
EXAMPLES:
787794
788795
sage: k.<t> = GF(5^3)
@@ -792,22 +799,8 @@ def multi_point_evaluation(self, p, eval_pts):
792799
sage: eval_pts = [1, t, t^2]
793800
sage: c = S.multi_point_evaluation(a, eval_pts); c
794801
[t + 1, 3*t^2 + 4*t + 4, 4*t]
795-
sage: [ a(e) for e in eval_pts ]
796-
[t + 1, 3*t^2 + 4*t + 4, 4*t]
797802
"""
798-
coefficients = p.list()
799-
sigma = self.twist_map()
800-
if len(eval_pts) == 1:
801-
return [ p(eval_pts[0]) ]
802-
else:
803-
t = len(eval_pts)//2
804-
A = eval_pts[:t]
805-
B = eval_pts[t:]
806-
M_A = self.minimal_vanishing_polynomial(A)
807-
M_B = self.minimal_vanishing_polynomial(B)
808-
Q_A, R_A = p.right_quo_rem(M_A)
809-
Q_B, R_B = p.right_quo_rem(M_B)
810-
return self.multi_point_evaluation(R_A, A) + self.multi_point_evaluation(R_B, B)
803+
return [ p(e) for e in eval_pts ]
811804

812805
def interpolation_polynomial(self, eval_pts, values, check=True):
813806
"""

0 commit comments

Comments
 (0)