ncols = nrows
@cached_method
- def to_list(self):
+ def to_nested_list(self):
r"""
SETUP::
+----+---+---+
| 0 | 0 | 0 |
+----+---+---+
- sage: (E00e0 + 2*E00e3).to_list()
+ sage: (E00e0 + 2*E00e3).to_nested_list()
[[e0 + 2*e3, 0, 0], [0, 0, 0], [0, 0, 0]]
"""
+----+----+----+
"""
- return table(self.to_list(), frame=True)._repr_()
+ return table(self.to_nested_list(), frame=True)._repr_()
+
+
+ def list(self):
+ r"""
+ Return one long list of this matrix's entries.
+
+ SETUP::
+
+ sage: from mjo.octonions import OctonionMatrixAlgebra
+
+ EXAMPLES::
+
+ sage: MS = OctonionMatrixAlgebra(3)
+ sage: E00e0 = MS.gens()[0]
+ sage: E00e3 = MS.gens()[3]
+ sage: (E00e0 + 2*E00e3).to_nested_list()
+ [[e0 + 2*e3, 0, 0], [0, 0, 0], [0, 0, 0]]
+ sage: (E00e0 + 2*E00e3).list()
+ [e0 + 2*e3, 0, 0, 0, 0, 0, 0, 0, 0]
+
+ """
+ return sum( self.to_nested_list(), [] )
def __getitem__(self, indices):
"""
i,j = indices
- return self.to_list()[i][j]
+ return self.to_nested_list()[i][j]
def trace(self):
r"""
zero = self.parent().octonions().zero()
return sum( (self[i,i] for i in range(self.nrows())), zero )
+ def matrix_space(self):
+ r"""
+
+ SETUP::
+
+ sage: from mjo.octonions import OctonionMatrixAlgebra
+
+ TESTS::
+
+ sage: set_random_seed()
+ sage: MS = OctonionMatrixAlgebra(2)
+ sage: MS.random_element().matrix_space()
+ Module of 2 by 2 matrices with octonion entries over the
+ scalar ring Algebraic Real Field
+
+ """
+ return self.parent()
+
+ def is_hermitian(self):
+ r"""
+
+ SETUP::
+
+ sage: from mjo.octonions import OctonionMatrixAlgebra
+
+ EXAMPLES::
+
+ sage: MS = OctonionMatrixAlgebra(3)
+ sage: MS.one().is_hermitian()
+ True
+
+ """
+ return all( self[i,j] == self[j,i].conjugate()
+ for i in range(self.nrows())
+ for j in range(self.ncols()) )
class OctonionMatrixAlgebra(CombinatorialFreeModule):
r"""
prefix=prefix,
bracket='(')
+ def _repr_(self):
+ return ("Module of %d by %d matrices with octonion entries"
+ " over the scalar ring %s" %
+ (self.nrows(), self.ncols(), self.base_ring()) )
+
def octonions(self):
r"""
Return the Octonion algebra that our elements' entries come from.