From 305306f55528b53945a3e8e78d51a51fe06fde37 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Tue, 25 Jun 2019 17:13:41 -0400 Subject: [PATCH] eja: recurse more directly in minimal_polynomial(). --- mjo/eja/euclidean_jordan_algebra.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/mjo/eja/euclidean_jordan_algebra.py b/mjo/eja/euclidean_jordan_algebra.py index bb46019..8f623b4 100644 --- a/mjo/eja/euclidean_jordan_algebra.py +++ b/mjo/eja/euclidean_jordan_algebra.py @@ -242,18 +242,25 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra): True """ - if self.parent().is_associative(): - return self.matrix().minimal_polynomial() + # The element we're going to call "minimal_polynomial()" on. + # Either myself, interpreted as an element of a finite- + # dimensional algebra, or an element of an associative + # subalgebra. + elt = None - V = self.span_of_powers() - assoc_subalg = self.subalgebra_generated_by() - # Mis-design warning: the basis used for span_of_powers() - # and subalgebra_generated_by() must be the same, and in - # the same order! - subalg_self = assoc_subalg(V.coordinates(self.vector())) - # Recursive call, but should work since the subalgebra is - # associative. - return subalg_self.minimal_polynomial() + if self.parent().is_associative(): + elt = FiniteDimensionalAlgebraElement(self.parent(), self) + else: + V = self.span_of_powers() + assoc_subalg = self.subalgebra_generated_by() + # Mis-design warning: the basis used for span_of_powers() + # and subalgebra_generated_by() must be the same, and in + # the same order! + elt = assoc_subalg(V.coordinates(self.vector())) + + # Recursive call, but should work since elt lives in an + # associative algebra. + return elt.minimal_polynomial() def characteristic_polynomial(self): -- 2.44.2