- Notifications
You must be signed in to change notification settings - Fork 197
Description
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_linalgexposesqr(A, Q, R, overrite_a, storage, err)which computes only the regular QR factorization. -
scipyexposesscipy.linalg.qr(a, overwrite_a=False, lwork=None, mode="full", pivoting=False, check_finite=True)for the QR factorization ofA. Usingpivoting=TruereturnsQ, R, pwherepis the vector of pivots. -
The
LinearAlgebramodule inJuliaexposesLinearAlgebra.qr(A, pivot=NoPivot(); blocksize) -> Fwhere one can switch between regular QR factorization (pivot=NoPivot()) and pivoted QR (pivot=ColumnNorm()).