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 DOUBLE PRECISION worka( nmax, nmax )
88 DOUBLE PRECISION workasav( nmax, nmax )
89 DOUBLE PRECISION workb( nmax, maxrhs )
90 DOUBLE PRECISION workxact( nmax, maxrhs )
91 DOUBLE PRECISION workbsav( nmax, maxrhs )
92 DOUBLE PRECISION workx( nmax, maxrhs )
93 DOUBLE PRECISION workafac( nmax, nmax )
94 DOUBLE PRECISION workainv( nmax, nmax )
95 DOUBLE PRECISION workarf( (nmax*(nmax+1))/2 )
96 DOUBLE PRECISION workap( (nmax*(nmax+1))/2 )
97 DOUBLE PRECISION workarfinv( (nmax*(nmax+1))/2 )
98 DOUBLE PRECISION d_work_dlatms( 3 * nmax )
99 DOUBLE PRECISION d_work_dpot01( nmax )
100 DOUBLE PRECISION d_temp_dpot02( nmax, maxrhs )
101 DOUBLE PRECISION d_temp_dpot03( nmax, nmax )
102 DOUBLE PRECISION d_work_dlansy( nmax )
103 DOUBLE PRECISION d_work_dpot02( nmax )
104 DOUBLE PRECISION d_work_dpot03( nmax )
125 CALL ilaver( vers_major, vers_minor, vers_patch )
126 WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
130 READ( nin, fmt = * )nn
132 WRITE( nout, fmt = 9996 )
' NN ', nn, 1
135 ELSE IF( nn.GT.maxin )
THEN
136 WRITE( nout, fmt = 9995 )
' NN ', nn, maxin
140 READ( nin, fmt = * )( nval( i ), i = 1, nn )
142 IF( nval( i ).LT.0 )
THEN
143 WRITE( nout, fmt = 9996 )
' M ', nval( i ), 0
145 ELSE IF( nval( i ).GT.nmax )
THEN
146 WRITE( nout, fmt = 9995 )
' M ', nval( i ), nmax
151 $
WRITE( nout, fmt = 9993 )
'N ', ( nval( i ), i = 1, nn )
155 READ( nin, fmt = * )nns
157 WRITE( nout, fmt = 9996 )
' NNS', nns, 1
160 ELSE IF( nns.GT.maxin )
THEN
161 WRITE( nout, fmt = 9995 )
' NNS', nns, maxin
165 READ( nin, fmt = * )( nsval( i ), i = 1, nns )
167 IF( nsval( i ).LT.0 )
THEN
168 WRITE( nout, fmt = 9996 )
'NRHS', nsval( i ), 0
170 ELSE IF( nsval( i ).GT.maxrhs )
THEN
171 WRITE( nout, fmt = 9995 )
'NRHS', nsval( i ), maxrhs
176 $
WRITE( nout, fmt = 9993 )
'NRHS', ( nsval( i ), i = 1, nns )
180 READ( nin, fmt = * )nnt
182 WRITE( nout, fmt = 9996 )
' NMA', nnt, 1
185 ELSE IF( nnt.GT.ntypes )
THEN
186 WRITE( nout, fmt = 9995 )
' NMA', nnt, ntypes
190 READ( nin, fmt = * )( ntval( i ), i = 1, nnt )
192 IF( ntval( i ).LT.0 )
THEN
193 WRITE( nout, fmt = 9996 )
'TYPE', ntval( i ), 0
195 ELSE IF( ntval( i ).GT.ntypes )
THEN
196 WRITE( nout, fmt = 9995 )
'TYPE', ntval( i ), ntypes
201 $
WRITE( nout, fmt = 9993 )
'TYPE', ( ntval( i ), i = 1, nnt )
205 READ( nin, fmt = * )thresh
206 WRITE( nout, fmt = 9992 )thresh
210 READ( nin, fmt = * )tsterr
213 WRITE( nout, fmt = 9999 )
219 eps =
dlamch(
'Underflow threshold' )
220 WRITE( nout, fmt = 9991 )
'underflow', eps
221 eps =
dlamch(
'Overflow threshold' )
222 WRITE( nout, fmt = 9991 )
'overflow ', eps
224 WRITE( nout, fmt = 9991 )
'precision', eps
225 WRITE( nout, fmt = * )
235 CALL ddrvrfp( nout, nn, nval, nns, nsval, nnt, ntval, thresh,
236 $ worka, workasav, workafac, workainv, workb,
237 $ workbsav, workxact, workx, workarf, workarfinv,
238 $ d_work_dlatms, d_work_dpot01, d_temp_dpot02,
239 $ d_temp_dpot03, d_work_dlansy, d_work_dpot02,
244 CALL ddrvrf1( nout, nn, nval, thresh, worka, nmax, workarf,
250 CALL ddrvrf2( nout, nn, nval, worka, nmax, workarf,
255 CALL ddrvrf3( nout, nn, nval, thresh, worka, nmax, workarf,
256 + workainv, workafac, d_work_dlansy,
257 + d_work_dpot03, d_work_dpot01 )
262 CALL ddrvrf4( nout, nn, nval, thresh, worka, workafac, nmax,
263 + workarf, workainv, nmax, d_work_dlansy)
267 WRITE( nout, fmt = 9998 )
268 WRITE( nout, fmt = 9997 )s2 - s1
270 9999
FORMAT( /
' Execution not attempted due to input errors' )
271 9998
FORMAT( /
' End of tests' )
272 9997
FORMAT(
' Total time used = ', f12.2,
' seconds', / )
273 9996
FORMAT(
' !! Invalid input value: ', a4,
'=', i6,
'; must be >=',
275 9995
FORMAT(
' !! Invalid input value: ', a4,
'=', i6,
'; must be <=',
277 9994
FORMAT( /
' Tests of the DOUBLE PRECISION LAPACK RFP routines ',
278 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
279 $ / /
' The following parameter values will be used:' )
280 9993
FORMAT( 4x, a4,
': ', 10i6, / 11x, 10i6 )
281 9992
FORMAT( /
' Routines pass computational tests if test ratio is ',
282 $
'less than', f8.2, / )
283 9991
FORMAT(
' Relative machine ', a,
' is taken to be', d16.6 )
subroutine ddrvrf1(nout, nn, nval, thresh, a, lda, arf, work)
DDRVRF1
subroutine ddrvrf2(nout, nn, nval, a, lda, arf, ap, asav)
DDRVRF2
subroutine ddrvrf3(nout, nn, nval, thresh, a, lda, arf, b1, b2, d_work_dlange, d_work_dgeqrf, tau)
DDRVRF3
subroutine ddrvrf4(nout, nn, nval, thresh, c1, c2, ldc, crf, a, lda, d_work_dlange)
DDRVRF4
subroutine ddrvrfp(nout, nn, nval, nns, nsval, nnt, ntval, thresh, a, asav, afac, ainv, b, bsav, xact, x, arf, arfinv, d_work_dlatms, d_work_dpot01, d_temp_dpot02, d_temp_dpot03, d_work_dlansy, d_work_dpot02, d_work_dpot03)
DDRVRFP
subroutine derrrfp(nunit)
DERRRFP
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