> I'm sure that Sage already has code for Weak Popov Form. I > implemented it myself in about 2004 but from the date you can tell > that it was not in Sage (but Magma). > > Indeed, search_src("popov") finds > > matrix/matrix_misc.py:32:def weak_popov_form(M,ascend=True):
That function doesn't compute the weak Popov form, but rather a row reduced form (they are closely related though), see https://trac.sagemath.org/ticket/16888. The algorithm is also quite slow. Together with a student we implemented Mulders and Storjohann's straightforward algorithm [1], see https://trac.sagemath.org/ticket/16742 This implementation is much faster than what is currently in Sage. Unfortunately, the code never got polished and the student moved on to other things, so the code is rotting now. I have semi-unpolished code in my public repo [2] which uses that implementation for shifted Popov form, order basis, etc., allowing the whole host of normal forms and K[x] equation solvers. They work and are tremendously useful, and they are reasonably fast for small-medium matrices. If there is interest and I can get reviewers, I can become motivated to polishing them off for Sage proper. Unfortunately, I tried the implementation on Hermite Normal Form, and it seems worse than the current hermite_normal_form algorithm. In my previous mail I mention the minimal approximant basis algorithm by Giorgi, Jeannerod and Villard. This can be used for asymptotically much faster row reduction computation for large matrices. [1] Mulders, T., and A. Storjohann. 2003. βOn Lattice Reduction for Polynomial Matrices.β Journal of Symbolic Computation 35 (4): 377β401. [2] https://bitbucket.org/jsrn/codinglib -- 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 post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.