-
Notifications
You must be signed in to change notification settings - Fork 474
Description
Description
Under certain conditions the new *LARTG implementations can essentially increase the 2-norm of initial vector. It can lead to significant loss of accuracy of singular vectors or eigenvectors in ScaLAPACK or LAPACK if the matrix size is large enough. The attached test demonstrates the problem. The test is for the single complex precision but the precision doesn’t matter.
In the test 5000 of plane rotations are applied to the vector of length 2 with the initial 2-norm of 10. If the test is linked with the reference LAPACK 3.10 built with
-bash-4.2$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
then the 2-norm of the resulting vector is 0.10001301E+02
-bash-4.2$ gfortran test.f liblapack.a librefblas.a
-bash-4.2$ ./a.out
…
The 2-norm of the first vector =
0.10001301E+02
…
Max of all errors printed above
0.13008118E-02
Everything is excellent with the LAPACK 3.9 clartg and here is the output for the release
-bash-4.2$ ./a.out
...
The 2-norm of the first vector =
0.99999943E+01
..
Error abs(norm of the first column - initial norm )
0.57220459E-05
...
Max of all errors printed above
0.57220459E-05
Checklist
- [
test.zip
] I've included a minimal example to reproduce the issue - I'd be willing to make a PR to solve this issue