Skip to content

Commit df02000

Browse files
committedFeb 18, 2021
Applies dynamic allocation to all EIG tests
1 parent e4f1988 commit df02000

File tree

3 files changed

+80
-16
lines changed

3 files changed

+80
-16
lines changed
 

Diff for: ‎TESTING/EIG/cchkee.f

+31-5
Original file line numberDiff line numberDiff line change
@@ -1084,12 +1084,16 @@ PROGRAM CCHKEE
10841084
INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ),
10851085
$ ISHFTS( MAXIN ), IACC22( MAXIN )
10861086
REAL ALPHA( NMAX ), BETA( NMAX ), DR( NMAX, 12 ),
1087-
$ RESULT( 500 ), RWORK( LWORK ), S( NMAX*NMAX )
1088-
COMPLEX A( NMAX*NMAX, NEED ), B( NMAX*NMAX, 5 ),
1089-
$ C( NCMAX*NCMAX, NCMAX*NCMAX ), DC( NMAX, 6 ),
1090-
$ TAUA( NMAX ), TAUB( NMAX ), WORK( LWORK ),
1087+
$ RESULT( 500 )
1088+
COMPLEX DC( NMAX, 6 ), TAUA( NMAX ), TAUB( NMAX ),
10911089
$ X( 5*NMAX )
10921090
* ..
1091+
* .. Allocatable Arrays ..
1092+
INTEGER AllocateStatus
1093+
REAL, DIMENSION(:), ALLOCATABLE :: RWORK, S
1094+
COMPLEX, DIMENSION(:), ALLOCATABLE :: WORK
1095+
COMPLEX, DIMENSION(:,:), ALLOCATABLE :: A, B, C
1096+
* ..
10931097
* .. External Functions ..
10941098
LOGICAL LSAMEN
10951099
REAL SECOND, SLAMCH
@@ -1130,6 +1134,21 @@ PROGRAM CCHKEE
11301134
DATA INTSTR / '0123456789' /
11311135
DATA IOLDSD / 0, 0, 0, 1 /
11321136
* ..
1137+
* .. Allocate memory dynamically ..
1138+
*
1139+
ALLOCATE ( S(NMAX*NMAX), STAT = AllocateStatus )
1140+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1141+
ALLOCATE ( A(NMAX*NMAX,NEED), STAT = AllocateStatus )
1142+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1143+
ALLOCATE ( B(NMAX*NMAX,5), STAT = AllocateStatus )
1144+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1145+
ALLOCATE ( C(NCMAX*NCMAX,NCMAX*NCMAX), STAT = AllocateStatus )
1146+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1147+
ALLOCATE ( RWORK(LWORK), STAT = AllocateStatus )
1148+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1149+
ALLOCATE ( WORK(LWORK), STAT = AllocateStatus )
1150+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1151+
* ..
11331152
* .. Executable Statements ..
11341153
*
11351154
A = 0.0
@@ -2436,7 +2455,14 @@ PROGRAM CCHKEE
24362455
380 CONTINUE
24372456
WRITE( NOUT, FMT = 9994 )
24382457
S2 = SECOND( )
2439-
WRITE( NOUT, FMT = 9993 )S2 - S1
2458+
WRITE( NOUT, FMT = 9993 )S2 - S1
2459+
*
2460+
DEALLOCATE (S, STAT = AllocateStatus)
2461+
DEALLOCATE (A, STAT = AllocateStatus)
2462+
DEALLOCATE (B, STAT = AllocateStatus)
2463+
DEALLOCATE (C, STAT = AllocateStatus)
2464+
DEALLOCATE (RWORK, STAT = AllocateStatus)
2465+
DEALLOCATE (WORK, STAT = AllocateStatus)
24402466
*
24412467
9999 FORMAT( / ' Execution not attempted due to input errors' )
24422468
9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 )

Diff for: ‎TESTING/EIG/dchkee.f

