]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/TODO
eja: add the AlbertAlgebra to the TODO.
[sage.d.git] / mjo / eja / TODO
index 280811e41761ed62d61a7b54886e88b7795b3d7b..2a13855ac7f3fdfbb61db04adc7649cc200d5fcf 100644 (file)
@@ -1,29 +1,43 @@
-1. Add cartesian products to random_eja().
+1. Add references and start citing them.
 
 
-2. Add references and start citing them.
-
-3. Implement the octonion simple EJA. We don't actually need octonions
+2. Implement the octonion simple EJA. We don't actually need octonions
    for this to work, only their real embedding (some 8x8 monstrosity).
 
    for this to work, only their real embedding (some 8x8 monstrosity).
 
-4. Pre-cache charpoly for some small algebras?
+3. Pre-cache charpoly for some small algebras?
 
 RealSymmetricEJA(4):
 
 sage: F = J.base_ring()
 sage: a0 = (1/4)*X[4]**2*X[6]**2 - (1/2)*X[2]*X[5]*X[6]**2 - (1/2)*X[3]*X[4]*X[6]*X[7] + (F(2).sqrt()/2)*X[1]*X[5]*X[6]*X[7] + (1/4)*X[3]**2*X[7]**2 - (1/2)*X[0]*X[5]*X[7]**2 + (F(2).sqrt()/2)*X[2]*X[3]*X[6]*X[8] - (1/2)*X[1]*X[4]*X[6*X[8] - (1/2)*X[1]*X[3]*X[7]*X[8] + (F(2).sqrt()/2)*X[0]*X[4]*X[7]*X[8] + (1/4)*X[1]**2*X[8]**2 - (1/2)*X[0]*X[2]*X[8]**2 - (1/2)*X[2]*X[3]**2*X[9] + (F(2).sqrt()/2)*X[1]*X[3]*X[4]*X[9] - (1/2)*X[0]*X[4]**2*X[9] - (1/2)*X[1]**2*X[5]*X[9] + X[0]*X[2]*X[5]*X[9]
 
 
 RealSymmetricEJA(4):
 
 sage: F = J.base_ring()
 sage: a0 = (1/4)*X[4]**2*X[6]**2 - (1/2)*X[2]*X[5]*X[6]**2 - (1/2)*X[3]*X[4]*X[6]*X[7] + (F(2).sqrt()/2)*X[1]*X[5]*X[6]*X[7] + (1/4)*X[3]**2*X[7]**2 - (1/2)*X[0]*X[5]*X[7]**2 + (F(2).sqrt()/2)*X[2]*X[3]*X[6]*X[8] - (1/2)*X[1]*X[4]*X[6*X[8] - (1/2)*X[1]*X[3]*X[7]*X[8] + (F(2).sqrt()/2)*X[0]*X[4]*X[7]*X[8] + (1/4)*X[1]**2*X[8]**2 - (1/2)*X[0]*X[2]*X[8]**2 - (1/2)*X[2]*X[3]**2*X[9] + (F(2).sqrt()/2)*X[1]*X[3]*X[4]*X[9] - (1/2)*X[0]*X[4]**2*X[9] - (1/2)*X[1]**2*X[5]*X[9] + X[0]*X[2]*X[5]*X[9]
 
-5. Profile the construction of "large" matrix algebras (like the
+4. Profile the construction of "large" matrix algebras (like the
    15-dimensional QuaternionHermitianAlgebra(3)) to find out why
    they're so slow.
 
    15-dimensional QuaternionHermitianAlgebra(3)) to find out why
    they're so slow.
 
-6. Instead of storing a basis multiplication matrix, just make
+5. Instead of storing a basis multiplication matrix, just make
    product_on_basis() a cached method and manually cache its
    entries. The cython cached method lookup should be faster than a
    product_on_basis() a cached method and manually cache its
    entries. The cython cached method lookup should be faster than a
-   python-based matrix lookup anyway.
+   python-based matrix lookup anyway. NOTE: we should still be able
+   to recompute the table somehow. Is this worth it?
 
 
-7. What the ever-loving fuck is this shit?
+6. What the ever-loving fuck is this shit?
 
        sage: O = Octonions(QQ)
        sage: e0 = O.monomial(0)
        sage: e0*[[[[]]]]
        [[[[]]]]*e0
 
        sage: O = Octonions(QQ)
        sage: e0 = O.monomial(0)
        sage: e0*[[[[]]]]
        [[[[]]]]*e0
+
+7. In fact, could my octonion matrix algebra be generalized for any
+   algebra of matrices over the reals whose entries are not real? Then
+   we wouldn't need real embeddings at all. They might even be fricking
+   vector spaces if I did that...
+
+8. Every once in a long while, the test
+
+       sage: set_random_seed()
+       sage: x = random_eja().random_element()
+       sage: x.is_invertible() == (x.det() != 0)
+
+   in eja_element.py returns False.
+
+9. Add an alias for AlbertAlgebra.