Closed rileyjmurray closed 1 year ago
These semantics were set in https://github.com/BallisticLA/RandLAPACK/commit/c0f667ae392bf07b6232eb85f154635e5f909f87 and are tested as of https://github.com/BallisticLA/RandLAPACK/commit/cdedec4ffdd073fe1ba2fe27e442bcf763ebf30e.
We're ambiguous about what a rangefinder is supposed to do when a k-dimensional space is requested, but the input matrix has rank less than k.
In PARLA, we say that we return a column-orthonormal matrix with a number of columns that doesn't exceed the rank of A. In RandLAPACK, we don't make this guarantee. @TeachRaccooon and I spoke today about this discrepancy and suggest adopting the following semantics for
Q = rangefinder(A, k)
:Q
is column-orthonormal and has exactlyk
columns.rank(A) >= k
, thenrange(Q)
is contained inrange(A)
.rank(A) < k
, thenrange(Q)
containsrange(A)
.We should update rangefinder documentation accordingly and take this into account when writing tests for rangefinders (see #41).
Note: these semantics don't work well with a rangefinder based on CQRRPT, which only returns a Q-factor with a number of columns at most the rank of the input.