Skip to content

Make LinBox echelonization compute and cache both row and column rank profiles #40572

@vneiger

Description

@vneiger

Problem Description

Currently, for matrices over a prime field of size 3 to about 2^{26}, the echelonization relies on LinBox and FFLAS-FFPACK routines that compute a reduced row echelon form. The column rank profile (as returned by the pivots method) is deduced from this form, and cached. However, currently, for getting the row rank profile (as returned by the pivot_rows method) one has to transpose the matrix and compute another row echelon form. This was encountered e.g. in #40508 (comment) and leads to a waste of a factor of 2 in cases where one needs both the row and column rank profiles of a matrix. Indeed, FFLAS-FFPACK contains echelonization routines that can reveal both rank profiles simultaneously, at the cost of a single echelonization.

Adding access to these routines in Sage would be beneficial.

@Biffo89 @xcaruso @SriramGDev

Proposed Solution

A good starting point would be to try the solution for the same issue in the branch https://github.com/SriramGDev/sage/tree/f5-linalg-9.8.beta6

Alternatives Considered

Unclear: the row rank profile is not easily deduced from the row echelon form computation if it is not done in a way that preserves the row rank profile.

Additional Information

No response

Is there an existing issue for this?

  • I have searched the existing issues for a bug report that matches the one I want to file, without success.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions