From: Michael Orlitzky Date: Tue, 7 Apr 2026 14:56:25 +0000 (-0400) Subject: mjo/matrix_algebra.py: special case for OctonionAlgebra X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=64b496b25e36f82a259721b111440bac09a243aa;p=sage.d.git 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(). --- 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)