Define type conversions explicitly (Reference-LAPACK PR 703)
This commit is contained in:
parent
08bc43c73d
commit
e9b0f5a364
|
@ -236,7 +236,7 @@
|
||||||
$ GO TO 40
|
$ GO TO 40
|
||||||
IF( I.LT.ILO )
|
IF( I.LT.ILO )
|
||||||
$ I = ILO - II
|
$ I = ILO - II
|
||||||
K = SCALE( I )
|
K = INT( SCALE( I ) )
|
||||||
IF( K.EQ.I )
|
IF( K.EQ.I )
|
||||||
$ GO TO 40
|
$ GO TO 40
|
||||||
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||||
|
@ -250,7 +250,7 @@
|
||||||
$ GO TO 50
|
$ GO TO 50
|
||||||
IF( I.LT.ILO )
|
IF( I.LT.ILO )
|
||||||
$ I = ILO - II
|
$ I = ILO - II
|
||||||
K = SCALE( I )
|
K = INT( SCALE( I ) )
|
||||||
IF( K.EQ.I )
|
IF( K.EQ.I )
|
||||||
$ GO TO 50
|
$ GO TO 50
|
||||||
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||||
|
|
|
@ -302,7 +302,7 @@
|
||||||
*
|
*
|
||||||
CALL SHSEQR( 'S', JOBVS, N, 1, N, A, LDA, WR, WI, VS, LDVS,
|
CALL SHSEQR( 'S', JOBVS, N, 1, N, A, LDA, WR, WI, VS, LDVS,
|
||||||
$ WORK, -1, IEVAL )
|
$ WORK, -1, IEVAL )
|
||||||
HSWORK = WORK( 1 )
|
HSWORK = INT( WORK( 1 ) )
|
||||||
*
|
*
|
||||||
IF( .NOT.WANTVS ) THEN
|
IF( .NOT.WANTVS ) THEN
|
||||||
MAXWRK = MAX( MAXWRK, N + HSWORK )
|
MAXWRK = MAX( MAXWRK, N + HSWORK )
|
||||||
|
|
|
@ -382,7 +382,7 @@
|
||||||
*
|
*
|
||||||
CALL SHSEQR( 'S', JOBVS, N, 1, N, A, LDA, WR, WI, VS, LDVS,
|
CALL SHSEQR( 'S', JOBVS, N, 1, N, A, LDA, WR, WI, VS, LDVS,
|
||||||
$ WORK, -1, IEVAL )
|
$ WORK, -1, IEVAL )
|
||||||
HSWORK = WORK( 1 )
|
HSWORK = INT( WORK( 1 ) )
|
||||||
*
|
*
|
||||||
IF( .NOT.WANTVS ) THEN
|
IF( .NOT.WANTVS ) THEN
|
||||||
MAXWRK = MAX( MAXWRK, N + HSWORK )
|
MAXWRK = MAX( MAXWRK, N + HSWORK )
|
||||||
|
|
|
@ -252,7 +252,7 @@
|
||||||
$ GO TO 50
|
$ GO TO 50
|
||||||
*
|
*
|
||||||
DO 40 I = ILO - 1, 1, -1
|
DO 40 I = ILO - 1, 1, -1
|
||||||
K = RSCALE( I )
|
K = INT( RSCALE( I ) )
|
||||||
IF( K.EQ.I )
|
IF( K.EQ.I )
|
||||||
$ GO TO 40
|
$ GO TO 40
|
||||||
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||||
|
@ -262,7 +262,7 @@
|
||||||
IF( IHI.EQ.N )
|
IF( IHI.EQ.N )
|
||||||
$ GO TO 70
|
$ GO TO 70
|
||||||
DO 60 I = IHI + 1, N
|
DO 60 I = IHI + 1, N
|
||||||
K = RSCALE( I )
|
K = INT( RSCALE( I ) )
|
||||||
IF( K.EQ.I )
|
IF( K.EQ.I )
|
||||||
$ GO TO 60
|
$ GO TO 60
|
||||||
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||||
|
@ -276,7 +276,7 @@
|
||||||
IF( ILO.EQ.1 )
|
IF( ILO.EQ.1 )
|
||||||
$ GO TO 90
|
$ GO TO 90
|
||||||
DO 80 I = ILO - 1, 1, -1
|
DO 80 I = ILO - 1, 1, -1
|
||||||
K = LSCALE( I )
|
K = INT( LSCALE( I ) )
|
||||||
IF( K.EQ.I )
|
IF( K.EQ.I )
|
||||||
$ GO TO 80
|
$ GO TO 80
|
||||||
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||||
|
@ -286,7 +286,7 @@
|
||||||
IF( IHI.EQ.N )
|
IF( IHI.EQ.N )
|
||||||
$ GO TO 110
|
$ GO TO 110
|
||||||
DO 100 I = IHI + 1, N
|
DO 100 I = IHI + 1, N
|
||||||
K = LSCALE( I )
|
K = INT( LSCALE( I ) )
|
||||||
IF( K.EQ.I )
|
IF( K.EQ.I )
|
||||||
$ GO TO 100
|
$ GO TO 100
|
||||||
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
CALL SSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||||
|
|
|
@ -522,7 +522,7 @@
|
||||||
IRAB = ISAMAX( N-ILO+1, B( I, ILO ), LDB )
|
IRAB = ISAMAX( N-ILO+1, B( I, ILO ), LDB )
|
||||||
RAB = MAX( RAB, ABS( B( I, IRAB+ILO-1 ) ) )
|
RAB = MAX( RAB, ABS( B( I, IRAB+ILO-1 ) ) )
|
||||||
LRAB = INT( LOG10( RAB+SFMIN ) / BASL+ONE )
|
LRAB = INT( LOG10( RAB+SFMIN ) / BASL+ONE )
|
||||||
IR = LSCALE( I ) + SIGN( HALF, LSCALE( I ) )
|
IR = INT( LSCALE( I ) + SIGN( HALF, LSCALE( I ) ) )
|
||||||
IR = MIN( MAX( IR, LSFMIN ), LSFMAX, LSFMAX-LRAB )
|
IR = MIN( MAX( IR, LSFMIN ), LSFMAX, LSFMAX-LRAB )
|
||||||
LSCALE( I ) = SCLFAC**IR
|
LSCALE( I ) = SCLFAC**IR
|
||||||
ICAB = ISAMAX( IHI, A( 1, I ), 1 )
|
ICAB = ISAMAX( IHI, A( 1, I ), 1 )
|
||||||
|
@ -530,7 +530,7 @@
|
||||||
ICAB = ISAMAX( IHI, B( 1, I ), 1 )
|
ICAB = ISAMAX( IHI, B( 1, I ), 1 )
|
||||||
CAB = MAX( CAB, ABS( B( ICAB, I ) ) )
|
CAB = MAX( CAB, ABS( B( ICAB, I ) ) )
|
||||||
LCAB = INT( LOG10( CAB+SFMIN ) / BASL+ONE )
|
LCAB = INT( LOG10( CAB+SFMIN ) / BASL+ONE )
|
||||||
JC = RSCALE( I ) + SIGN( HALF, RSCALE( I ) )
|
JC = INT( RSCALE( I ) + SIGN( HALF, RSCALE( I ) ) )
|
||||||
JC = MIN( MAX( JC, LSFMIN ), LSFMAX, LSFMAX-LCAB )
|
JC = MIN( MAX( JC, LSFMIN ), LSFMAX, LSFMAX-LCAB )
|
||||||
RSCALE( I ) = SCLFAC**JC
|
RSCALE( I ) = SCLFAC**JC
|
||||||
360 CONTINUE
|
360 CONTINUE
|
||||||
|
|
|
@ -288,7 +288,7 @@
|
||||||
*
|
*
|
||||||
CALL SGGQRF( N, M, P, A, LDA, WORK, B, LDB, WORK( M+1 ),
|
CALL SGGQRF( N, M, P, A, LDA, WORK, B, LDB, WORK( M+1 ),
|
||||||
$ WORK( M+NP+1 ), LWORK-M-NP, INFO )
|
$ WORK( M+NP+1 ), LWORK-M-NP, INFO )
|
||||||
LOPT = WORK( M+NP+1 )
|
LOPT = INT( WORK( M+NP+1 ) )
|
||||||
*
|
*
|
||||||
* Update left-hand-side vector d = Q**T*d = ( d1 ) M
|
* Update left-hand-side vector d = Q**T*d = ( d1 ) M
|
||||||
* ( d2 ) N-M
|
* ( d2 ) N-M
|
||||||
|
|
|
@ -276,7 +276,7 @@
|
||||||
*
|
*
|
||||||
CALL SGGRQF( P, M, N, B, LDB, WORK, A, LDA, WORK( P+1 ),
|
CALL SGGRQF( P, M, N, B, LDB, WORK, A, LDA, WORK( P+1 ),
|
||||||
$ WORK( P+MN+1 ), LWORK-P-MN, INFO )
|
$ WORK( P+MN+1 ), LWORK-P-MN, INFO )
|
||||||
LOPT = WORK( P+MN+1 )
|
LOPT = INT( WORK( P+MN+1 ) )
|
||||||
*
|
*
|
||||||
* Update c = Z**T *c = ( c1 ) N-P
|
* Update c = Z**T *c = ( c1 ) N-P
|
||||||
* ( c2 ) M+P-N
|
* ( c2 ) M+P-N
|
||||||
|
|
|
@ -276,7 +276,7 @@
|
||||||
* QR factorization of N-by-M matrix A: A = Q*R
|
* QR factorization of N-by-M matrix A: A = Q*R
|
||||||
*
|
*
|
||||||
CALL SGEQRF( N, M, A, LDA, TAUA, WORK, LWORK, INFO )
|
CALL SGEQRF( N, M, A, LDA, TAUA, WORK, LWORK, INFO )
|
||||||
LOPT = WORK( 1 )
|
LOPT = INT( WORK( 1 ) )
|
||||||
*
|
*
|
||||||
* Update B := Q**T*B.
|
* Update B := Q**T*B.
|
||||||
*
|
*
|
||||||
|
|
|
@ -275,7 +275,7 @@
|
||||||
* RQ factorization of M-by-N matrix A: A = R*Q
|
* RQ factorization of M-by-N matrix A: A = R*Q
|
||||||
*
|
*
|
||||||
CALL SGERQF( M, N, A, LDA, TAUA, WORK, LWORK, INFO )
|
CALL SGERQF( M, N, A, LDA, TAUA, WORK, LWORK, INFO )
|
||||||
LOPT = WORK( 1 )
|
LOPT = INT( WORK( 1 ) )
|
||||||
*
|
*
|
||||||
* Update B := B*Q**T
|
* Update B := B*Q**T
|
||||||
*
|
*
|
||||||
|
|
|
@ -232,7 +232,7 @@
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
LWKOPT = WORK( 1 )
|
LWKOPT = INT( WORK( 1 ) )
|
||||||
LWKOPT = MAX (LWKOPT, MN)
|
LWKOPT = MAX (LWKOPT, MN)
|
||||||
END IF
|
END IF
|
||||||
*
|
*
|
||||||
|
|
|
@ -307,8 +307,8 @@
|
||||||
CALL SSPGST( ITYPE, UPLO, N, AP, BP, INFO )
|
CALL SSPGST( ITYPE, UPLO, N, AP, BP, INFO )
|
||||||
CALL SSPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, IWORK,
|
CALL SSPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, IWORK,
|
||||||
$ LIWORK, INFO )
|
$ LIWORK, INFO )
|
||||||
LWMIN = MAX( REAL( LWMIN ), REAL( WORK( 1 ) ) )
|
LWMIN = INT( MAX( REAL( LWMIN ), REAL( WORK( 1 ) ) ) )
|
||||||
LIWMIN = MAX( REAL( LIWMIN ), REAL( IWORK( 1 ) ) )
|
LIWMIN = INT( MAX( REAL( LIWMIN ), REAL( IWORK( 1 ) ) ) )
|
||||||
*
|
*
|
||||||
IF( WANTZ ) THEN
|
IF( WANTZ ) THEN
|
||||||
*
|
*
|
||||||
|
|
|
@ -330,8 +330,8 @@
|
||||||
CALL SSYGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
|
CALL SSYGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
|
||||||
CALL SSYEVD( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, IWORK, LIWORK,
|
CALL SSYEVD( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, IWORK, LIWORK,
|
||||||
$ INFO )
|
$ INFO )
|
||||||
LOPT = MAX( REAL( LOPT ), REAL( WORK( 1 ) ) )
|
LOPT = INT( MAX( REAL( LOPT ), REAL( WORK( 1 ) ) ) )
|
||||||
LIOPT = MAX( REAL( LIOPT ), REAL( IWORK( 1 ) ) )
|
LIOPT = INT( MAX( REAL( LIOPT ), REAL( IWORK( 1 ) ) ) )
|
||||||
*
|
*
|
||||||
IF( WANTZ .AND. INFO.EQ.0 ) THEN
|
IF( WANTZ .AND. INFO.EQ.0 ) THEN
|
||||||
*
|
*
|
||||||
|
|
|
@ -223,7 +223,7 @@
|
||||||
LWKOPT = 1
|
LWKOPT = 1
|
||||||
ELSE
|
ELSE
|
||||||
CALL SSYTRF( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
|
CALL SSYTRF( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
|
||||||
LWKOPT = WORK(1)
|
LWKOPT = INT( WORK( 1 ) )
|
||||||
END IF
|
END IF
|
||||||
WORK( 1 ) = LWKOPT
|
WORK( 1 ) = LWKOPT
|
||||||
END IF
|
END IF
|
||||||
|
|
|
@ -280,7 +280,7 @@
|
||||||
LWKOPT = 1
|
LWKOPT = 1
|
||||||
ELSE
|
ELSE
|
||||||
CALL SSYTRF_RK( UPLO, N, A, LDA, E, IPIV, WORK, -1, INFO )
|
CALL SSYTRF_RK( UPLO, N, A, LDA, E, IPIV, WORK, -1, INFO )
|
||||||
LWKOPT = WORK(1)
|
LWKOPT = INT( WORK( 1 ) )
|
||||||
END IF
|
END IF
|
||||||
WORK( 1 ) = LWKOPT
|
WORK( 1 ) = LWKOPT
|
||||||
END IF
|
END IF
|
||||||
|
|
|
@ -256,7 +256,7 @@
|
||||||
LWKOPT = 1
|
LWKOPT = 1
|
||||||
ELSE
|
ELSE
|
||||||
CALL SSYTRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
|
CALL SSYTRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
|
||||||
LWKOPT = WORK(1)
|
LWKOPT = INT( WORK( 1 ) )
|
||||||
END IF
|
END IF
|
||||||
WORK( 1 ) = LWKOPT
|
WORK( 1 ) = LWKOPT
|
||||||
END IF
|
END IF
|
||||||
|
|
Loading…
Reference in New Issue