+25-6
Original file line numberDiff line numberDiff line change
@@ -1089,10 +1089,13 @@ PROGRAM DCHKEE
10891089
$ PVAL( MAXIN )
10901090
INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ),
10911091
$ ISHFTS( MAXIN ), IACC22( MAXIN )
1092-
DOUBLE PRECISION A( NMAX*NMAX, NEED ), B( NMAX*NMAX, 5 ),
1093-
$ C( NCMAX*NCMAX, NCMAX*NCMAX ), D( NMAX, 12 ),
1094-
$ RESULT( 500 ), TAUA( NMAX ), TAUB( NMAX ),
1095-
$ WORK( LWORK ), X( 5*NMAX )
1092+
DOUBLE PRECISION D( NMAX, 12 ), RESULT( 500 ), TAUA( NMAX ),
1093+
$ TAUB( NMAX ), X( 5*NMAX )
1094+
* ..
1095+
* .. Allocatable Arrays ..
1096+
INTEGER AllocateStatus
1097+
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: WORK
1098+
DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: A, B, C
10961099
* ..
10971100
* .. External Functions ..
10981101
LOGICAL LSAMEN
@@ -1132,7 +1135,18 @@ PROGRAM DCHKEE
11321135
* ..
11331136
* .. Data statements ..
11341137
DATA INTSTR / '0123456789' /
1135-
DATA IOLDSD / 0, 0, 0, 1 /
1138+
DATA IOLDSD / 0, 0, 0, 1 /
1139+
* ..
1140+
* .. Allocate memory dynamically ..
1141+
*
1142+
ALLOCATE ( A(NMAX*NMAX,NEED), STAT = AllocateStatus )
1143+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1144+
ALLOCATE ( B(NMAX*NMAX,5), STAT = AllocateStatus )
1145+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1146+
ALLOCATE ( C(NCMAX*NCMAX,NCMAX*NCMAX), STAT = AllocateStatus )
1147+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1148+
ALLOCATE ( WORK(LWORK), STAT = AllocateStatus )
1149+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
11361150
* ..
11371151
* .. Executable Statements ..
11381152
*
@@ -2436,7 +2450,12 @@ PROGRAM DCHKEE
24362450
380 CONTINUE
24372451
WRITE( NOUT, FMT = 9994 )
24382452
S2 = DSECND( )
2439-
WRITE( NOUT, FMT = 9993 )S2 - S1
2453+
WRITE( NOUT, FMT = 9993 )S2 - S1
2454+
*
2455+
DEALLOCATE (A, STAT = AllocateStatus)
2456+
DEALLOCATE (B, STAT = AllocateStatus)
2457+
DEALLOCATE (C, STAT = AllocateStatus)
2458+
DEALLOCATE (WORK, STAT = AllocateStatus)
24402459
*
24412460
9999 FORMAT( / ' Execution not attempted due to input errors' )
24422461
9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 )

Diff for: ‎TESTING/EIG/schkee.f

+24-5
Original file line numberDiff line numberDiff line change
@@ -1089,10 +1089,13 @@ PROGRAM SCHKEE
10891089
$ PVAL( MAXIN )
10901090
INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ),
10911091
$ ISHFTS( MAXIN ), IACC22( MAXIN )
1092-
REAL A( NMAX*NMAX, NEED ), B( NMAX*NMAX, 5 ),
1093-
$ C( NCMAX*NCMAX, NCMAX*NCMAX ), D( NMAX, 12 ),
1094-
$ RESULT( 500 ), TAUA( NMAX ), TAUB( NMAX ),
1095-
$ WORK( LWORK ), X( 5*NMAX )
1092+
REAL D( NMAX, 12 ), RESULT( 500 ), TAUA( NMAX ),
1093+
$ TAUB( NMAX ), X( 5*NMAX )
1094+
* ..
1095+
* .. Allocatable Arrays ..
1096+
INTEGER AllocateStatus
1097+
REAL, DIMENSION(:), ALLOCATABLE :: WORK
1098+
REAL, DIMENSION(:,:), ALLOCATABLE :: A, B, C
10961099
* ..
10971100
* .. External Functions ..
10981101
LOGICAL LSAMEN
@@ -1132,7 +1135,18 @@ PROGRAM SCHKEE
11321135
* ..
11331136
* .. Data statements ..
11341137
DATA INTSTR / '0123456789' /
1135-
DATA IOLDSD / 0, 0, 0, 1 /
1138+
DATA IOLDSD / 0, 0, 0, 1 /
1139+
* ..
1140+
* .. Allocate memory dynamically ..
1141+
*
1142+
ALLOCATE ( A(NMAX*NMAX,NEED), STAT = AllocateStatus )
1143+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1144+
ALLOCATE ( B(NMAX*NMAX,5), STAT = AllocateStatus )
1145+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1146+
ALLOCATE ( C(NCMAX*NCMAX,NCMAX*NCMAX), STAT = AllocateStatus )
1147+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
1148+
ALLOCATE ( WORK(LWORK), STAT = AllocateStatus )
1149+
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
11361150
* ..
11371151
* .. Executable Statements ..
11381152
*
@@ -2440,6 +2454,11 @@ PROGRAM SCHKEE
24402454
WRITE( NOUT, FMT = 9994 )
24412455
S2 = SECOND( )
24422456
WRITE( NOUT, FMT = 9993 )S2 - S1
2457+
*
2458+
DEALLOCATE (A, STAT = AllocateStatus)
2459+
DEALLOCATE (B, STAT = AllocateStatus)
2460+
DEALLOCATE (C, STAT = AllocateStatus)
2461+
DEALLOCATE (WORK, STAT = AllocateStatus)
24432462
*
24442463
9999 FORMAT( / ' Execution not attempted due to input errors' )
24452464
9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 )

0 commit comments

Comments
 (0)