-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
deprecate orthogonal decomposition keyword "thin" to "full" #24279
Conversation
NEWS.md
Outdated
@@ -363,6 +363,9 @@ Deprecated or removed | |||
* The `cholfact`/`cholfact!` methods that accepted an `uplo` symbol have been deprecated | |||
in favor of using `Hermitian` (or `Symmetric`) views ([#22187], [#22188]). | |||
|
|||
* The `thin` keyword argument for orthogonal decomposition methods has | |||
been deprecated in favor of `square` ([#WHATAREBIRDS]). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
([#24279])
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed. Thanks! :)
Absent objections or requests for time, I plan to merge these changes tomorrow. Best! |
NEWS.md
Outdated
@@ -363,6 +363,9 @@ Deprecated or removed | |||
* The `cholfact`/`cholfact!` methods that accepted an `uplo` symbol have been deprecated | |||
in favor of using `Hermitian` (or `Symmetric`) views ([#22187], [#22188]). | |||
|
|||
* The `thin` keyword argument for orthogonal decomposition methods has | |||
been deprecated in favor of `square` ([#24279]). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
which has the opposite meaning: thin=true
if and only if square=false
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good call! Revised accordingly. Thanks!
|
Something about the |
Agreed, |
"Reduced" feels a bit better since it's a reduced dimension factorization. Could you humor me and explain in words what this argument means in full generality? |
For the SVD of a size That as an aside to propose the argument |
I thought the whole point of this terminology change was to use consistent terminology across different factorizations, not just SVD. So what's the explanation for the other ones? The point of this exercise is that if you find the common language to naturally describe what this means in a way that applies to all of the usages, then whatever words you use in that explanation are what you should use for the keyword name. If there is no way to succinctly describe what this does across many usage contexts then we should reconsider whether it's actually the same concept or not. |
It is the same concept, and on second thought I am as happy with |
Which I'm asking for evidence of in the form of a common explanation. |
You can always compute a reduced SVD of an
|
Each of the common orthogonal(/unitary) decompositions comes in several forms. In the canonical form of each, the orthogonal factors are square and thus proper orthogonal matrices (as opposed to rectangular matrices that contain orthonormal columns). For example, in a canonical SVD decomposition USV of m-by-n matrix A, U and V respectively are m-by-m and n-by-n orthogonal (square) matrices while S is m-by-n. Similarly, in a canonical QR decomposition of m-by-n matrix A, Q is an m-by-m orthogonal (square) matrix while R is m-by-n. This canonical form is often called the "full" form. When A is rectangular, this canonical form is wasteful in practice: Computing part of the orthogonal factors is unnecessary, burning both decomposition time and storage. Hence in practice another form is common, wherein only the necessary, rectangular part of the "orthogonal" factors is computed and stored. For example, in this form of SVD decomposition USV of m-by-n matrix A, U is an m-by-n (rather than m-by-m) matrix with orthonormal columns, S is n-by-n (rather than m-by-n), and V is again n-by-n. Similarly, in this form of QR decomposition of m-by-n matrix A, Q is an m-by-n (rather than m-by-m) matrix with orthonormal columns, and R is n-by-n (rather than m-by-n). This form has two common names, seemingly propagated by two classic numerical linear algebra textbooks: Golub & van Loan call such decompositions "thin", while Trefethen & Bau call such decompositions "reduced". Those taught from one tend to prefer the one, and the other the other. There are also distinct "compact" (for efficient decomposition of low-rank matrices) and "truncated" (for approximate low-rank decomposition) forms, separate from those forms at issue here. Does the above clarify? :) |
Perhaps this is the answer? Have a Or in other words: "full" is dead, long live "full"! |
Cheers, |
The term "full" seems clearer to me and if the default is not full, then I think it's even better since the full factorization is something that you need to explicitly ask for. The opposite of "full" could be reduced, but that could just be a matter of terminology rather than the name of a keyword. |
Let's give other linalg types like @Jutho and @andreasnoack a chance to chime in. |
To be clear, I agree that |
Hail to "full"! |
Ok, seems like we have a consensus: everyone seems to like a |
Revised with keyword |
Additional comments? :) Absent objections or requests for time, I plan to merge these changes tomorrow. Best! |
Thanks all! :) |
This pull request deprecates the
thin
keyword argument to orthogonal factorizations in favor ofsquare
, addressing JuliaLang/LinearAlgebra.jl#472. Best!