68 parameter( maxin = 12 )
70 parameter( nmax = 50 )
72 parameter( maxrhs = 16 )
74 parameter( ntypes = 9 )
76 parameter( nin = 5, nout = 6 )
80 INTEGER vers_major, vers_minor, vers_patch
81 INTEGER i, nn, nns, nnt
82 DOUBLE PRECISION eps, s1, s2, thresh
86 INTEGER nval( maxin ), nsval( maxin ), ntval( ntypes )
87 COMPLEX*16 worka( nmax, nmax )
88 COMPLEX*16 workasav( nmax, nmax )
89 COMPLEX*16 workb( nmax, maxrhs )
90 COMPLEX*16 workxact( nmax, maxrhs )
91 COMPLEX*16 workbsav( nmax, maxrhs )
92 COMPLEX*16 workx( nmax, maxrhs )
93 COMPLEX*16 workafac( nmax, nmax )
94 COMPLEX*16 workainv( nmax, nmax )
95 COMPLEX*16 workarf( (nmax*(nmax+1))/2 )
96 COMPLEX*16 workap( (nmax*(nmax+1))/2 )
97 COMPLEX*16 workarfinv( (nmax*(nmax+1))/2 )
98 COMPLEX*16 z_work_zlatms( 3 * nmax )
99 COMPLEX*16 z_work_zpot02( nmax, maxrhs )
100 COMPLEX*16 z_work_zpot03( nmax, nmax )
101 DOUBLE PRECISION d_work_zlatms( nmax )
102 DOUBLE PRECISION d_work_zlanhe( nmax )
103 DOUBLE PRECISION d_work_zpot01( nmax )
104 DOUBLE PRECISION d_work_zpot02( nmax )
105 DOUBLE PRECISION d_work_zpot03( nmax )
126 CALL ilaver( vers_major, vers_minor, vers_patch )
127 WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
131 READ( nin, fmt = * )nn
133 WRITE( nout, fmt = 9996 )
' NN ', nn, 1
136 ELSE IF( nn.GT.maxin )
THEN
137 WRITE( nout, fmt = 9995 )
' NN ', nn, maxin
141 READ( nin, fmt = * )( nval( i ), i = 1, nn )
143 IF( nval( i ).LT.0 )
THEN
144 WRITE( nout, fmt = 9996 )
' M ', nval( i ), 0
146 ELSE IF( nval( i ).GT.nmax )
THEN
147 WRITE( nout, fmt = 9995 )
' M ', nval( i ), nmax
152 $
WRITE( nout, fmt = 9993 )
'N ', ( nval( i ), i = 1, nn )
156 READ( nin, fmt = * )nns
158 WRITE( nout, fmt = 9996 )
' NNS', nns, 1
161 ELSE IF( nns.GT.maxin )
THEN
162 WRITE( nout, fmt = 9995 )
' NNS', nns, maxin
166 READ( nin, fmt = * )( nsval( i ), i = 1, nns )
168 IF( nsval( i ).LT.0 )
THEN
169 WRITE( nout, fmt = 9996 )
'NRHS', nsval( i ), 0
171 ELSE IF( nsval( i ).GT.maxrhs )
THEN
172 WRITE( nout, fmt = 9995 )
'NRHS', nsval( i ), maxrhs
177 $
WRITE( nout, fmt = 9993 )
'NRHS', ( nsval( i ), i = 1, nns )
181 READ( nin, fmt = * )nnt
183 WRITE( nout, fmt = 9996 )
' NMA', nnt, 1
186 ELSE IF( nnt.GT.ntypes )
THEN
187 WRITE( nout, fmt = 9995 )
' NMA', nnt, ntypes
191 READ( nin, fmt = * )( ntval( i ), i = 1, nnt )
193 IF( ntval( i ).LT.0 )
THEN
194 WRITE( nout, fmt = 9996 )
'TYPE', ntval( i ), 0
196 ELSE IF( ntval( i ).GT.ntypes )
THEN
197 WRITE( nout, fmt = 9995 )
'TYPE', ntval( i ), ntypes
202 $
WRITE( nout, fmt = 9993 )
'TYPE', ( ntval( i ), i = 1, nnt )
206 READ( nin, fmt = * )thresh
207 WRITE( nout, fmt = 9992 )thresh
211 READ( nin, fmt = * )tsterr
214 WRITE( nout, fmt = 9999 )
220 eps =
dlamch(
'Underflow threshold' )
221 WRITE( nout, fmt = 9991 )
'underflow', eps
222 eps =
dlamch(
'Overflow threshold' )
223 WRITE( nout, fmt = 9991 )
'overflow ', eps
225 WRITE( nout, fmt = 9991 )
'precision', eps
226 WRITE( nout, fmt = * )
236 CALL zdrvrfp( nout, nn, nval, nns, nsval, nnt, ntval, thresh,
237 $ worka, workasav, workafac, workainv, workb,
238 $ workbsav, workxact, workx, workarf, workarfinv,
239 $ z_work_zlatms, z_work_zpot02,
240 $ z_work_zpot03, d_work_zlatms, d_work_zlanhe,
241 $ d_work_zpot01, d_work_zpot02, d_work_zpot03 )
245 CALL zdrvrf1( nout, nn, nval, thresh, worka, nmax, workarf,
251 CALL zdrvrf2( nout, nn, nval, worka, nmax, workarf,
256 CALL zdrvrf3( nout, nn, nval, thresh, worka, nmax, workarf,
257 + workainv, workafac, d_work_zlanhe,
258 + z_work_zpot03, z_work_zpot02 )
263 CALL zdrvrf4( nout, nn, nval, thresh, worka, workafac, nmax,
264 + workarf, workainv, nmax,d_work_zlanhe)
268 WRITE( nout, fmt = 9998 )
269 WRITE( nout, fmt = 9997 )s2 - s1
271 9999
FORMAT( /
' Execution not attempted due to input errors' )
272 9998
FORMAT( /
' End of tests' )
273 9997
FORMAT(
' Total time used = ', f12.2,
' seconds', / )
274 9996
FORMAT(
' !! Invalid input value: ', a4,
'=', i6,
'; must be >=',
276 9995
FORMAT(
' !! Invalid input value: ', a4,
'=', i6,
'; must be <=',
278 9994
FORMAT( /
' Tests of the COMPLEX*16 LAPACK RFP routines ',
279 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
280 $ / /
' The following parameter values will be used:' )
281 9993
FORMAT( 4x, a4,
': ', 10i6, / 11x, 10i6 )
282 9992
FORMAT( /
' Routines pass computational tests if test ratio is ',
283 $
'less than', f8.2, / )
284 9991
FORMAT(
' Relative machine ', a,
' is taken to be', d16.6 )
subroutine ilaver(vers_major, vers_minor, vers_patch)
ILAVER returns the LAPACK version.
double precision function dlamch(cmach)
DLAMCH
double precision function dsecnd()
DSECND Using ETIME
subroutine zdrvrf1(nout, nn, nval, thresh, a, lda, arf, work)
ZDRVRF1
subroutine zdrvrf2(nout, nn, nval, a, lda, arf, ap, asav)
ZDRVRF2
subroutine zdrvrf3(nout, nn, nval, thresh, a, lda, arf, b1, b2, d_work_zlange, z_work_zgeqrf, tau)
ZDRVRF3
subroutine zdrvrf4(nout, nn, nval, thresh, c1, c2, ldc, crf, a, lda, d_work_zlange)
ZDRVRF4
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 zerrrfp(nunit)
ZERRRFP