sympy/sympy — pull request #1392 by ness01 (2012-06-29 09:03:27+00:00)
Title: Agca9

This pull request may look like a bit of a mixture of stuff. It probably looks more sensible if you think of it as setting the stage for an alternative implementation of `ratsimpmodprime` (which I have written, and will present in a later pull request together with additions to trigsimp). As such this PR provides both new functionality, and several optimizations. In particular:

- new functionality: intersection and quotient of submodules
- optimizations: more efficient/careful conversion
- optimizations: rewritten groebner basis code, implement the "sugar cube" strategy
- new functionality/optimizations: implement extended groebner algorithm (with transition matrices provided)
- new functionality: reduced and non-reduced buchberger normal forms
- new functionality/optimization: implement, and use by default, term-over-position (non-elimination) orders for modules

While the new functionality is nice, I think the most crucial part of this PR is the optimizations ... improving speed by orders of magnitude in some cases.