LAPACK Archives

[Lapack] Error in version 3.2 DLASQ2


  The introductory comments to DLASQ2 state that if INFO = 2, the algorithm 
failed because the current block of Z was not diagonalized after 30*N 
iterations (in inner while loop).    The inner while loop is only executed if 
NBIG > 0.  NBIG = 30 * (N0 -I0 + 1) so the inner while loop is only executed if 
I0 <= N0.  In order for the inner while loop not to fail I0 must become greater 
than N0 causing a GO TO 150 to be executed. Inside the inner while loop the 
call to DLASQ3 only uses I0 and N0 as input arguments leaving them unchanged.  
In the IF (PP  .EQ. 0 .AND. N0 - I0 .GE. 3) clause,  SPLT can only be set to I0 
- 1 or I4/4.  I4 has a maximum value of 4*(N0-3), so the statement I0 = SPLT +1 
either leaves I0 unchanged or increases it up to a maximum value of N0 - 2.  In 
summary, the inner while loop is entered by values of I0 <= N0, but the 
execution of the inner while loop can only increase I0 up to a maximum of N0 - 
2, so the statement IF (I0 .GT. N0) GO TO 150 needed to prevent an inner loop 
failure will never be executed.  Therefore, the inner while loop always fails.


                           William Gandler
-------------- next part --------------
An HTML attachment was scrubbed...

<Prev in Thread] Current Thread [Next in Thread>
  • [Lapack] Error in version 3.2 DLASQ2, Gandler, William (NIH/CIT) [E] <=

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