X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feuclidean_jordan_algebra.py;h=920ecc988d21c8ce698fdd4dcf0aefceffdb8236;hb=2f83e55614ad1f21e98ae256f4e81eb3b77bc41a;hp=2fa4800b09f4f26ca784532e154cde1665ed7b84;hpb=87644b67c69d96150793929470507522a8fa2b0b;p=sage.d.git diff --git a/mjo/eja/euclidean_jordan_algebra.py b/mjo/eja/euclidean_jordan_algebra.py index 2fa4800..920ecc9 100644 --- a/mjo/eja/euclidean_jordan_algebra.py +++ b/mjo/eja/euclidean_jordan_algebra.py @@ -699,14 +699,13 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra): True """ + if not self.is_invertible(): + raise ValueError("element not invertible") + if self.parent().is_associative(): elt = FiniteDimensionalAlgebraElement(self.parent(), self) - return elt.inverse() - - # TODO: we can do better once the call to is_invertible() - # doesn't crash on irregular elements. - #if not self.is_invertible(): - # raise ValueError('element is not invertible') + # elt is in the right coordinates, but has the wrong class. + return self.parent()(elt.inverse().vector()) # We do this a little different than the usual recursive # call to a finite-dimensional algebra element, because we @@ -1212,12 +1211,11 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra): TESTS:: sage: set_random_seed() - sage: J = RealCartesianProductEJA(5) - sage: c = J.random_element().subalgebra_idempotent() - sage: c^2 == c - True - sage: J = JordanSpinEJA(5) - sage: c = J.random_element().subalgebra_idempotent() + sage: J = random_eja() + sage: x = J.random_element() + sage: while x.is_nilpotent(): + ....: x = J.random_element() + sage: c = x.subalgebra_idempotent() sage: c^2 == c True