Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rank-revealing QR decomposition #930

Open
loiseaujc opened this issue Feb 6, 2025 · 0 comments
Open

Rank-revealing QR decomposition #930

loiseaujc opened this issue Feb 6, 2025 · 0 comments
Labels
idea Proposition of an idea and opening an issue to discuss it

Comments

@loiseaujc
Copy link

Motivation

The stdlib_linalg module includes the qr decomposition. As far as I know, the stdlib_linalg_lapack module exposes interfaces for xGEQP3 which is the lapack routine for computing the QR with pivot which can be use as a rank-revealing factorization. I don't think it'll be a lot of work to extend the qr interface to allow for switching between the standard qr and the pivoting qr. The updated call to qr could look something like

call qr(A, Q, R, pivots)

where pivots is an integer(ilp), optional, intent(out) dummy argument (possibly allocatable). If pivots is not passed, the driver falls back to the regular qr factorization.

Prior Art

  • Currently, stdlib_linalg exposes qr(A, Q, R, overrite_a, storage, err) which computes only the regular QR factorization.

  • scipy exposes scipy.linalg.qr(a, overwrite_a=False, lwork=None, mode="full", pivoting=False, check_finite=True) for the QR factorization of A. Using pivoting=True returns Q, R, p where p is the vector of pivots.

  • The LinearAlgebra module in Julia exposes LinearAlgebra.qr(A, pivot=NoPivot(); blocksize) -> F where one can switch between regular QR factorization (pivot=NoPivot()) and pivoted QR (pivot=ColumnNorm()).

Additional Information

Pinging @perazz, @jvdp1 and @jalvesz.

@loiseaujc loiseaujc added the idea Proposition of an idea and opening an issue to discuss it label Feb 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
idea Proposition of an idea and opening an issue to discuss it
Projects
None yet
Development

No branches or pull requests

1 participant