[GiNaC-list] [patch] Add 'algo' parameter to matrix::rank()

Richard B. Kreckel kreckel at in.terlu.de
Sun Jun 10 14:01:16 CEST 2018


On 06/07/2018 05:39 PM, Vitaly Magerya wrote:
> Hi, folks. Currently matrix::rank() is hardcoded to use Bareiss
> elimination, which for some matrices is way too slow (and I had
> to work around this limitation in my own code). I propose adding
> an argument that will allow users to select which elimination
> scheme to use. The argument is the same as matrix::solve() takes
> (so, solve_algo::*).
> 
> I've tried to mimic how a similar argument was added to
> matrix::inverse() by keeping the current set of rank() functions
> and defining separate ones with the 'algo' argument, with the
> old ones calling the new ones with solve_algo::automatic. This
> is instead of using default argument values.
> 
> I've also put the code that makes the automatic selection of
> the elimination method into a separate function so that both
> matrix::solve() and matrix::rank() could share it. There's a bit
> of similar code in matrix::determinant(), but since the self
> of determinant algorithms is different from the elimination
> algorithms, it's not clear if these two could be unified.

Could you, please, include an update of doc/tutorial/gianc.texi in your
patch? Thanks in advance!

   -richy.


More information about the GiNaC-list mailing list