]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/euclidean_jordan_algebra.py
eja: randomize and fix a bug in the subalgebra_idempotent() test.
[sage.d.git] / mjo / eja / euclidean_jordan_algebra.py
index 2fa4800b09f4f26ca784532e154cde1665ed7b84..920ecc988d21c8ce698fdd4dcf0aefceffdb8236 100644 (file)
@@ -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