From: Michael Orlitzky Date: Sat, 4 Feb 2023 03:37:34 +0000 (-0500) Subject: eja: don't pointlessly orthonormalize in subalgebra_idempotent(). X-Git-Url: http://gitweb.michael.orlitzky.com/?p=sage.d.git;a=commitdiff_plain;h=ec4c9a49813109790d461da06d4f64219fa4bf8c eja: don't pointlessly orthonormalize in subalgebra_idempotent(). --- diff --git a/mjo/eja/eja_element.py b/mjo/eja/eja_element.py index ef63704..235047a 100644 --- a/mjo/eja/eja_element.py +++ b/mjo/eja/eja_element.py @@ -1455,7 +1455,10 @@ class FiniteDimensionalEJAElement(IndexedFreeModuleElement): if self.is_nilpotent(): raise ValueError("this only works with non-nilpotent elements!") - J = self.subalgebra_generated_by() + # The subalgebra is transient (we return an element of the + # superalgebra, i.e. this algebra) so why bother + # orthonormalizing? + J = self.subalgebra_generated_by(orthonormalize=False) u = J(self) # The image of the matrix of left-u^m-multiplication @@ -1476,14 +1479,12 @@ class FiniteDimensionalEJAElement(IndexedFreeModuleElement): # subspace... or do we? Can't we just solve, knowing that # A(c) = u^(s+1) should have a solution in the big space, # too? - # - # Beware, solve_right() means that we're using COLUMN vectors. - # Our FiniteDimensionalAlgebraElement superclass uses rows. u_next = u**(s+1) A = u_next.operator().matrix() c = J.from_vector(A.solve_right(u_next.to_vector())) - # Now c is the idempotent we want, but it still lives in the subalgebra. + # Now c is the idempotent we want, but it still lives in + # the subalgebra. return c.superalgebra_element()