From 64b496b25e36f82a259721b111440bac09a243aa Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Tue, 7 Apr 2026 10:56:25 -0400 Subject: [PATCH] mjo/matrix_algebra.py: special case for OctonionAlgebra 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 | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/mjo/matrix_algebra.py b/mjo/matrix_algebra.py index 6950b7b..eff1835 100644 --- a/mjo/matrix_algebra.py +++ b/mjo/matrix_algebra.py @@ -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) -- 2.53.0