aboutsummaryrefslogtreecommitdiff
path: root/SRC/sgesvdx.f
diff options
context:
space:
mode:
authorjulie <julielangou@users.noreply.github.com>2016-02-23 04:54:53 +0000
committerjulie <julielangou@users.noreply.github.com>2016-02-23 04:54:53 +0000
commitf6acdc8d0fd78bd3eb9a7c2c739ed17e62d5b398 (patch)
tree740a05b862df0192426f1a60632fa8463c938014 /SRC/sgesvdx.f
parent6ffce6670eda0fed216a250724784f7fcb3fce69 (diff)
APPLYING INTEL PATCHES sent to Julie on Feb 19th 2016 by Dima from INTEL (dmitry.g.baksheev@intel.com)
Subject: [PATCH 02/42] Fix ?DESVDX: do not fill U/VT beyond NS, and other changes - Typos and comments corrupting doxygen output - LDVT.LT.MINMN may be acceptable when RANGE=='i' - Bug: do not fill U and VT beyond NS - Typo in comment: A is COMPLEX*16 for ZGESVDX
Diffstat (limited to 'SRC/sgesvdx.f')
-rw-r--r--SRC/sgesvdx.f20
1 files changed, 13 insertions, 7 deletions
diff --git a/SRC/sgesvdx.f b/SRC/sgesvdx.f
index 8e439fff..c477d592 100644
--- a/SRC/sgesvdx.f
+++ b/SRC/sgesvdx.f
@@ -169,7 +169,7 @@
*> vectors, stored columnwise) as specified by RANGE; if
*> JOBU = 'N', U is not referenced.
*> Note: The user must ensure that UCOL >= NS; if RANGE = 'V',
-*> the exact value of NS is not known ILQFin advance and an upper
+*> the exact value of NS is not known in advance and an upper
*> bound must be used.
*> \endverbatim
*>
@@ -357,8 +357,14 @@
IF( INFO.EQ.0 ) THEN
IF( WANTU .AND. LDU.LT.M ) THEN
INFO = -15
- ELSE IF( WANTVT .AND. LDVT.LT.MINMN ) THEN
- INFO = -17
+ ELSE IF( WANTVT ) THEN
+ IF( INDS ) THEN
+ IF( LDVT.LT.IU-IL+1 ) THEN
+ INFO = -17
+ END IF
+ ELSE IF( LDVT.LT.MINMN ) THEN
+ INFO = -17
+ END IF
END IF
END IF
END IF
@@ -554,7 +560,7 @@
CALL SCOPY( N, WORK( J ), 1, U( 1,I ), 1 )
J = J + N*2
END DO
- CALL SLASET( 'A', M-N, N, ZERO, ZERO, U( N+1,1 ), LDU )
+ CALL SLASET( 'A', M-N, NS, ZERO, ZERO, U( N+1,1 ), LDU )
*
* Call SORMBR to compute QB*UB.
* (Workspace in WORK( ITEMP ): need N, prefer N*NB)
@@ -623,7 +629,7 @@
CALL SCOPY( N, WORK( J ), 1, U( 1,I ), 1 )
J = J + N*2
END DO
- CALL SLASET( 'A', M-N, N, ZERO, ZERO, U( N+1,1 ), LDU )
+ CALL SLASET( 'A', M-N, NS, ZERO, ZERO, U( N+1,1 ), LDU )
*
* Call SORMBR to compute QB*UB.
* (Workspace in WORK( ITEMP ): need N, prefer N*NB)
@@ -719,7 +725,7 @@
CALL SCOPY( M, WORK( J ), 1, VT( I,1 ), LDVT )
J = J + M*2
END DO
- CALL SLASET( 'A', M, N-M, ZERO, ZERO, VT( 1,M+1 ), LDVT )
+ CALL SLASET( 'A', NS, N-M, ZERO, ZERO, VT( 1,M+1 ), LDVT )
*
* Call SORMBR to compute (VB**T)*(PB**T)
* (Workspace in WORK( ITEMP ): need M, prefer M*NB)
@@ -788,7 +794,7 @@
CALL SCOPY( M, WORK( J ), 1, VT( I,1 ), LDVT )
J = J + M*2
END DO
- CALL SLASET( 'A', M, N-M, ZERO, ZERO, VT( 1,M+1 ), LDVT )
+ CALL SLASET( 'A', NS, N-M, ZERO, ZERO, VT( 1,M+1 ), LDVT )
*
* Call SORMBR to compute VB**T * PB**T
* (Workspace in WORK( ITEMP ): need M, prefer M*NB)