LAPACK Archives

[Lapack] LAPACK 3.1 Bug in ?ormrz.f/?unmrz.f

Hello,

let me notify you about a bug in ?ormrz.f code in LAPACK 3.1 package 
lapack-3.1.0.gz available from www.netlib.org.

For instance, in dormrz.f at line 173 there's a following if-then construct:

         IF( M.EQ.0 .OR. N.EQ.0 ) THEN
            LWKOPT = 1
*
*           Determine the block size.  NB may be at most NBMAX, where
*           NBMAX is used to define the local array T.
*
            NB = MIN( NBMAX, ILAENV( 1, 'DORMRQ', SIDE // TRANS, M, N,
     $                               K, -1 ) )
            LWKOPT = NW*NB
         END IF

In general case - when M, N are not 0, NB and LWKOPT are not initialized. It's 
definitely ELSE statement missed here. The following code looks much better and 
works properly:

         IF( M.EQ.0 .OR. N.EQ.0 ) THEN
            LWKOPT = 1
         ELSE
*
*           Determine the block size.  NB may be at most NBMAX, where
*           NBMAX is used to define the local array T.
*
            NB = MIN( NBMAX, ILAENV( 1, 'DORMRQ', SIDE // TRANS, M, N,
     $                               K, -1 ) )
            LWKOPT = NW*NB
         END IF

The same issue is seems to be with ?unmrz.f also, the difference is that the 
further code computes NB once more, so only LWKOPT isn't determined correctly 
in general case.

Best regards,
 
Michael.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
http://lists.cs.utk.edu/private/lapack/attachments/20070214/50d78562/attachment.html
 

<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