@@ -120,14 +120,16 @@ SUBROUTINE ZSYL01( THRESH, NFAIL, RMAX, NINFO, KNT )
120120 COMPLEX * 16 RMUL
121121* ..
122122* .. Local Arrays ..
123- COMPLEX * 16 A( MAXM, MAXM ), B( MAXN, MAXN ),
124- $ C( MAXM, MAXN ), CC( MAXM, MAXN ),
125- $ X( MAXM, MAXN ),
126- $ DUML( MAXM ), DUMR( MAXN ),
123+ COMPLEX * 16 DUML( MAXM ), DUMR( MAXN ),
127124 $ D( MAX ( MAXM, MAXN ) )
128- DOUBLE PRECISION SWORK( LDSWORK, 103 ), DUM( MAXN ), VM( 2 )
125+ DOUBLE PRECISION DUM( MAXN ), VM( 2 )
129126 INTEGER ISEED( 4 ), IWORK( MAXM + MAXN + 2 )
130127* ..
128+ * .. Allocatable Arrays ..
129+ INTEGER AllocateStatus
130+ COMPLEX * 16 , DIMENSION (:,:), ALLOCATABLE :: A, B, C, CC, X
131+ DOUBLE PRECISION , DIMENSION (:,:), ALLOCATABLE :: SWORK
132+ * ..
131133* .. External Functions ..
132134 LOGICAL DISNAN
133135 DOUBLE PRECISION DLAMCH, ZLANGE
@@ -139,6 +141,20 @@ SUBROUTINE ZSYL01( THRESH, NFAIL, RMAX, NINFO, KNT )
139141* .. Intrinsic Functions ..
140142 INTRINSIC ABS, DBLE, MAX, SQRT
141143* ..
144+ * .. Allocate memory dynamically ..
145+ ALLOCATE ( A( MAXM, MAXM ), STAT = AllocateStatus )
146+ IF ( AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
147+ ALLOCATE ( B( MAXN, MAXN ), STAT = AllocateStatus )
148+ IF ( AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
149+ ALLOCATE ( C( MAXM, MAXN ), STAT = AllocateStatus )
150+ IF ( AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
151+ ALLOCATE ( CC( MAXM, MAXN ), STAT = AllocateStatus )
152+ IF ( AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
153+ ALLOCATE ( X( MAXM, MAXN ), STAT = AllocateStatus )
154+ IF ( AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
155+ ALLOCATE ( SWORK( LDSWORK, 103 ), STAT = AllocateStatus )
156+ IF ( AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
157+ * ..
142158* .. Executable Statements ..
143159*
144160* Get machine parameters
@@ -286,6 +302,13 @@ SUBROUTINE ZSYL01( THRESH, NFAIL, RMAX, NINFO, KNT )
286302 END DO
287303 END DO
288304 END DO
305+ *
306+ DEALLOCATE (A, STAT = AllocateStatus)
307+ DEALLOCATE (B, STAT = AllocateStatus)
308+ DEALLOCATE (C, STAT = AllocateStatus)
309+ DEALLOCATE (CC, STAT = AllocateStatus)
310+ DEALLOCATE (X, STAT = AllocateStatus)
311+ DEALLOCATE (SWORK, STAT = AllocateStatus)
289312*
290313 RETURN
291314*
0 commit comments