LAPACK Archives

[Lapack] Bug in LAPACK 3.2 dlarfb.f and likes


Hello Michael,

We definetely will need to investigate this problem at some points. For 
the time being, I have added your bug report to the LAPACK Errata file. 
See: http://www.netlib.org/lapack/Errata/ , bug0035.

Best wishes,
Julien

On Tue, 21 Jul 2009, Chuvelev, Michael wrote:

Hello,
?
I've found a bug in dlarfb.f recently, it can be revealed by dorgql blocked 
algorithm, for instance. I suspect the ordinal tests don't
catch it because too high crosspoint is set in ilaenv.f NX=128. To catch the 
bug:
1) set less crosspoint in line 462 of ilaenv.f, for instance, NX=0
2) compile the testcase attached,
3) use the input data attached
You will have non-orthogonal vectors on the output.
?
?
dlarfb.f has been changed to reduce the number of reflectors needed to be 
applied, but it turns out sometimes we miss the last
reflector to be applied. The newly introduced function iladlr detects last 
non-zero row, but in dlarfb we don't pay attention to the
fact that the elementary reflectors
?
v v v
v v v
v v v
1 v v
? 1 v
??? 1
?
could be kept along with a zero diagonal:
?
v v v
v v v
v v v
0 v v
? 0 v
??? 0
?
which in fact reduce the number of reflectors to be applied, that is we miss 
the last one. I find the following logic appropriate in
this case: substituting line 260 in dlarfb.f
?
??????????????? LASTV = MAX( K, ILADLR( M, K, V, LDV ) )
?
by the line
?
<??????????????? LASTV = MAX( K, ILADLC( M, K, V, LDV ) )+M-K
?
The original LASTV initialization is wrong.
?
?
Best regards,
?
Michael.
?
?

 --------------------------------------------------------------------
Closed Joint Stock Company Intel A/O
Registered legal address: Krylatsky Hills Business Park, 
17 Krylatskaya Str., Bldg 4, Moscow 121614, 
Russian Federation

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.



<Prev in Thread] Current Thread [Next in Thread>


For additional information you may use the LAPACK/ScaLAPACK Forum.
Or one of the mailing lists, or