From: Michael Orlitzky Date: Tue, 25 Jun 2019 21:13:41 +0000 (-0400) Subject: eja: recurse more directly in minimal_polynomial(). X-Git-Url: http://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=0dc6a110a16f63240e7817fc7529996e885973c8;hp=556690d808d614f2c271dc431dd909e353530594;p=sage.d.git eja: recurse more directly in minimal_polynomial(). --- 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):