diff options
author | julie <julielangou@users.noreply.github.com> | 2016-02-23 04:54:53 +0000 |
---|---|---|
committer | julie <julielangou@users.noreply.github.com> | 2016-02-23 04:54:53 +0000 |
commit | f6acdc8d0fd78bd3eb9a7c2c739ed17e62d5b398 (patch) | |
tree | 740a05b862df0192426f1a60632fa8463c938014 /SRC/sgesvdx.f | |
parent | 6ffce6670eda0fed216a250724784f7fcb3fce69 (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.f | 20 |
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) |