]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
mjo/matrix_algebra.py: special case for OctonionAlgebra
authorMichael Orlitzky <michael@orlitzky.com>
Tue, 7 Apr 2026 14:56:25 +0000 (10:56 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Tue, 7 Apr 2026 14:56:25 +0000 (10:56 -0400)
Eventually I will switch mjo.hurwitz to use Sage's (new)
OctonionAlgebra class. In preparation, add a special case to deal with
the fact that they have a vector() method but no to_vector().

mjo/matrix_algebra.py

index 6950b7bc4c7c7896822bfecb65b9d6449614909d..eff1835a4d9f0d9f14ec02159e885d7e9a944490 100644 (file)
@@ -322,6 +322,30 @@ class MatrixAlgebra(CombinatorialFreeModule):
             sage: A._entry_algebra_element_to_vector(e[7])
             (0, 0, 0, 0, 0, 0, 0, 1)
 
+        Sage OctonionAlgebra. Eventually this should use
+        ``_entry_algebra_gens()`` once we migrate
+        :cls:`OctonionMatrixAlgebra` to Sage's octonions::
+
+            sage: O = OctonionAlgebra(QQ)
+            sage: A = MatrixAlgebra(1, O, QQ)
+            sage: e = A.entry_algebra().basis()
+            sage: A._entry_algebra_element_to_vector(e[0])
+            (1, 0, 0, 0, 0, 0, 0, 0)
+            sage: A._entry_algebra_element_to_vector(e[1])
+            (0, 1, 0, 0, 0, 0, 0, 0)
+            sage: A._entry_algebra_element_to_vector(e[2])
+            (0, 0, 1, 0, 0, 0, 0, 0)
+            sage: A._entry_algebra_element_to_vector(e[3])
+            (0, 0, 0, 1, 0, 0, 0, 0)
+            sage: A._entry_algebra_element_to_vector(e[4])
+            (0, 0, 0, 0, 1, 0, 0, 0)
+            sage: A._entry_algebra_element_to_vector(e[5])
+            (0, 0, 0, 0, 0, 1, 0, 0)
+            sage: A._entry_algebra_element_to_vector(e[6])
+            (0, 0, 0, 0, 0, 0, 1, 0)
+            sage: A._entry_algebra_element_to_vector(e[7])
+            (0, 0, 0, 0, 0, 0, 0, 1)
+
         Sage matrices::
 
             sage: MS = MatrixSpace(QQ,2)
@@ -333,6 +357,10 @@ class MatrixAlgebra(CombinatorialFreeModule):
         if hasattr(entry, 'to_vector'):
             return entry.to_vector()
 
+        if hasattr(entry, 'vector'):
+            # OctonionAlgebra
+            return entry.vector()
+
         from sage.modules.free_module import FreeModule
         d = len(self.entry_algebra_gens())
         V = FreeModule(self.entry_algebra().base_ring(), d)