Define type conversions explicitly (Reference-LAPACK PR 703)
This commit is contained in:
parent
ec0ae034bc
commit
35295912a3
|
@ -238,7 +238,7 @@
|
|||
$ GO TO 40
|
||||
IF( I.LT.ILO )
|
||||
$ I = ILO - II
|
||||
K = SCALE( I )
|
||||
K = INT( SCALE( I ) )
|
||||
IF( K.EQ.I )
|
||||
$ GO TO 40
|
||||
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||
|
@ -252,7 +252,7 @@
|
|||
$ GO TO 50
|
||||
IF( I.LT.ILO )
|
||||
$ I = ILO - II
|
||||
K = SCALE( I )
|
||||
K = INT( SCALE( I ) )
|
||||
IF( K.EQ.I )
|
||||
$ GO TO 50
|
||||
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||
|
|
|
@ -282,7 +282,7 @@
|
|||
*
|
||||
CALL CHSEQR( 'S', JOBVS, N, 1, N, A, LDA, W, VS, LDVS,
|
||||
$ WORK, -1, IEVAL )
|
||||
HSWORK = REAL( WORK( 1 ) )
|
||||
HSWORK = INT( WORK( 1 ) )
|
||||
*
|
||||
IF( .NOT.WANTVS ) THEN
|
||||
MAXWRK = MAX( MAXWRK, HSWORK )
|
||||
|
|
|
@ -337,7 +337,7 @@
|
|||
*
|
||||
CALL CHSEQR( 'S', JOBVS, N, 1, N, A, LDA, W, VS, LDVS,
|
||||
$ WORK, -1, IEVAL )
|
||||
HSWORK = REAL( WORK( 1 ) )
|
||||
HSWORK = INT( WORK( 1 ) )
|
||||
*
|
||||
IF( .NOT.WANTVS ) THEN
|
||||
MAXWRK = MAX( MAXWRK, HSWORK )
|
||||
|
|
|
@ -704,11 +704,11 @@
|
|||
IF ( LQUERY ) THEN
|
||||
CALL CGEQP3( M, N, A, LDA, IWORK, CDUMMY, CDUMMY, -1,
|
||||
$ RDUMMY, IERR )
|
||||
LWRK_CGEQP3 = REAL( CDUMMY(1) )
|
||||
LWRK_CGEQP3 = INT( CDUMMY(1) )
|
||||
CALL CGEQRF( N, N, A, LDA, CDUMMY, CDUMMY,-1, IERR )
|
||||
LWRK_CGEQRF = REAL( CDUMMY(1) )
|
||||
LWRK_CGEQRF = INT( CDUMMY(1) )
|
||||
CALL CGELQF( N, N, A, LDA, CDUMMY, CDUMMY,-1, IERR )
|
||||
LWRK_CGELQF = REAL( CDUMMY(1) )
|
||||
LWRK_CGELQF = INT( CDUMMY(1) )
|
||||
END IF
|
||||
MINWRK = 2
|
||||
OPTWRK = 2
|
||||
|
@ -724,7 +724,7 @@
|
|||
IF ( LQUERY ) THEN
|
||||
CALL CGESVJ( 'L', 'N', 'N', N, N, A, LDA, SVA, N, V,
|
||||
$ LDV, CDUMMY, -1, RDUMMY, -1, IERR )
|
||||
LWRK_CGESVJ = REAL( CDUMMY(1) )
|
||||
LWRK_CGESVJ = INT( CDUMMY(1) )
|
||||
IF ( ERREST ) THEN
|
||||
OPTWRK = MAX( N+LWRK_CGEQP3, N**2+LWCON,
|
||||
$ N+LWRK_CGEQRF, LWRK_CGESVJ )
|
||||
|
@ -760,10 +760,10 @@
|
|||
IF ( LQUERY ) THEN
|
||||
CALL CGESVJ( 'L', 'U', 'N', N,N, U, LDU, SVA, N, A,
|
||||
$ LDA, CDUMMY, -1, RDUMMY, -1, IERR )
|
||||
LWRK_CGESVJ = REAL( CDUMMY(1) )
|
||||
LWRK_CGESVJ = INT( CDUMMY(1) )
|
||||
CALL CUNMLQ( 'L', 'C', N, N, N, A, LDA, CDUMMY,
|
||||
$ V, LDV, CDUMMY, -1, IERR )
|
||||
LWRK_CUNMLQ = REAL( CDUMMY(1) )
|
||||
LWRK_CUNMLQ = INT( CDUMMY(1) )
|
||||
IF ( ERREST ) THEN
|
||||
OPTWRK = MAX( N+LWRK_CGEQP3, LWCON, LWRK_CGESVJ,
|
||||
$ N+LWRK_CGELQF, 2*N+LWRK_CGEQRF,
|
||||
|
@ -799,10 +799,10 @@
|
|||
IF ( LQUERY ) THEN
|
||||
CALL CGESVJ( 'L', 'U', 'N', N,N, U, LDU, SVA, N, A,
|
||||
$ LDA, CDUMMY, -1, RDUMMY, -1, IERR )
|
||||
LWRK_CGESVJ = REAL( CDUMMY(1) )
|
||||
LWRK_CGESVJ = INT( CDUMMY(1) )
|
||||
CALL CUNMQR( 'L', 'N', M, N, N, A, LDA, CDUMMY, U,
|
||||
$ LDU, CDUMMY, -1, IERR )
|
||||
LWRK_CUNMQRM = REAL( CDUMMY(1) )
|
||||
LWRK_CUNMQRM = INT( CDUMMY(1) )
|
||||
IF ( ERREST ) THEN
|
||||
OPTWRK = N + MAX( LWRK_CGEQP3, LWCON, N+LWRK_CGEQRF,
|
||||
$ LWRK_CGESVJ, LWRK_CUNMQRM )
|
||||
|
@ -861,26 +861,26 @@
|
|||
IF ( LQUERY ) THEN
|
||||
CALL CUNMQR( 'L', 'N', M, N, N, A, LDA, CDUMMY, U,
|
||||
$ LDU, CDUMMY, -1, IERR )
|
||||
LWRK_CUNMQRM = REAL( CDUMMY(1) )
|
||||
LWRK_CUNMQRM = INT( CDUMMY(1) )
|
||||
CALL CUNMQR( 'L', 'N', N, N, N, A, LDA, CDUMMY, U,
|
||||
$ LDU, CDUMMY, -1, IERR )
|
||||
LWRK_CUNMQR = REAL( CDUMMY(1) )
|
||||
LWRK_CUNMQR = INT( CDUMMY(1) )
|
||||
IF ( .NOT. JRACC ) THEN
|
||||
CALL CGEQP3( N,N, A, LDA, IWORK, CDUMMY,CDUMMY, -1,
|
||||
$ RDUMMY, IERR )
|
||||
LWRK_CGEQP3N = REAL( CDUMMY(1) )
|
||||
LWRK_CGEQP3N = INT( CDUMMY(1) )
|
||||
CALL CGESVJ( 'L', 'U', 'N', N, N, U, LDU, SVA,
|
||||
$ N, V, LDV, CDUMMY, -1, RDUMMY, -1, IERR )
|
||||
LWRK_CGESVJ = REAL( CDUMMY(1) )
|
||||
LWRK_CGESVJ = INT( CDUMMY(1) )
|
||||
CALL CGESVJ( 'U', 'U', 'N', N, N, U, LDU, SVA,
|
||||
$ N, V, LDV, CDUMMY, -1, RDUMMY, -1, IERR )
|
||||
LWRK_CGESVJU = REAL( CDUMMY(1) )
|
||||
LWRK_CGESVJU = INT( CDUMMY(1) )
|
||||
CALL CGESVJ( 'L', 'U', 'V', N, N, U, LDU, SVA,
|
||||
$ N, V, LDV, CDUMMY, -1, RDUMMY, -1, IERR )
|
||||
LWRK_CGESVJV = REAL( CDUMMY(1) )
|
||||
LWRK_CGESVJV = INT( CDUMMY(1) )
|
||||
CALL CUNMLQ( 'L', 'C', N, N, N, A, LDA, CDUMMY,
|
||||
$ V, LDV, CDUMMY, -1, IERR )
|
||||
LWRK_CUNMLQ = REAL( CDUMMY(1) )
|
||||
LWRK_CUNMLQ = INT( CDUMMY(1) )
|
||||
IF ( ERREST ) THEN
|
||||
OPTWRK = MAX( N+LWRK_CGEQP3, N+LWCON,
|
||||
$ 2*N+N**2+LWCON, 2*N+LWRK_CGEQRF,
|
||||
|
@ -909,13 +909,13 @@
|
|||
ELSE
|
||||
CALL CGESVJ( 'L', 'U', 'V', N, N, U, LDU, SVA,
|
||||
$ N, V, LDV, CDUMMY, -1, RDUMMY, -1, IERR )
|
||||
LWRK_CGESVJV = REAL( CDUMMY(1) )
|
||||
LWRK_CGESVJV = INT( CDUMMY(1) )
|
||||
CALL CUNMQR( 'L', 'N', N, N, N, CDUMMY, N, CDUMMY,
|
||||
$ V, LDV, CDUMMY, -1, IERR )
|
||||
LWRK_CUNMQR = REAL( CDUMMY(1) )
|
||||
LWRK_CUNMQR = INT( CDUMMY(1) )
|
||||
CALL CUNMQR( 'L', 'N', M, N, N, A, LDA, CDUMMY, U,
|
||||
$ LDU, CDUMMY, -1, IERR )
|
||||
LWRK_CUNMQRM = REAL( CDUMMY(1) )
|
||||
LWRK_CUNMQRM = INT( CDUMMY(1) )
|
||||
IF ( ERREST ) THEN
|
||||
OPTWRK = MAX( N+LWRK_CGEQP3, N+LWCON,
|
||||
$ 2*N+LWRK_CGEQRF, 2*N+N**2,
|
||||
|
|
|
@ -253,7 +253,7 @@
|
|||
IF( ILO.EQ.1 )
|
||||
$ GO TO 50
|
||||
DO 40 I = ILO - 1, 1, -1
|
||||
K = RSCALE( I )
|
||||
K = INT( RSCALE( I ) )
|
||||
IF( K.EQ.I )
|
||||
$ GO TO 40
|
||||
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||
|
@ -263,7 +263,7 @@
|
|||
IF( IHI.EQ.N )
|
||||
$ GO TO 70
|
||||
DO 60 I = IHI + 1, N
|
||||
K = RSCALE( I )
|
||||
K = INT( RSCALE( I ) )
|
||||
IF( K.EQ.I )
|
||||
$ GO TO 60
|
||||
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||
|
@ -277,7 +277,7 @@
|
|||
IF( ILO.EQ.1 )
|
||||
$ GO TO 90
|
||||
DO 80 I = ILO - 1, 1, -1
|
||||
K = LSCALE( I )
|
||||
K = INT( LSCALE( I ) )
|
||||
IF( K.EQ.I )
|
||||
$ GO TO 80
|
||||
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||
|
@ -287,7 +287,7 @@
|
|||
IF( IHI.EQ.N )
|
||||
$ GO TO 110
|
||||
DO 100 I = IHI + 1, N
|
||||
K = LSCALE( I )
|
||||
K = INT( LSCALE( I ) )
|
||||
IF( K.EQ.I )
|
||||
$ GO TO 100
|
||||
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
|
||||
|
|
|
@ -535,7 +535,7 @@
|
|||
IRAB = ICAMAX( N-ILO+1, B( I, ILO ), LDB )
|
||||
RAB = MAX( RAB, ABS( B( I, IRAB+ILO-1 ) ) )
|
||||
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 )
|
||||
LSCALE( I ) = SCLFAC**IR
|
||||
ICAB = ICAMAX( IHI, A( 1, I ), 1 )
|
||||
|
@ -543,7 +543,7 @@
|
|||
ICAB = ICAMAX( IHI, B( 1, I ), 1 )
|
||||
CAB = MAX( CAB, ABS( B( ICAB, I ) ) )
|
||||
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 )
|
||||
RSCALE( I ) = SCLFAC**JC
|
||||
360 CONTINUE
|
||||
|
|
|
@ -289,7 +289,7 @@
|
|||
*
|
||||
CALL CGGQRF( N, M, P, A, LDA, WORK, B, LDB, WORK( M+1 ),
|
||||
$ WORK( M+NP+1 ), LWORK-M-NP, INFO )
|
||||
LOPT = REAL( WORK( M+NP+1 ) )
|
||||
LOPT = INT( WORK( M+NP+1 ) )
|
||||
*
|
||||
* Update left-hand-side vector d = Q**H*d = ( d1 ) M
|
||||
* ( d2 ) N-M
|
||||
|
|
|
@ -511,7 +511,7 @@
|
|||
*
|
||||
IF( JJ.GT.0 ) THEN
|
||||
DO I = JJ, 1, -1
|
||||
C = DBLE( A( J+1+I, J ) )
|
||||
C = REAL( A( J+1+I, J ) )
|
||||
CALL CROT( IHI-TOP, A( TOP+1, J+I+1 ), 1,
|
||||
$ A( TOP+1, J+I ), 1, C,
|
||||
$ -CONJG( B( J+1+I, J ) ) )
|
||||
|
|
|
@ -276,7 +276,7 @@
|
|||
*
|
||||
CALL CGGRQF( P, M, N, B, LDB, WORK, A, LDA, WORK( P+1 ),
|
||||
$ WORK( P+MN+1 ), LWORK-P-MN, INFO )
|
||||
LOPT = REAL( WORK( P+MN+1 ) )
|
||||
LOPT = INT( WORK( P+MN+1 ) )
|
||||
*
|
||||
* Update c = Z**H *c = ( c1 ) N-P
|
||||
* ( c2 ) M+P-N
|
||||
|
|
|
@ -276,7 +276,7 @@
|
|||
* QR factorization of N-by-M matrix A: A = Q*R
|
||||
*
|
||||
CALL CGEQRF( N, M, A, LDA, TAUA, WORK, LWORK, INFO )
|
||||
LOPT = REAL( WORK( 1 ) )
|
||||
LOPT = INT( WORK( 1 ) )
|
||||
*
|
||||
* Update B := Q**H*B.
|
||||
*
|
||||
|
|
|
@ -360,9 +360,9 @@
|
|||
CALL CHEGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
|
||||
CALL CHEEVD( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, LRWORK,
|
||||
$ IWORK, LIWORK, INFO )
|
||||
LOPT = MAX( REAL( LOPT ), REAL( WORK( 1 ) ) )
|
||||
LROPT = MAX( REAL( LROPT ), REAL( RWORK( 1 ) ) )
|
||||
LIOPT = MAX( REAL( LIOPT ), REAL( IWORK( 1 ) ) )
|
||||
LOPT = INT( MAX( REAL( LOPT ), REAL( WORK( 1 ) ) ) )
|
||||
LROPT = INT( MAX( REAL( LROPT ), REAL( RWORK( 1 ) ) ) )
|
||||
LIOPT = INT( MAX( REAL( LIOPT ), REAL( IWORK( 1 ) ) ) )
|
||||
*
|
||||
IF( WANTZ .AND. INFO.EQ.0 ) THEN
|
||||
*
|
||||
|
|
|
@ -280,7 +280,7 @@
|
|||
LWKOPT = 1
|
||||
ELSE
|
||||
CALL CHETRF_RK( UPLO, N, A, LDA, E, IPIV, WORK, -1, INFO )
|
||||
LWKOPT = REAL( WORK(1) )
|
||||
LWKOPT = INT( WORK( 1 ) )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
END IF
|
||||
|
|
|
@ -335,9 +335,9 @@
|
|||
CALL CHPGST( ITYPE, UPLO, N, AP, BP, INFO )
|
||||
CALL CHPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, RWORK,
|
||||
$ LRWORK, IWORK, LIWORK, INFO )
|
||||
LWMIN = MAX( REAL( LWMIN ), REAL( WORK( 1 ) ) )
|
||||
LRWMIN = MAX( REAL( LRWMIN ), REAL( RWORK( 1 ) ) )
|
||||
LIWMIN = MAX( REAL( LIWMIN ), REAL( IWORK( 1 ) ) )
|
||||
LWMIN = INT( MAX( REAL( LWMIN ), REAL( WORK( 1 ) ) ) )
|
||||
LRWMIN = INT( MAX( REAL( LRWMIN ), REAL( RWORK( 1 ) ) ) )
|
||||
LIWMIN = INT( MAX( REAL( LIWMIN ), REAL( IWORK( 1 ) ) ) )
|
||||
*
|
||||
IF( WANTZ ) THEN
|
||||
*
|
||||
|
|
|
@ -223,7 +223,7 @@
|
|||
LWKOPT = 1
|
||||
ELSE
|
||||
CALL CSYTRF( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
|
||||
LWKOPT = REAL( WORK(1) )
|
||||
LWKOPT = INT( WORK( 1 ) )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
END IF
|
||||
|
|
|
@ -280,7 +280,7 @@
|
|||
LWKOPT = 1
|
||||
ELSE
|
||||
CALL CSYTRF_RK( UPLO, N, A, LDA, E, IPIV, WORK, -1, INFO )
|
||||
LWKOPT = REAL( WORK(1) )
|
||||
LWKOPT = INT( WORK( 1 ) )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
END IF
|
||||
|
|
|
@ -256,7 +256,7 @@
|
|||
LWKOPT = 1
|
||||
ELSE
|
||||
CALL CSYTRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
|
||||
LWKOPT = REAL( WORK(1) )
|
||||
LWKOPT = INT( WORK( 1 ) )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
END IF
|
||||
|
|
|
@ -233,7 +233,7 @@
|
|||
END IF
|
||||
END IF
|
||||
END IF
|
||||
LWKOPT = REAL( WORK( 1 ) )
|
||||
LWKOPT = INT( WORK( 1 ) )
|
||||
LWKOPT = MAX (LWKOPT, MN)
|
||||
END IF
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue