85 parameter( nmax = 132 )
87 parameter( maxin = 12 )
89 parameter( maxrhs = 16 )
91 parameter( matmax = 30 )
93 parameter( nin = 5, nout = 6 )
95 parameter( ldamax = nmax )
98 LOGICAL fatal, tstdrv, tsterr
104 INTEGER i, ic, k, lda, nm, nmats,
106 $ vers_major, vers_minor, vers_patch
107 DOUBLE PRECISION eps, s1, s2, thresh
111 LOGICAL dotype( matmax )
112 INTEGER iwork( nmax ), mval( maxin ), nsval( maxin )
113 DOUBLE PRECISION rwork(nmax)
114 COMPLEX*16 a( ldamax*nmax, 2 ), b( nmax*maxrhs, 2 ),
115 $ work( nmax*maxrhs*2 )
116 COMPLEX swork(nmax*(nmax+maxrhs))
134 common / infoc / infot, nunit, ok, lerr
135 common / srnamc / srnamt
138 DATA intstr /
'0123456789' /
152 CALL
ilaver( vers_major, vers_minor, vers_patch )
153 WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
157 READ( nin, fmt = * )nm
159 WRITE( nout, fmt = 9996 )
' NM ', nm, 1
162 ELSE IF( nm.GT.maxin )
THEN
163 WRITE( nout, fmt = 9995 )
' NM ', nm, maxin
167 READ( nin, fmt = * )( mval( i ), i = 1, nm )
169 IF( mval( i ).LT.0 )
THEN
170 WRITE( nout, fmt = 9996 )
' M ', mval( i ), 0
172 ELSE IF( mval( i ).GT.nmax )
THEN
173 WRITE( nout, fmt = 9995 )
' M ', mval( i ), nmax
178 $
WRITE( nout, fmt = 9993 )
'M ', ( mval( i ), i = 1, nm )
182 READ( nin, fmt = * )nns
184 WRITE( nout, fmt = 9996 )
' NNS', nns, 1
187 ELSE IF( nns.GT.maxin )
THEN
188 WRITE( nout, fmt = 9995 )
' NNS', nns, maxin
192 READ( nin, fmt = * )( nsval( i ), i = 1, nns )
194 IF( nsval( i ).LT.0 )
THEN
195 WRITE( nout, fmt = 9996 )
'NRHS', nsval( i ), 0
197 ELSE IF( nsval( i ).GT.maxrhs )
THEN
198 WRITE( nout, fmt = 9995 )
'NRHS', nsval( i ), maxrhs
203 $
WRITE( nout, fmt = 9993 )
'NRHS', ( nsval( i ), i = 1, nns )
207 READ( nin, fmt = * )thresh
208 WRITE( nout, fmt = 9992 )thresh
212 READ( nin, fmt = * )tstdrv
216 READ( nin, fmt = * )tsterr
219 WRITE( nout, fmt = 9999 )
225 seps =
slamch(
'Underflow threshold' )
226 WRITE( nout, fmt = 9991 )
'(single precision) underflow', seps
227 seps =
slamch(
'Overflow threshold' )
228 WRITE( nout, fmt = 9991 )
'(single precision) overflow ', seps
229 seps =
slamch(
'Epsilon' )
230 WRITE( nout, fmt = 9991 )
'(single precision) precision', seps
231 WRITE( nout, fmt = * )
233 eps =
dlamch(
'Underflow threshold' )
234 WRITE( nout, fmt = 9991 )
'(double precision) underflow', eps
235 eps =
dlamch(
'Overflow threshold' )
236 WRITE( nout, fmt = 9991 )
'(double precision) overflow ', eps
238 WRITE( nout, fmt = 9991 )
'(double precision) precision', eps
239 WRITE( nout, fmt = * )
245 READ( nin, fmt =
'(A72)',
END = 140 )aline
255 IF( aline( i: i ).EQ.
' ' )
261 IF( c1.EQ.intstr( k: k ) )
THEN
268 nmats = nmats*10 + ic
281 IF( .NOT.
lsame( c1,
'Zomplex precision' ) )
THEN
282 WRITE( nout, fmt = 9990 )path
284 ELSE IF( nmats.LE.0 )
THEN
288 WRITE( nout, fmt = 9990 )
'ZCGESV'
291 ELSE IF(
lsamen( 2, c2,
'GE' ) )
THEN
296 CALL
alareq(
'ZGE', nmats, dotype, ntypes, nin, nout )
304 CALL
zdrvab( dotype, nm, mval, nns,
305 $ nsval, thresh, lda, a( 1, 1 ),
306 $ a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
307 $ work, rwork, swork, iwork, nout )
309 WRITE( nout, fmt = 9989 )
'ZCGESV'
312 ELSE IF(
lsamen( 2, c2,
'PO' ) )
THEN
317 CALL
alareq(
'DPO', nmats, dotype, ntypes, nin, nout )
324 CALL
zdrvac( dotype, nm, mval, nns, nsval,
325 $ thresh, lda, a( 1, 1 ), a( 1, 2 ),
326 $ b( 1, 1 ), b( 1, 2 ),
327 $ work, rwork, swork, nout )
329 WRITE( nout, fmt = 9989 )
'ZCPOSV'
345 WRITE( nout, fmt = 9998 )
346 WRITE( nout, fmt = 9997 )s2 - s1
348 9999 format( /
' Execution not attempted due to input errors' )
349 9998 format( /
' End of tests' )
350 9997 format(
' Total time used = ', f12.2,
' seconds', / )
351 9996 format(
' Invalid input value: ', a4,
'=', i6,
'; must be >=',
353 9995 format(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
355 9994 format(
' Tests of the COMPLEX*16 LAPACK ZCGESV/ZCPOSV routines ',
356 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
357 $ / /
' The following parameter values will be used:' )
358 9993 format( 4x, a4,
': ', 10i6, / 11x, 10i6 )
359 9992 format( /
' Routines pass computational tests if test ratio is ',
360 $
'less than', f8.2, / )
361 9991 format(
' Relative machine ', a,
' is taken to be', d16.6 )
362 9990 format( / 1x, a6,
' routines were not tested' )
363 9989 format( / 1x, a6,
' driver routines were not tested' )