On Sun, 2021-04-25 at 15:07 +0200, Fredrik Johansson wrote: > Hi all, > > I'm looking for benchmark problems for QQbar/AA arithmetic. Ideally such a > problem will: > > * Be reducible to a short program that, apart from using QQbar/AA > operations, is reasonably self-contained. > * Reflect real-world use, i.e. originate from using Sage to solve an actual > mathematical problem, with QQbar/AA arithmetic being a significant > ingredient.
I'm interested in Gram-Schmidt and the coordinate_vector() methods that solve linear systems over AA. For a benchmark, you could conjure a set of long vectors with entries in AA/QQbar, and orthonormalize them using the kindergarten algorithm that everyone knows. That will leave a linearly-independent set, and if you keep the input/output indices matched up, will let you know which of the input vectors correspond to that linearly independent set. Call the set of those input vectors "X". Then to benchmark the coordinate_vector() methods, you can generate random elements in W=span(X), and solve the system to find their W-coordinates in terms of the basis X. (Using the de-orthonormalized vectors as the basis makes the system harder to solve, and more representative of the general case.) Unimportant background information: A Euclidean Jordan algebra (EJA) is a real vector space where every element "x" has a self-adjoint "left multiplication by x" operation that I'll write L_x. It turns out that every EJA is a mishmash of various Hermitian matrix algebras, which is nice, because it lets you think of their elements as being some concrete object rather than just an abstract vector space element. For example, the space of real symmetric matrices with L_x(y) := (xy + yx)/2 induces an EJA. But when people think of a symmetric matrix, they're thinking of it in terms of the standard basis, which leads to a problem; namely that the basis [1 0] [0 1] [0 0] [0 0], [1 0], [0 1] for S^2 is not normalized. This raises a problem: while L_x is always self-adjoint, its matrix representation won't be symmetric unless your basis is orthonormal. And you need its matrix to be symmetric if you want to do anything cool with it in sage, because sage assumes that when you have a matrix full of numbers, they're with respect to the standard basis. In short, this means that a sqrt(2) must become involved, and the "2" isn't special. Here's where Gram-Schmidt comes in. Afterwards, matrices aren't vectors in sage, so converting back and forth between matrix/vector representations involves a lot of to_vector() and coordinate_vector() over AA. Things get worse: when constructing a subalgebra, its basis needs to be orthonormalized as well, and we need to be able to convert back and forth between the orthonormalized superalgebra coordinates and the orthonormalized subalgebra coordinates. Thus we wind up orthonormalizing vectors that already have ugly entries, and solving systems with uglier and uglier entries in AA. This is a bottleneck when the algebras get "big," which they do even in simple examples (the Albert algebra has dimension 27). -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/1620f0b7f268a16e477d74f7295d9b1340285604.camel%40orlitzky.com.