71 parameter ( maxin = 12 )
73 parameter ( nmax = 50 )
75 parameter ( maxrhs = 16 )
77 parameter ( ntypes = 9 )
79 parameter ( nin = 5, nout = 6 )
83 INTEGER VERS_MAJOR, VERS_MINOR, VERS_PATCH
84 INTEGER I, NN, NNS, NNT
85 DOUBLE PRECISION EPS, S1, S2, THRESH
89 INTEGER NVAL( maxin ), NSVAL( maxin ), NTVAL( ntypes )
90 COMPLEX*16 WORKA( nmax, nmax )
91 COMPLEX*16 WORKASAV( nmax, nmax )
92 COMPLEX*16 WORKB( nmax, maxrhs )
93 COMPLEX*16 WORKXACT( nmax, maxrhs )
94 COMPLEX*16 WORKBSAV( nmax, maxrhs )
95 COMPLEX*16 WORKX( nmax, maxrhs )
96 COMPLEX*16 WORKAFAC( nmax, nmax )
97 COMPLEX*16 WORKAINV( nmax, nmax )
98 COMPLEX*16 WORKARF( (nmax*(nmax+1))/2 )
99 COMPLEX*16 WORKAP( (nmax*(nmax+1))/2 )
100 COMPLEX*16 WORKARFINV( (nmax*(nmax+1))/2 )
101 COMPLEX*16 Z_WORK_ZLATMS( 3 * nmax )
102 COMPLEX*16 Z_WORK_ZPOT02( nmax, maxrhs )
103 COMPLEX*16 Z_WORK_ZPOT03( nmax, nmax )
104 DOUBLE PRECISION D_WORK_ZLATMS( nmax )
105 DOUBLE PRECISION D_WORK_ZLANHE( nmax )
106 DOUBLE PRECISION D_WORK_ZPOT01( nmax )
107 DOUBLE PRECISION D_WORK_ZPOT02( nmax )
108 DOUBLE PRECISION D_WORK_ZPOT03( nmax )
111 DOUBLE PRECISION DLAMCH, DSECND
112 EXTERNAL dlamch, dsecnd
129 CALL ilaver( vers_major, vers_minor, vers_patch )
130 WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
134 READ( nin, fmt = * )nn
136 WRITE( nout, fmt = 9996 )
' NN ', nn, 1
139 ELSE IF( nn.GT.maxin )
THEN
140 WRITE( nout, fmt = 9995 )
' NN ', nn, maxin
144 READ( nin, fmt = * )( nval( i ), i = 1, nn )
146 IF( nval( i ).LT.0 )
THEN
147 WRITE( nout, fmt = 9996 )
' M ', nval( i ), 0
149 ELSE IF( nval( i ).GT.nmax )
THEN
150 WRITE( nout, fmt = 9995 )
' M ', nval( i ), nmax
155 $
WRITE( nout, fmt = 9993 )
'N ', ( nval( i ), i = 1, nn )
159 READ( nin, fmt = * )nns
161 WRITE( nout, fmt = 9996 )
' NNS', nns, 1
164 ELSE IF( nns.GT.maxin )
THEN
165 WRITE( nout, fmt = 9995 )
' NNS', nns, maxin
169 READ( nin, fmt = * )( nsval( i ), i = 1, nns )
171 IF( nsval( i ).LT.0 )
THEN
172 WRITE( nout, fmt = 9996 )
'NRHS', nsval( i ), 0
174 ELSE IF( nsval( i ).GT.maxrhs )
THEN
175 WRITE( nout, fmt = 9995 )
'NRHS', nsval( i ), maxrhs
180 $
WRITE( nout, fmt = 9993 )
'NRHS', ( nsval( i ), i = 1, nns )
184 READ( nin, fmt = * )nnt
186 WRITE( nout, fmt = 9996 )
' NMA', nnt, 1
189 ELSE IF( nnt.GT.ntypes )
THEN
190 WRITE( nout, fmt = 9995 )
' NMA', nnt, ntypes
194 READ( nin, fmt = * )( ntval( i ), i = 1, nnt )
196 IF( ntval( i ).LT.0 )
THEN
197 WRITE( nout, fmt = 9996 )
'TYPE', ntval( i ), 0
199 ELSE IF( ntval( i ).GT.ntypes )
THEN
200 WRITE( nout, fmt = 9995 )
'TYPE', ntval( i ), ntypes
205 $
WRITE( nout, fmt = 9993 )
'TYPE', ( ntval( i ), i = 1, nnt )
209 READ( nin, fmt = * )thresh
210 WRITE( nout, fmt = 9992 )thresh
214 READ( nin, fmt = * )tsterr
217 WRITE( nout, fmt = 9999 )
222 WRITE( nout, fmt = 9999 )
228 eps = dlamch(
'Underflow threshold' )
229 WRITE( nout, fmt = 9991 )
'underflow', eps
230 eps = dlamch(
'Overflow threshold' )
231 WRITE( nout, fmt = 9991 )
'overflow ', eps
232 eps = dlamch(
'Epsilon' )
233 WRITE( nout, fmt = 9991 )
'precision', eps
234 WRITE( nout, fmt = * )
244 CALL zdrvrfp( nout, nn, nval, nns, nsval, nnt, ntval, thresh,
245 $ worka, workasav, workafac, workainv, workb,
246 $ workbsav, workxact, workx, workarf, workarfinv,
247 $ z_work_zlatms, z_work_zpot02,
248 $ z_work_zpot03, d_work_zlatms, d_work_zlanhe,
249 $ d_work_zpot01, d_work_zpot02, d_work_zpot03 )
253 CALL zdrvrf1( nout, nn, nval, thresh, worka, nmax, workarf,
259 CALL zdrvrf2( nout, nn, nval, worka, nmax, workarf,
264 CALL zdrvrf3( nout, nn, nval, thresh, worka, nmax, workarf,
265 + workainv, workafac, d_work_zlanhe,
266 + z_work_zpot03, z_work_zpot02 )
271 CALL zdrvrf4( nout, nn, nval, thresh, worka, workafac, nmax,
272 + workarf, workainv, nmax,d_work_zlanhe)
276 WRITE( nout, fmt = 9998 )
277 WRITE( nout, fmt = 9997 )s2 - s1
279 9999
FORMAT( /
' Execution not attempted due to input errors' )
280 9998
FORMAT( /
' End of tests' )
281 9997
FORMAT(
' Total time used = ', f12.2,
' seconds', / )
282 9996
FORMAT(
' !! Invalid input value: ', a4,
'=', i6,
'; must be >=',
284 9995
FORMAT(
' !! Invalid input value: ', a4,
'=', i6,
'; must be <=',
286 9994
FORMAT( /
' Tests of the COMPLEX*16 LAPACK RFP routines ',
287 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
288 $ / /
' The following parameter values will be used:' )
289 9993
FORMAT( 4x, a4,
': ', 10i6, / 11x, 10i6 )
290 9992
FORMAT( /
' Routines pass computational tests if test ratio is ',
291 $
'less than', f8.2, / )
292 9991
FORMAT(
' Relative machine ', a,
' is taken to be', d16.6 )
subroutine zdrvrf3(NOUT, NN, NVAL, THRESH, A, LDA, ARF, B1, B2, D_WORK_ZLANGE, Z_WORK_ZGEQRF, TAU)
ZDRVRF3
subroutine zerrrfp(NUNIT)
ZERRRFP
subroutine zdrvrf2(NOUT, NN, NVAL, A, LDA, ARF, AP, ASAV)
ZDRVRF2
subroutine zdrvrfp(NOUT, NN, NVAL, NNS, NSVAL, NNT, NTVAL, THRESH, A, ASAV, AFAC, AINV, B, BSAV, XACT, X, ARF, ARFINV, Z_WORK_ZLATMS, Z_WORK_ZPOT02, Z_WORK_ZPOT03, D_WORK_ZLATMS, D_WORK_ZLANHE, D_WORK_ZPOT01, D_WORK_ZPOT02, D_WORK_ZPOT03)
ZDRVRFP
subroutine zdrvrf1(NOUT, NN, NVAL, THRESH, A, LDA, ARF, WORK)
ZDRVRF1
subroutine ilaver(VERS_MAJOR, VERS_MINOR, VERS_PATCH)
ILAVER returns the LAPACK version.
subroutine zdrvrf4(NOUT, NN, NVAL, THRESH, C1, C2, LDC, CRF, A, LDA, D_WORK_ZLANGE)
ZDRVRF4