From Lawrence:
The *GEQRT routines are supposed to return immediately when N=0 or M=0.
However the code is such that an INFO = -3 is triggered since we are
trying to satisfy
ELSE IF( NB.LT.1 .OR. NB.GT.MIN(M,N) )THEN
INFO = -3
should be
ELSE IF( NB.LT.1 .OR. ( NB.GT.MIN(M,N) .AND. MIN(M,N).LT.0 ) )THEN
INFO = -3
Also on a side note, I think we could allow NB to be greater than MIN(M,N) in
the interface and then reset NB as needed if the user's NB is too large.
Another day. Good enough for now.
Julien.
INFO = -1
ELSE IF( N.LT.0 ) THEN
INFO = -2
- ELSE IF( NB.LT.1 .OR. NB.GT.MIN(M,N) ) THEN
+ ELSE IF( NB.LT.1 .OR. ( NB.GT.MIN(M,N) .AND. MIN(M,N).LT.0 ) )THEN
INFO = -3
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
INFO = -5
INFO = -1
ELSE IF( N.LT.0 ) THEN
INFO = -2
- ELSE IF( NB.LT.1 .OR. NB.GT.MIN(M,N) ) THEN
+ ELSE IF( NB.LT.1 .OR. ( NB.GT.MIN(M,N) .AND. MIN(M,N).LT.0 ) )THEN
INFO = -3
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
INFO = -5
INFO = -1
ELSE IF( N.LT.0 ) THEN
INFO = -2
- ELSE IF( NB.LT.1 .OR. NB.GT.MIN(M,N) ) THEN
+ ELSE IF( NB.LT.1 .OR. ( NB.GT.MIN(M,N) .AND. MIN(M,N).LT.0 ) )THEN
INFO = -3
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
INFO = -5
INFO = -1
ELSE IF( N.LT.0 ) THEN
INFO = -2
- ELSE IF( NB.LT.1 .OR. NB.GT.MIN(M,N) ) THEN
+ ELSE IF( NB.LT.1 .OR. ( NB.GT.MIN(M,N) .AND. MIN(M,N).LT.0 ) )THEN
INFO = -3
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
INFO = -5