]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: add the RealMatrixEuclideanJordanAlgebra class.
authorMichael Orlitzky <michael@orlitzky.com>
Sat, 24 Aug 2019 01:13:48 +0000 (21:13 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sat, 24 Aug 2019 01:13:48 +0000 (21:13 -0400)
We already had analogues for complex and quaternion matrices. The real
one should have been there all along too.

mjo/eja/eja_algebra.py

index 8a3710cce5498d4d47c23a35bf438f055b8d18e7..51973d14822bdc5dd49065de77c1927883161ae9 100644 (file)
@@ -1007,7 +1007,33 @@ class MatrixEuclideanJordanAlgebra(FiniteDimensionalEuclideanJordanAlgebra):
             return tr.coefficient_tuple()[0]
 
 
-class RealSymmetricEJA(MatrixEuclideanJordanAlgebra):
+class RealMatrixEuclideanJordanAlgebra(MatrixEuclideanJordanAlgebra):
+    @staticmethod
+    def real_embed(M):
+        """
+        Embed the matrix ``M`` into a space of real matrices.
+
+        The matrix ``M`` can have entries in any field at the moment:
+        the real numbers, complex numbers, or quaternions. And although
+        they are not a field, we can probably support octonions at some
+        point, too. This function returns a real matrix that "acts like"
+        the original with respect to matrix multiplication; i.e.
+
+          real_embed(M*N) = real_embed(M)*real_embed(N)
+
+        """
+        return M
+
+
+    @staticmethod
+    def real_unembed(M):
+        """
+        The inverse of :meth:`real_embed`.
+        """
+        return M
+
+
+class RealSymmetricEJA(RealMatrixEuclideanJordanAlgebra):
     """
     The rank-n simple EJA consisting of real symmetric n-by-n
     matrices, the usual symmetric Jordan product, and the trace inner
@@ -1114,30 +1140,6 @@ class RealSymmetricEJA(MatrixEuclideanJordanAlgebra):
     def _max_test_case_size():
         return 5 # Dimension 10
 
-    @staticmethod
-    def real_embed(M):
-        """
-        Embed the matrix ``M`` into a space of real matrices.
-
-        The matrix ``M`` can have entries in any field at the moment:
-        the real numbers, complex numbers, or quaternions. And although
-        they are not a field, we can probably support octonions at some
-        point, too. This function returns a real matrix that "acts like"
-        the original with respect to matrix multiplication; i.e.
-
-          real_embed(M*N) = real_embed(M)*real_embed(N)
-
-        """
-        return M
-
-
-    @staticmethod
-    def real_unembed(M):
-        """
-        The inverse of :meth:`real_embed`.
-        """
-        return M
-
 
 
 class ComplexMatrixEuclideanJordanAlgebra(MatrixEuclideanJordanAlgebra):