X-Git-Url: http://gitweb.michael.orlitzky.com/?p=sage.d.git;a=blobdiff_plain;f=mjo%2Foctonions.py;h=2850545280b122cb8109324f4b6431ed0f5076ec;hp=073765ccf1ef934ab6d9f6fc59435384bf832f36;hb=d006c2e856b970d2f8e77d738030ef2e63ec5b78;hpb=282312431417150844934782b2431602704d8b89 diff --git a/mjo/octonions.py b/mjo/octonions.py index 073765c..2850545 100644 --- a/mjo/octonions.py +++ b/mjo/octonions.py @@ -7,7 +7,7 @@ from sage.rings.all import AA, ZZ from sage.matrix.matrix_space import MatrixSpace from sage.misc.table import table -from mjo.matrix_algebra import MatrixAlgebra +from mjo.matrix_algebra import HurwitzMatrixAlgebra class Octonion(IndexedFreeModuleElement): def conjugate(self): @@ -141,6 +141,11 @@ class Octonion(IndexedFreeModuleElement): """ return self._norm_squared().sqrt() + # The absolute value notation is typically used for complex numbers... + # and norm() isn't supported in AA, so this lets us use abs() in all + # of the division algebras we need. + abs = norm + def inverse(self): r""" Return the inverse of this element if it exists. @@ -342,7 +347,7 @@ class Octonions(CombinatorialFreeModule): -class OctonionMatrixAlgebra(MatrixAlgebra): +class OctonionMatrixAlgebra(HurwitzMatrixAlgebra): r""" The algebra of ``n``-by-``n`` matrices with octonion entries over (a subfield of) the real numbers. @@ -369,14 +374,24 @@ class OctonionMatrixAlgebra(MatrixAlgebra): sage: O = Octonions(QQ) sage: e0,e1,e2,e3,e4,e5,e6,e7 = O.gens() sage: MS = OctonionMatrixAlgebra(2) - sage: MS.from_list([ [e0+e4, e1+e5], - ....: [e2-e6, e3-e7] ]) + sage: MS([ [e0+e4, e1+e5], + ....: [e2-e6, e3-e7] ]) +---------+---------+ | e0 + e4 | e1 + e5 | +---------+---------+ | e2 - e6 | e3 - e7 | +---------+---------+ + :: + + sage: A1 = OctonionMatrixAlgebra(1,QQ) + sage: A2 = OctonionMatrixAlgebra(1,QQ) + sage: cartesian_product([A1,A2]) + Module of 1 by 1 matrices with entries in Octonion algebra with + base ring Rational Field over the scalar ring Rational Field (+) + Module of 1 by 1 matrices with entries in Octonion algebra with + base ring Rational Field over the scalar ring Rational Field + TESTS:: sage: set_random_seed()