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]]
"""
- zero = self.parent().octonions().zero()
+ zero = self.parent().entry_algebra().zero()
l = [[zero for j in range(self.ncols())] for i in range(self.nrows())]
for (k,v) in self.monomial_coefficients().items():
(i,j,e) = k
+----+----+----+
"""
- 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"""
3*e0
"""
- zero = self.parent().octonions().zero()
+ zero = self.parent().entry_algebra().zero()
return sum( (self[i,i] for i in range(self.nrows())), zero )
def matrix_space(self):
I = FiniteEnumeratedSet(range(n))
J = FiniteEnumeratedSet(range(n))
- self._octonions = Octonions(field=field)
- entry_basis = self._octonions.gens()
+ self._entry_algebra = Octonions(field=field)
+ entry_basis = self._entry_algebra.gens()
basis_indices = cartesian_product([I,J,entry_basis])
super().__init__(field,
" over the scalar ring %s" %
(self.nrows(), self.ncols(), self.base_ring()) )
- def octonions(self):
+ def entry_algebra(self):
r"""
- Return the Octonion algebra that our elements' entries come from.
+ Return the algebra that our elements' entries come from.
"""
- return self._octonions
+ return self._entry_algebra
def nrows(self):
return self._nrows
True
"""
- return sum( (self.monomial((i,i,self._octonions.one()))
+ return sum( (self.monomial((i,i,self.entry_algebra().one()))
for i in range(self.nrows()) ),
self.zero() )
# given octonion algebra to ours. Otherwise we can fail
# to convert an element of (for example) Octonions(QQ)
# to Octonions(AA).
- return self.octonions().from_vector(e_ij.to_vector())
+ return self.entry_algebra().from_vector(e_ij.to_vector())
return sum( (self.monomial( (i,j, convert(entries[i][j])) )
for i in range(nrows)