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 REAL EPS, S1, S2, THRESH
89 INTEGER NVAL( maxin ), NSVAL( maxin ), NTVAL( ntypes )
90 COMPLEX WORKA( nmax, nmax )
91 COMPLEX WORKASAV( nmax, nmax )
92 COMPLEX WORKB( nmax, maxrhs )
93 COMPLEX WORKXACT( nmax, maxrhs )
94 COMPLEX WORKBSAV( nmax, maxrhs )
95 COMPLEX WORKX( nmax, maxrhs )
96 COMPLEX WORKAFAC( nmax, nmax )
97 COMPLEX WORKAINV( nmax, nmax )
98 COMPLEX WORKARF( (nmax*(nmax+1))/2 )
99 COMPLEX WORKAP( (nmax*(nmax+1))/2 )
100 COMPLEX WORKARFINV( (nmax*(nmax+1))/2 )
101 COMPLEX C_WORK_CLATMS( 3 * nmax )
102 COMPLEX C_WORK_CPOT02( nmax, maxrhs )
103 COMPLEX C_WORK_CPOT03( nmax, nmax )
104 REAL S_WORK_CLATMS( nmax )
105 REAL S_WORK_CLANHE( nmax )
106 REAL S_WORK_CPOT01( nmax )
107 REAL S_WORK_CPOT02( nmax )
108 REAL S_WORK_CPOT03( nmax )
112 EXTERNAL slamch, second
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 )
223 eps = slamch(
'Underflow threshold' )
224 WRITE( nout, fmt = 9991 )
'underflow', eps
225 eps = slamch(
'Overflow threshold' )
226 WRITE( nout, fmt = 9991 )
'overflow ', eps
227 eps = slamch(
'Epsilon' )
228 WRITE( nout, fmt = 9991 )
'precision', eps
229 WRITE( nout, fmt = * )
239 CALL cdrvrfp( nout, nn, nval, nns, nsval, nnt, ntval, thresh,
240 $ worka, workasav, workafac, workainv, workb,
241 $ workbsav, workxact, workx, workarf, workarfinv,
242 $ c_work_clatms, c_work_cpot02,
243 $ c_work_cpot03, s_work_clatms, s_work_clanhe,
244 $ s_work_cpot01, s_work_cpot02, s_work_cpot03 )
248 CALL cdrvrf1( nout, nn, nval, thresh, worka, nmax, workarf,
254 CALL cdrvrf2( nout, nn, nval, worka, nmax, workarf,
259 CALL cdrvrf3( nout, nn, nval, thresh, worka, nmax, workarf,
260 + workainv, workafac, s_work_clanhe,
261 + c_work_cpot03, c_work_cpot02 )
266 CALL cdrvrf4( nout, nn, nval, thresh, worka, workafac, nmax,
267 + workarf, workainv, nmax, s_work_clanhe)
271 WRITE( nout, fmt = 9998 )
272 WRITE( nout, fmt = 9997 )s2 - s1
274 9999
FORMAT( /
' Execution not attempted due to input errors' )
275 9998
FORMAT( /
' End of tests' )
276 9997
FORMAT(
' Total time used = ', f12.2,
' seconds', / )
277 9996
FORMAT(
' !! Invalid input value: ', a4,
'=', i6,
'; must be >=',
279 9995
FORMAT(
' !! Invalid input value: ', a4,
'=', i6,
'; must be <=',
281 9994
FORMAT( /
' Tests of the COMPLEX LAPACK RFP routines ',
282 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
283 $ / /
' The following parameter values will be used:' )
284 9993
FORMAT( 4x, a4,
': ', 10i6, / 11x, 10i6 )
285 9992
FORMAT( /
' Routines pass computational tests if test ratio is ',
286 $
'less than', f8.2, / )
287 9991
FORMAT(
' Relative machine ', a,
' is taken to be', d16.6 )
subroutine cdrvrf4(NOUT, NN, NVAL, THRESH, C1, C2, LDC, CRF, A, LDA, S_WORK_CLANGE)
CDRVRF4
subroutine cdrvrf1(NOUT, NN, NVAL, THRESH, A, LDA, ARF, WORK)
CDRVRF1
subroutine cdrvrf2(NOUT, NN, NVAL, A, LDA, ARF, AP, ASAV)
CDRVRF2
subroutine cdrvrfp(NOUT, NN, NVAL, NNS, NSVAL, NNT, NTVAL, THRESH, A, ASAV, AFAC, AINV, B, BSAV, XACT, X, ARF, ARFINV, C_WORK_CLATMS, C_WORK_CPOT02, C_WORK_CPOT03, S_WORK_CLATMS, S_WORK_CLANHE, S_WORK_CPOT01, S_WORK_CPOT02, S_WORK_CPOT03)
CDRVRFP
subroutine cdrvrf3(NOUT, NN, NVAL, THRESH, A, LDA, ARF, B1, B2, S_WORK_CLANGE, C_WORK_CGEQRF, TAU)
CDRVRF3
subroutine ilaver(VERS_MAJOR, VERS_MINOR, VERS_PATCH)
ILAVER returns the LAPACK version.
subroutine cerrrfp(NUNIT)
CERRRFP