You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Usually, I need to change input file to reproduce error.
My investigation shows, that root-cause is PR 900 with replacement GELQS by GELS (in example of LQ). Behavior of the test is changed a bit (see TESTING/LIN/dchklq.f):
Before: LQT01 is called to factorize matrix by GELQF for every combination of parameters m and n and this factorized matrix is used at any check of test parameter k.
Now: LQT01 is again called to factorize matrix, but later array AF is cleared to A to call GELS since factorization is now performed inside call of GELS. But, unfortunately, if m = n in call of GELS then factorization is done by GEQRF instead GELQF (check SRC/dgels.f). And this is a main difference. For upper triangular matrix QR factorization doing nothing, which lead to failure of test(1) and test(2) on the next iteration of parameter k, since arrays A and AF are equal.
Stable reproduced, if there is only one parameter NB in input file. That's why there are no fails for general input file.
It seems, root-cause is also clear. Test have 2 cycles
DO 40 IK = 1, NK
DO 30 INB = 1, NNB
If NNB >= 2, then factorized matrix becomes correct again, since factorization is performed by LQT01 (or GELQF) due to IK = 1. But if NNB = 1, then factorization is done by GELS, which calls GEQRF for m = n and test fails for next iterations of IK.
Actually, I still have no idea for proper solution to fix this behavior. Construction of the test is complicated. I believe, that we should somehow avoid call of QR in test for LQ.
Hello!
I have been running tests for QR and LQ (
xlintstd_dtest
) and sometimes I have got failures likeUsually, I need to change input file to reproduce error.
My investigation shows, that root-cause is PR 900 with replacement
GELQS
byGELS
(in example of LQ). Behavior of the test is changed a bit (seeTESTING/LIN/dchklq.f
):Before:
LQT01
is called to factorize matrix byGELQF
for every combination of parametersm
andn
and this factorized matrix is used at any check of test parameterk
.Now:
LQT01
is again called to factorize matrix, but later arrayAF
is cleared toA
to callGELS
since factorization is now performed inside call ofGELS
. But, unfortunately, ifm = n
in call ofGELS
then factorization is done byGEQRF
insteadGELQF
(checkSRC/dgels.f
). And this is a main difference. For upper triangular matrix QR factorization doing nothing, which lead to failure oftest(1)
andtest(2)
on the next iteration of parameterk
, since arraysA
andAF
are equal.@angsch please take a look.
Input is attached input qr and lq.txt
The text was updated successfully, but these errors were encountered: