]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: make element constructor errors more consistent.
authorMichael Orlitzky <michael@orlitzky.com>
Wed, 25 Nov 2020 19:03:41 +0000 (14:03 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Wed, 25 Nov 2020 19:03:41 +0000 (14:03 -0500)
mjo/eja/eja_algebra.py

index 933603a40a7be27feb891efa4b53f3f82388f239..a0af3f0ef543dd951b2463a8aef0f295a2561287 100644 (file)
@@ -54,7 +54,7 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule):
             sage: J(1)
             Traceback (most recent call last):
             ...
-            ValueError: not a naturally-represented algebra element
+            ValueError: not an element of this algebra
 
         """
         return None
@@ -177,7 +177,7 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule):
             sage: J(A)
             Traceback (most recent call last):
             ...
-            ArithmeticError: vector is not in free module
+            ValueError: not an element of this algebra
 
         TESTS:
 
@@ -196,7 +196,7 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule):
             True
 
         """
-        msg = "not a naturally-represented algebra element"
+        msg = "not an element of this algebra"
         if elt == 0:
             # The superclass implementation of random_element()
             # needs to be able to coerce "0" into the algebra.
@@ -221,7 +221,12 @@ class FiniteDimensionalEuclideanJordanAlgebra(CombinatorialFreeModule):
         # could be QQ instead of QQbar.
         V = VectorSpace(basis_space.base_ring(), elt.nrows()*elt.ncols())
         W = V.span_of_basis( _mat2vec(s) for s in natural_basis )
-        coords =  W.coordinate_vector(_mat2vec(elt))
+
+        try:
+            coords =  W.coordinate_vector(_mat2vec(elt))
+        except ArithmeticError:  # vector is not in free module
+            raise ValueError(msg)
+
         return self.from_vector(coords)
 
     def _repr_(self):