summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlangou <langou@users.noreply.github.com>2013-08-16 15:03:03 +0000
committerlangou <langou@users.noreply.github.com>2013-08-16 15:03:03 +0000
commite7c915724441cc7bab2d1b3acf6f289c844d6dbe (patch)
tree47518cb5711913217282588c138d1a96b04c1247
parent2c7f5d957a6ea86dcd16d349650915f45dbe594a (diff)
downloadlapack-e7c915724441cc7bab2d1b3acf6f289c844d6dbe.tar.gz
lapack-e7c915724441cc7bab2d1b3acf6f289c844d6dbe.tar.bz2
lapack-e7c915724441cc7bab2d1b3acf6f289c844d6dbe.zip
Fix from Lawrence Mulholland (NAG).
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.
-rw-r--r--SRC/cgeqrt.f2
-rw-r--r--SRC/dgeqrt.f2
-rw-r--r--SRC/sgeqrt.f2
-rw-r--r--SRC/zgeqrt.f2
4 files changed, 4 insertions, 4 deletions
diff --git a/SRC/cgeqrt.f b/SRC/cgeqrt.f
index e1ee0011..f8911af2 100644
--- a/SRC/cgeqrt.f
+++ b/SRC/cgeqrt.f
@@ -173,7 +173,7 @@
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
diff --git a/SRC/dgeqrt.f b/SRC/dgeqrt.f
index 91dfad1e..961af032 100644
--- a/SRC/dgeqrt.f
+++ b/SRC/dgeqrt.f
@@ -173,7 +173,7 @@
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
diff --git a/SRC/sgeqrt.f b/SRC/sgeqrt.f
index 0efc07b8..2bc3c493 100644
--- a/SRC/sgeqrt.f
+++ b/SRC/sgeqrt.f
@@ -173,7 +173,7 @@
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
diff --git a/SRC/zgeqrt.f b/SRC/zgeqrt.f
index 0decf114..934099fd 100644
--- a/SRC/zgeqrt.f
+++ b/SRC/zgeqrt.f
@@ -173,7 +173,7 @@
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