Skip to content

Commit 4ab4d6f

Browse files
authored
Merge pull request #3827 from martin-frbg/lapack703-2
Define type conversions in LAPACK explicitly (Reference-LAPACK PR 703)
2 parents ec0ae03 + 4e60737 commit 4ab4d6f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+149
-143
lines changed

lapack-netlib/SRC/cgebak.f

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ SUBROUTINE CGEBAK( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV,
238238
$ GO TO 40
239239
IF( I.LT.ILO )
240240
$ I = ILO - II
241-
K = SCALE( I )
241+
K = INT( SCALE( I ) )
242242
IF( K.EQ.I )
243243
$ GO TO 40
244244
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
@@ -252,7 +252,7 @@ SUBROUTINE CGEBAK( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV,
252252
$ GO TO 50
253253
IF( I.LT.ILO )
254254
$ I = ILO - II
255-
K = SCALE( I )
255+
K = INT( SCALE( I ) )
256256
IF( K.EQ.I )
257257
$ GO TO 50
258258
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )

lapack-netlib/SRC/cgees.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ SUBROUTINE CGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, W, VS,
282282
*
283283
CALL CHSEQR( 'S', JOBVS, N, 1, N, A, LDA, W, VS, LDVS,
284284
$ WORK, -1, IEVAL )
285-
HSWORK = REAL( WORK( 1 ) )
285+
HSWORK = INT( WORK( 1 ) )
286286
*
287287
IF( .NOT.WANTVS ) THEN
288288
MAXWRK = MAX( MAXWRK, HSWORK )

lapack-netlib/SRC/cgeesx.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ SUBROUTINE CGEESX( JOBVS, SORT, SELECT, SENSE, N, A, LDA, SDIM, W,
337337
*
338338
CALL CHSEQR( 'S', JOBVS, N, 1, N, A, LDA, W, VS, LDVS,
339339
$ WORK, -1, IEVAL )
340-
HSWORK = REAL( WORK( 1 ) )
340+
HSWORK = INT( WORK( 1 ) )
341341
*
342342
IF( .NOT.WANTVS ) THEN
343343
MAXWRK = MAX( MAXWRK, HSWORK )

lapack-netlib/SRC/cgejsv.f

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -704,11 +704,11 @@ SUBROUTINE CGEJSV( JOBA, JOBU, JOBV, JOBR, JOBT, JOBP,
704704
IF ( LQUERY ) THEN
705705
CALL CGEQP3( M, N, A, LDA, IWORK, CDUMMY, CDUMMY, -1,
706706
$ RDUMMY, IERR )
707-
LWRK_CGEQP3 = REAL( CDUMMY(1) )
707+
LWRK_CGEQP3 = INT( CDUMMY(1) )
708708
CALL CGEQRF( N, N, A, LDA, CDUMMY, CDUMMY,-1, IERR )
709-
LWRK_CGEQRF = REAL( CDUMMY(1) )
709+
LWRK_CGEQRF = INT( CDUMMY(1) )
710710
CALL CGELQF( N, N, A, LDA, CDUMMY, CDUMMY,-1, IERR )
711-
LWRK_CGELQF = REAL( CDUMMY(1) )
711+
LWRK_CGELQF = INT( CDUMMY(1) )
712712
END IF
713713
MINWRK = 2
714714
OPTWRK = 2
@@ -724,7 +724,7 @@ SUBROUTINE CGEJSV( JOBA, JOBU, JOBV, JOBR, JOBT, JOBP,
724724
IF ( LQUERY ) THEN
725725
CALL CGESVJ( 'L', 'N', 'N', N, N, A, LDA, SVA, N, V,
726726
$ LDV, CDUMMY, -1, RDUMMY, -1, IERR )
727-
LWRK_CGESVJ = REAL( CDUMMY(1) )
727+
LWRK_CGESVJ = INT( CDUMMY(1) )
728728
IF ( ERREST ) THEN
729729
OPTWRK = MAX( N+LWRK_CGEQP3, N**2+LWCON,
730730
$ N+LWRK_CGEQRF, LWRK_CGESVJ )
@@ -760,10 +760,10 @@ SUBROUTINE CGEJSV( JOBA, JOBU, JOBV, JOBR, JOBT, JOBP,
760760
IF ( LQUERY ) THEN
761761
CALL CGESVJ( 'L', 'U', 'N', N,N, U, LDU, SVA, N, A,
762762
$ LDA, CDUMMY, -1, RDUMMY, -1, IERR )
763-
LWRK_CGESVJ = REAL( CDUMMY(1) )
763+
LWRK_CGESVJ = INT( CDUMMY(1) )
764764
CALL CUNMLQ( 'L', 'C', N, N, N, A, LDA, CDUMMY,
765765
$ V, LDV, CDUMMY, -1, IERR )
766-
LWRK_CUNMLQ = REAL( CDUMMY(1) )
766+
LWRK_CUNMLQ = INT( CDUMMY(1) )
767767
IF ( ERREST ) THEN
768768
OPTWRK = MAX( N+LWRK_CGEQP3, LWCON, LWRK_CGESVJ,
769769
$ N+LWRK_CGELQF, 2*N+LWRK_CGEQRF,
@@ -799,10 +799,10 @@ SUBROUTINE CGEJSV( JOBA, JOBU, JOBV, JOBR, JOBT, JOBP,
799799
IF ( LQUERY ) THEN
800800
CALL CGESVJ( 'L', 'U', 'N', N,N, U, LDU, SVA, N, A,
801801
$ LDA, CDUMMY, -1, RDUMMY, -1, IERR )
802-
LWRK_CGESVJ = REAL( CDUMMY(1) )
802+
LWRK_CGESVJ = INT( CDUMMY(1) )
803803
CALL CUNMQR( 'L', 'N', M, N, N, A, LDA, CDUMMY, U,
804804
$ LDU, CDUMMY, -1, IERR )
805-
LWRK_CUNMQRM = REAL( CDUMMY(1) )
805+
LWRK_CUNMQRM = INT( CDUMMY(1) )
806806
IF ( ERREST ) THEN
807807
OPTWRK = N + MAX( LWRK_CGEQP3, LWCON, N+LWRK_CGEQRF,
808808
$ LWRK_CGESVJ, LWRK_CUNMQRM )
@@ -861,26 +861,26 @@ SUBROUTINE CGEJSV( JOBA, JOBU, JOBV, JOBR, JOBT, JOBP,
861861
IF ( LQUERY ) THEN
862862
CALL CUNMQR( 'L', 'N', M, N, N, A, LDA, CDUMMY, U,
863863
$ LDU, CDUMMY, -1, IERR )
864-
LWRK_CUNMQRM = REAL( CDUMMY(1) )
864+
LWRK_CUNMQRM = INT( CDUMMY(1) )
865865
CALL CUNMQR( 'L', 'N', N, N, N, A, LDA, CDUMMY, U,
866866
$ LDU, CDUMMY, -1, IERR )
867-
LWRK_CUNMQR = REAL( CDUMMY(1) )
867+
LWRK_CUNMQR = INT( CDUMMY(1) )
868868
IF ( .NOT. JRACC ) THEN
869869
CALL CGEQP3( N,N, A, LDA, IWORK, CDUMMY,CDUMMY, -1,
870870
$ RDUMMY, IERR )
871-
LWRK_CGEQP3N = REAL( CDUMMY(1) )
871+
LWRK_CGEQP3N = INT( CDUMMY(1) )
872872
CALL CGESVJ( 'L', 'U', 'N', N, N, U, LDU, SVA,
873873
$ N, V, LDV, CDUMMY, -1, RDUMMY, -1, IERR )
874-
LWRK_CGESVJ = REAL( CDUMMY(1) )
874+
LWRK_CGESVJ = INT( CDUMMY(1) )
875875
CALL CGESVJ( 'U', 'U', 'N', N, N, U, LDU, SVA,
876876
$ N, V, LDV, CDUMMY, -1, RDUMMY, -1, IERR )
877-
LWRK_CGESVJU = REAL( CDUMMY(1) )
877+
LWRK_CGESVJU = INT( CDUMMY(1) )
878878
CALL CGESVJ( 'L', 'U', 'V', N, N, U, LDU, SVA,
879879
$ N, V, LDV, CDUMMY, -1, RDUMMY, -1, IERR )
880-
LWRK_CGESVJV = REAL( CDUMMY(1) )
880+
LWRK_CGESVJV = INT( CDUMMY(1) )
881881
CALL CUNMLQ( 'L', 'C', N, N, N, A, LDA, CDUMMY,
882882
$ V, LDV, CDUMMY, -1, IERR )
883-
LWRK_CUNMLQ = REAL( CDUMMY(1) )
883+
LWRK_CUNMLQ = INT( CDUMMY(1) )
884884
IF ( ERREST ) THEN
885885
OPTWRK = MAX( N+LWRK_CGEQP3, N+LWCON,
886886
$ 2*N+N**2+LWCON, 2*N+LWRK_CGEQRF,
@@ -909,13 +909,13 @@ SUBROUTINE CGEJSV( JOBA, JOBU, JOBV, JOBR, JOBT, JOBP,
909909
ELSE
910910
CALL CGESVJ( 'L', 'U', 'V', N, N, U, LDU, SVA,
911911
$ N, V, LDV, CDUMMY, -1, RDUMMY, -1, IERR )
912-
LWRK_CGESVJV = REAL( CDUMMY(1) )
912+
LWRK_CGESVJV = INT( CDUMMY(1) )
913913
CALL CUNMQR( 'L', 'N', N, N, N, CDUMMY, N, CDUMMY,
914914
$ V, LDV, CDUMMY, -1, IERR )
915-
LWRK_CUNMQR = REAL( CDUMMY(1) )
915+
LWRK_CUNMQR = INT( CDUMMY(1) )
916916
CALL CUNMQR( 'L', 'N', M, N, N, A, LDA, CDUMMY, U,
917917
$ LDU, CDUMMY, -1, IERR )
918-
LWRK_CUNMQRM = REAL( CDUMMY(1) )
918+
LWRK_CUNMQRM = INT( CDUMMY(1) )
919919
IF ( ERREST ) THEN
920920
OPTWRK = MAX( N+LWRK_CGEQP3, N+LWCON,
921921
$ 2*N+LWRK_CGEQRF, 2*N+N**2,

lapack-netlib/SRC/cggbak.f

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ SUBROUTINE CGGBAK( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
253253
IF( ILO.EQ.1 )
254254
$ GO TO 50
255255
DO 40 I = ILO - 1, 1, -1
256-
K = RSCALE( I )
256+
K = INT( RSCALE( I ) )
257257
IF( K.EQ.I )
258258
$ GO TO 40
259259
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
@@ -263,7 +263,7 @@ SUBROUTINE CGGBAK( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
263263
IF( IHI.EQ.N )
264264
$ GO TO 70
265265
DO 60 I = IHI + 1, N
266-
K = RSCALE( I )
266+
K = INT( RSCALE( I ) )
267267
IF( K.EQ.I )
268268
$ GO TO 60
269269
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
@@ -277,7 +277,7 @@ SUBROUTINE CGGBAK( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
277277
IF( ILO.EQ.1 )
278278
$ GO TO 90
279279
DO 80 I = ILO - 1, 1, -1
280-
K = LSCALE( I )
280+
K = INT( LSCALE( I ) )
281281
IF( K.EQ.I )
282282
$ GO TO 80
283283
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )
@@ -287,7 +287,7 @@ SUBROUTINE CGGBAK( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
287287
IF( IHI.EQ.N )
288288
$ GO TO 110
289289
DO 100 I = IHI + 1, N
290-
K = LSCALE( I )
290+
K = INT( LSCALE( I ) )
291291
IF( K.EQ.I )
292292
$ GO TO 100
293293
CALL CSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )

lapack-netlib/SRC/cggbal.f

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -535,15 +535,15 @@ SUBROUTINE CGGBAL( JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE,
535535
IRAB = ICAMAX( N-ILO+1, B( I, ILO ), LDB )
536536
RAB = MAX( RAB, ABS( B( I, IRAB+ILO-1 ) ) )
537537
LRAB = INT( LOG10( RAB+SFMIN ) / BASL+ONE )
538-
IR = LSCALE( I ) + SIGN( HALF, LSCALE( I ) )
538+
IR = INT( LSCALE( I ) + SIGN( HALF, LSCALE( I ) ) )
539539
IR = MIN( MAX( IR, LSFMIN ), LSFMAX, LSFMAX-LRAB )
540540
LSCALE( I ) = SCLFAC**IR
541541
ICAB = ICAMAX( IHI, A( 1, I ), 1 )
542542
CAB = ABS( A( ICAB, I ) )
543543
ICAB = ICAMAX( IHI, B( 1, I ), 1 )
544544
CAB = MAX( CAB, ABS( B( ICAB, I ) ) )
545545
LCAB = INT( LOG10( CAB+SFMIN ) / BASL+ONE )
546-
JC = RSCALE( I ) + SIGN( HALF, RSCALE( I ) )
546+
JC = INT( RSCALE( I ) + SIGN( HALF, RSCALE( I ) ) )
547547
JC = MIN( MAX( JC, LSFMIN ), LSFMAX, LSFMAX-LCAB )
548548
RSCALE( I ) = SCLFAC**JC
549549
360 CONTINUE

lapack-netlib/SRC/cggglm.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ SUBROUTINE CGGGLM( N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK,
289289
*
290290
CALL CGGQRF( N, M, P, A, LDA, WORK, B, LDB, WORK( M+1 ),
291291
$ WORK( M+NP+1 ), LWORK-M-NP, INFO )
292-
LOPT = REAL( WORK( M+NP+1 ) )
292+
LOPT = INT( WORK( M+NP+1 ) )
293293
*
294294
* Update left-hand-side vector d = Q**H*d = ( d1 ) M
295295
* ( d2 ) N-M

lapack-netlib/SRC/cgghd3.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ SUBROUTINE CGGHD3( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q,
511511
*
512512
IF( JJ.GT.0 ) THEN
513513
DO I = JJ, 1, -1
514-
C = DBLE( A( J+1+I, J ) )
514+
C = REAL( A( J+1+I, J ) )
515515
CALL CROT( IHI-TOP, A( TOP+1, J+I+1 ), 1,
516516
$ A( TOP+1, J+I ), 1, C,
517517
$ -CONJG( B( J+1+I, J ) ) )

lapack-netlib/SRC/cgglse.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ SUBROUTINE CGGLSE( M, N, P, A, LDA, B, LDB, C, D, X, WORK, LWORK,
276276
*
277277
CALL CGGRQF( P, M, N, B, LDB, WORK, A, LDA, WORK( P+1 ),
278278
$ WORK( P+MN+1 ), LWORK-P-MN, INFO )
279-
LOPT = REAL( WORK( P+MN+1 ) )
279+
LOPT = INT( WORK( P+MN+1 ) )
280280
*
281281
* Update c = Z**H *c = ( c1 ) N-P
282282
* ( c2 ) M+P-N

lapack-netlib/SRC/cggqrf.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ SUBROUTINE CGGQRF( N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK,
276276
* QR factorization of N-by-M matrix A: A = Q*R
277277
*
278278
CALL CGEQRF( N, M, A, LDA, TAUA, WORK, LWORK, INFO )
279-
LOPT = REAL( WORK( 1 ) )
279+
LOPT = INT( WORK( 1 ) )
280280
*
281281
* Update B := Q**H*B.
282282
*

0 commit comments

Comments
 (0)