1*> \brief \b CCHKRFP 2* 3* =========== DOCUMENTATION =========== 4* 5* Online html documentation available at 6* http://www.netlib.org/lapack/explore-html/ 7* 8* Definition: 9* =========== 10* 11* PROGRAM CCHKRFP 12* 13* 14*> \par Purpose: 15* ============= 16*> 17*> \verbatim 18*> 19*> CCHKRFP is the main test program for the COMPLEX linear equation 20*> routines with RFP storage format 21*> 22*> \endverbatim 23* 24* Arguments: 25* ========== 26* 27*> \verbatim 28*> MAXIN INTEGER 29*> The number of different values that can be used for each of 30*> M, N, or NB 31*> 32*> MAXRHS INTEGER 33*> The maximum number of right hand sides 34*> 35*> NTYPES INTEGER 36*> 37*> NMAX INTEGER 38*> The maximum allowable value for N. 39*> 40*> NIN INTEGER 41*> The unit number for input 42*> 43*> NOUT INTEGER 44*> The unit number for output 45*> \endverbatim 46* 47* Authors: 48* ======== 49* 50*> \author Univ. of Tennessee 51*> \author Univ. of California Berkeley 52*> \author Univ. of Colorado Denver 53*> \author NAG Ltd. 54* 55*> \date April 2012 56* 57*> \ingroup complex_lin 58* 59* ===================================================================== 60 PROGRAM CCHKRFP 61* 62* -- LAPACK test routine (version 3.7.1) -- 63* -- LAPACK is a software package provided by Univ. of Tennessee, -- 64* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 65* April 2012 66* 67* ===================================================================== 68* 69* .. Parameters .. 70 INTEGER MAXIN 71 PARAMETER ( MAXIN = 12 ) 72 INTEGER NMAX 73 PARAMETER ( NMAX = 50 ) 74 INTEGER MAXRHS 75 PARAMETER ( MAXRHS = 16 ) 76 INTEGER NTYPES 77 PARAMETER ( NTYPES = 9 ) 78 INTEGER NIN, NOUT 79 PARAMETER ( NIN = 5, NOUT = 6 ) 80* .. 81* .. Local Scalars .. 82 LOGICAL FATAL, TSTERR 83 INTEGER VERS_MAJOR, VERS_MINOR, VERS_PATCH 84 INTEGER I, NN, NNS, NNT 85 REAL EPS, S1, S2, THRESH 86 87* .. 88* .. Local Arrays .. 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 ) 109* .. 110* .. External Functions .. 111 REAL SLAMCH, SECOND 112 EXTERNAL SLAMCH, SECOND 113* .. 114* .. External Subroutines .. 115 EXTERNAL ILAVER, CDRVRFP, CDRVRF1, CDRVRF2, CDRVRF3, 116 + CDRVRF4 117* .. 118* .. Executable Statements .. 119* 120 S1 = SECOND( ) 121 FATAL = .FALSE. 122* 123* Read a dummy line. 124* 125 READ( NIN, FMT = * ) 126* 127* Report LAPACK version tag (e.g. LAPACK-3.2.0) 128* 129 CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH ) 130 WRITE( NOUT, FMT = 9994 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH 131* 132* Read the values of N 133* 134 READ( NIN, FMT = * )NN 135 IF( NN.LT.1 ) THEN 136 WRITE( NOUT, FMT = 9996 )' NN ', NN, 1 137 NN = 0 138 FATAL = .TRUE. 139 ELSE IF( NN.GT.MAXIN ) THEN 140 WRITE( NOUT, FMT = 9995 )' NN ', NN, MAXIN 141 NN = 0 142 FATAL = .TRUE. 143 END IF 144 READ( NIN, FMT = * )( NVAL( I ), I = 1, NN ) 145 DO 10 I = 1, NN 146 IF( NVAL( I ).LT.0 ) THEN 147 WRITE( NOUT, FMT = 9996 )' M ', NVAL( I ), 0 148 FATAL = .TRUE. 149 ELSE IF( NVAL( I ).GT.NMAX ) THEN 150 WRITE( NOUT, FMT = 9995 )' M ', NVAL( I ), NMAX 151 FATAL = .TRUE. 152 END IF 153 10 CONTINUE 154 IF( NN.GT.0 ) 155 $ WRITE( NOUT, FMT = 9993 )'N ', ( NVAL( I ), I = 1, NN ) 156* 157* Read the values of NRHS 158* 159 READ( NIN, FMT = * )NNS 160 IF( NNS.LT.1 ) THEN 161 WRITE( NOUT, FMT = 9996 )' NNS', NNS, 1 162 NNS = 0 163 FATAL = .TRUE. 164 ELSE IF( NNS.GT.MAXIN ) THEN 165 WRITE( NOUT, FMT = 9995 )' NNS', NNS, MAXIN 166 NNS = 0 167 FATAL = .TRUE. 168 END IF 169 READ( NIN, FMT = * )( NSVAL( I ), I = 1, NNS ) 170 DO 30 I = 1, NNS 171 IF( NSVAL( I ).LT.0 ) THEN 172 WRITE( NOUT, FMT = 9996 )'NRHS', NSVAL( I ), 0 173 FATAL = .TRUE. 174 ELSE IF( NSVAL( I ).GT.MAXRHS ) THEN 175 WRITE( NOUT, FMT = 9995 )'NRHS', NSVAL( I ), MAXRHS 176 FATAL = .TRUE. 177 END IF 178 30 CONTINUE 179 IF( NNS.GT.0 ) 180 $ WRITE( NOUT, FMT = 9993 )'NRHS', ( NSVAL( I ), I = 1, NNS ) 181* 182* Read the matrix types 183* 184 READ( NIN, FMT = * )NNT 185 IF( NNT.LT.1 ) THEN 186 WRITE( NOUT, FMT = 9996 )' NMA', NNT, 1 187 NNT = 0 188 FATAL = .TRUE. 189 ELSE IF( NNT.GT.NTYPES ) THEN 190 WRITE( NOUT, FMT = 9995 )' NMA', NNT, NTYPES 191 NNT = 0 192 FATAL = .TRUE. 193 END IF 194 READ( NIN, FMT = * )( NTVAL( I ), I = 1, NNT ) 195 DO 320 I = 1, NNT 196 IF( NTVAL( I ).LT.0 ) THEN 197 WRITE( NOUT, FMT = 9996 )'TYPE', NTVAL( I ), 0 198 FATAL = .TRUE. 199 ELSE IF( NTVAL( I ).GT.NTYPES ) THEN 200 WRITE( NOUT, FMT = 9995 )'TYPE', NTVAL( I ), NTYPES 201 FATAL = .TRUE. 202 END IF 203 320 CONTINUE 204 IF( NNT.GT.0 ) 205 $ WRITE( NOUT, FMT = 9993 )'TYPE', ( NTVAL( I ), I = 1, NNT ) 206* 207* Read the threshold value for the test ratios. 208* 209 READ( NIN, FMT = * )THRESH 210 WRITE( NOUT, FMT = 9992 )THRESH 211* 212* Read the flag that indicates whether to test the error exits. 213* 214 READ( NIN, FMT = * )TSTERR 215* 216 IF( FATAL ) THEN 217 WRITE( NOUT, FMT = 9999 ) 218 STOP 219 END IF 220* 221* Calculate and print the machine dependent constants. 222* 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 = * ) 230* 231* Test the error exit of: 232* 233 IF( TSTERR ) 234 $ CALL CERRRFP( NOUT ) 235* 236* Test the routines: cpftrf, cpftri, cpftrs (as in CDRVPO). 237* This also tests the routines: ctfsm, ctftri, ctfttr, ctrttf. 238* 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 ) 245* 246* Test the routine: clanhf 247* 248 CALL CDRVRF1( NOUT, NN, NVAL, THRESH, WORKA, NMAX, WORKARF, 249 + S_WORK_CLANHE ) 250* 251* Test the conversion routines: 252* chfttp, ctpthf, ctfttr, ctrttf, ctrttp and ctpttr. 253* 254 CALL CDRVRF2( NOUT, NN, NVAL, WORKA, NMAX, WORKARF, 255 + WORKAP, WORKASAV ) 256* 257* Test the routine: ctfsm 258* 259 CALL CDRVRF3( NOUT, NN, NVAL, THRESH, WORKA, NMAX, WORKARF, 260 + WORKAINV, WORKAFAC, S_WORK_CLANHE, 261 + C_WORK_CPOT03, C_WORK_CPOT02 ) 262* 263* 264* Test the routine: chfrk 265* 266 CALL CDRVRF4( NOUT, NN, NVAL, THRESH, WORKA, WORKAFAC, NMAX, 267 + WORKARF, WORKAINV, NMAX, S_WORK_CLANHE) 268* 269 CLOSE ( NIN ) 270 S2 = SECOND( ) 271 WRITE( NOUT, FMT = 9998 ) 272 WRITE( NOUT, FMT = 9997 )S2 - S1 273* 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 >=', 278 $ I6 ) 279 9995 FORMAT( ' !! Invalid input value: ', A4, '=', I6, '; must be <=', 280 $ I6 ) 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 ) 288* 289* End of CCHKRFP 290* 291 END 292