-
Notifications
You must be signed in to change notification settings - Fork 441
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
DBBCSD may compute insufficiently accurate singular vectors #965
Labels
Comments
When testing the code in #406, the issue only occurred in double precision and only for five out of 125,000 randomly generated test matrix pairs. |
this would correspond to 3.10.1 - however the only remotely recent functional change to DBBCSD itself appears to have been the introduction of a more precise value for pi/2 two years earlier |
christoph-conrads
added a commit
to christoph-conrads/lapack
that referenced
this issue
Dec 29, 2023
The tolerance below which matrix entries are considered zero is tightened to avoid insufficiently accurate singular vectors. fixes Reference-LAPACK#965
christoph-conrads
added a commit
to christoph-conrads/lapack
that referenced
this issue
Jan 17, 2024
The tolerance below which matrix entries are considered zero is tightened to avoid insufficiently accurate singular vectors. fixes Reference-LAPACK#965
christoph-conrads
added a commit
to christoph-conrads/lapack
that referenced
this issue
Jan 19, 2024
The tolerance below which matrix entries are considered zero is tightened to avoid insufficiently accurate singular vectors. fixes Reference-LAPACK#965
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Description
The Python code below causes DBBCSD to compute inaccurate left singular vectors.
Given the input matrices
X11
,X21
of the DBBCSD caller DORCSD2BY1, DORCSD2BY1 computes matrices such thatwhere
In the example code below
U2
is inaccurate, whereas all other matrices are computed with sufficient accuracy:The issue was pinned on DBBCSD after stepping through the code with GDB and reducing the threshold value below which off-diagonal entries are considered zero by the Golub-Reinsch-SVD-like algorithm; this fixes the problem.
The issue is present in at least two tested LAPACK releases:
The demo code below requires
Example (the pre-processing step reduces the number of rows of
X11
and makes iterative computation of the singular values superfluous; this allows one to diagnose DBBCSD as the source of the observed inaccuracies):Checklist
The text was updated successfully, but these errors were encountered: