00001 PROGRAM CBLAT1
00002
00003
00004
00005
00006 INTEGER NOUT
00007 PARAMETER (NOUT=6)
00008
00009 INTEGER ICASE, INCX, INCY, MODE, N
00010 LOGICAL PASS
00011
00012 REAL SFAC
00013 INTEGER IC
00014
00015 EXTERNAL CHECK1, CHECK2, HEADER
00016
00017 COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
00018
00019 DATA SFAC/9.765625E-4/
00020
00021 WRITE (NOUT,99999)
00022 DO 20 IC = 1, 10
00023 ICASE = IC
00024 CALL HEADER
00025
00026
00027
00028
00029
00030
00031 PASS = .TRUE.
00032 INCX = 9999
00033 INCY = 9999
00034 MODE = 9999
00035 IF (ICASE.LE.5) THEN
00036 CALL CHECK2(SFAC)
00037 ELSE IF (ICASE.GE.6) THEN
00038 CALL CHECK1(SFAC)
00039 END IF
00040
00041 IF (PASS) WRITE (NOUT,99998)
00042 20 CONTINUE
00043 STOP
00044
00045 99999 FORMAT (' Complex BLAS Test Program Results',/1X)
00046 99998 FORMAT (' ----- PASS -----')
00047 END
00048 SUBROUTINE HEADER
00049
00050 INTEGER NOUT
00051 PARAMETER (NOUT=6)
00052
00053 INTEGER ICASE, INCX, INCY, MODE, N
00054 LOGICAL PASS
00055
00056 CHARACTER*6 L(10)
00057
00058 COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
00059
00060 DATA L(1)/'CDOTC '/
00061 DATA L(2)/'CDOTU '/
00062 DATA L(3)/'CAXPY '/
00063 DATA L(4)/'CCOPY '/
00064 DATA L(5)/'CSWAP '/
00065 DATA L(6)/'SCNRM2'/
00066 DATA L(7)/'SCASUM'/
00067 DATA L(8)/'CSCAL '/
00068 DATA L(9)/'CSSCAL'/
00069 DATA L(10)/'ICAMAX'/
00070
00071 WRITE (NOUT,99999) ICASE, L(ICASE)
00072 RETURN
00073
00074 99999 FORMAT (/' Test of subprogram number',I3,12X,A6)
00075 END
00076 SUBROUTINE CHECK1(SFAC)
00077
00078 INTEGER NOUT
00079 PARAMETER (NOUT=6)
00080
00081 REAL SFAC
00082
00083 INTEGER ICASE, INCX, INCY, MODE, N
00084 LOGICAL PASS
00085
00086 COMPLEX CA
00087 REAL SA
00088 INTEGER I, J, LEN, NP1
00089
00090 COMPLEX CTRUE5(8,5,2), CTRUE6(8,5,2), CV(8,5,2), CX(8),
00091 + MWPCS(5), MWPCT(5)
00092 REAL STRUE2(5), STRUE4(5)
00093 INTEGER ITRUE3(5)
00094
00095 REAL SCASUM, SCNRM2
00096 INTEGER ICAMAX
00097 EXTERNAL SCASUM, SCNRM2, ICAMAX
00098
00099 EXTERNAL CSCAL, CSSCAL, CTEST, ITEST1, STEST1
00100
00101 INTRINSIC MAX
00102
00103 COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
00104
00105 DATA SA, CA/0.3E0, (0.4E0,-0.7E0)/
00106 DATA ((CV(I,J,1),I=1,8),J=1,5)/(0.1E0,0.1E0),
00107 + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
00108 + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
00109 + (1.0E0,2.0E0), (0.3E0,-0.4E0), (3.0E0,4.0E0),
00110 + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
00111 + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
00112 + (0.1E0,-0.3E0), (0.5E0,-0.1E0), (5.0E0,6.0E0),
00113 + (5.0E0,6.0E0), (5.0E0,6.0E0), (5.0E0,6.0E0),
00114 + (5.0E0,6.0E0), (5.0E0,6.0E0), (0.1E0,0.1E0),
00115 + (-0.6E0,0.1E0), (0.1E0,-0.3E0), (7.0E0,8.0E0),
00116 + (7.0E0,8.0E0), (7.0E0,8.0E0), (7.0E0,8.0E0),
00117 + (7.0E0,8.0E0), (0.3E0,0.1E0), (0.5E0,0.0E0),
00118 + (0.0E0,0.5E0), (0.0E0,0.2E0), (2.0E0,3.0E0),
00119 + (2.0E0,3.0E0), (2.0E0,3.0E0), (2.0E0,3.0E0)/
00120 DATA ((CV(I,J,2),I=1,8),J=1,5)/(0.1E0,0.1E0),
00121 + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
00122 + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
00123 + (4.0E0,5.0E0), (0.3E0,-0.4E0), (6.0E0,7.0E0),
00124 + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
00125 + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
00126 + (0.1E0,-0.3E0), (8.0E0,9.0E0), (0.5E0,-0.1E0),
00127 + (2.0E0,5.0E0), (2.0E0,5.0E0), (2.0E0,5.0E0),
00128 + (2.0E0,5.0E0), (2.0E0,5.0E0), (0.1E0,0.1E0),
00129 + (3.0E0,6.0E0), (-0.6E0,0.1E0), (4.0E0,7.0E0),
00130 + (0.1E0,-0.3E0), (7.0E0,2.0E0), (7.0E0,2.0E0),
00131 + (7.0E0,2.0E0), (0.3E0,0.1E0), (5.0E0,8.0E0),
00132 + (0.5E0,0.0E0), (6.0E0,9.0E0), (0.0E0,0.5E0),
00133 + (8.0E0,3.0E0), (0.0E0,0.2E0), (9.0E0,4.0E0)/
00134 DATA STRUE2/0.0E0, 0.5E0, 0.6E0, 0.7E0, 0.8E0/
00135 DATA STRUE4/0.0E0, 0.7E0, 1.0E0, 1.3E0, 1.6E0/
00136 DATA ((CTRUE5(I,J,1),I=1,8),J=1,5)/(0.1E0,0.1E0),
00137 + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
00138 + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
00139 + (1.0E0,2.0E0), (-0.16E0,-0.37E0), (3.0E0,4.0E0),
00140 + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
00141 + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
00142 + (-0.17E0,-0.19E0), (0.13E0,-0.39E0),
00143 + (5.0E0,6.0E0), (5.0E0,6.0E0), (5.0E0,6.0E0),
00144 + (5.0E0,6.0E0), (5.0E0,6.0E0), (5.0E0,6.0E0),
00145 + (0.11E0,-0.03E0), (-0.17E0,0.46E0),
00146 + (-0.17E0,-0.19E0), (7.0E0,8.0E0), (7.0E0,8.0E0),
00147 + (7.0E0,8.0E0), (7.0E0,8.0E0), (7.0E0,8.0E0),
00148 + (0.19E0,-0.17E0), (0.20E0,-0.35E0),
00149 + (0.35E0,0.20E0), (0.14E0,0.08E0),
00150 + (2.0E0,3.0E0), (2.0E0,3.0E0), (2.0E0,3.0E0),
00151 + (2.0E0,3.0E0)/
00152 DATA ((CTRUE5(I,J,2),I=1,8),J=1,5)/(0.1E0,0.1E0),
00153 + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
00154 + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
00155 + (4.0E0,5.0E0), (-0.16E0,-0.37E0), (6.0E0,7.0E0),
00156 + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
00157 + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
00158 + (-0.17E0,-0.19E0), (8.0E0,9.0E0),
00159 + (0.13E0,-0.39E0), (2.0E0,5.0E0), (2.0E0,5.0E0),
00160 + (2.0E0,5.0E0), (2.0E0,5.0E0), (2.0E0,5.0E0),
00161 + (0.11E0,-0.03E0), (3.0E0,6.0E0),
00162 + (-0.17E0,0.46E0), (4.0E0,7.0E0),
00163 + (-0.17E0,-0.19E0), (7.0E0,2.0E0), (7.0E0,2.0E0),
00164 + (7.0E0,2.0E0), (0.19E0,-0.17E0), (5.0E0,8.0E0),
00165 + (0.20E0,-0.35E0), (6.0E0,9.0E0),
00166 + (0.35E0,0.20E0), (8.0E0,3.0E0),
00167 + (0.14E0,0.08E0), (9.0E0,4.0E0)/
00168 DATA ((CTRUE6(I,J,1),I=1,8),J=1,5)/(0.1E0,0.1E0),
00169 + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
00170 + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
00171 + (1.0E0,2.0E0), (0.09E0,-0.12E0), (3.0E0,4.0E0),
00172 + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
00173 + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
00174 + (0.03E0,-0.09E0), (0.15E0,-0.03E0),
00175 + (5.0E0,6.0E0), (5.0E0,6.0E0), (5.0E0,6.0E0),
00176 + (5.0E0,6.0E0), (5.0E0,6.0E0), (5.0E0,6.0E0),
00177 + (0.03E0,0.03E0), (-0.18E0,0.03E0),
00178 + (0.03E0,-0.09E0), (7.0E0,8.0E0), (7.0E0,8.0E0),
00179 + (7.0E0,8.0E0), (7.0E0,8.0E0), (7.0E0,8.0E0),
00180 + (0.09E0,0.03E0), (0.15E0,0.00E0),
00181 + (0.00E0,0.15E0), (0.00E0,0.06E0), (2.0E0,3.0E0),
00182 + (2.0E0,3.0E0), (2.0E0,3.0E0), (2.0E0,3.0E0)/
00183 DATA ((CTRUE6(I,J,2),I=1,8),J=1,5)/(0.1E0,0.1E0),
00184 + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
00185 + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
00186 + (4.0E0,5.0E0), (0.09E0,-0.12E0), (6.0E0,7.0E0),
00187 + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
00188 + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
00189 + (0.03E0,-0.09E0), (8.0E0,9.0E0),
00190 + (0.15E0,-0.03E0), (2.0E0,5.0E0), (2.0E0,5.0E0),
00191 + (2.0E0,5.0E0), (2.0E0,5.0E0), (2.0E0,5.0E0),
00192 + (0.03E0,0.03E0), (3.0E0,6.0E0),
00193 + (-0.18E0,0.03E0), (4.0E0,7.0E0),
00194 + (0.03E0,-0.09E0), (7.0E0,2.0E0), (7.0E0,2.0E0),
00195 + (7.0E0,2.0E0), (0.09E0,0.03E0), (5.0E0,8.0E0),
00196 + (0.15E0,0.00E0), (6.0E0,9.0E0), (0.00E0,0.15E0),
00197 + (8.0E0,3.0E0), (0.00E0,0.06E0), (9.0E0,4.0E0)/
00198 DATA ITRUE3/0, 1, 2, 2, 2/
00199
00200 DO 60 INCX = 1, 2
00201 DO 40 NP1 = 1, 5
00202 N = NP1 - 1
00203 LEN = 2*MAX(N,1)
00204
00205 DO 20 I = 1, LEN
00206 CX(I) = CV(I,NP1,INCX)
00207 20 CONTINUE
00208 IF (ICASE.EQ.6) THEN
00209
00210 CALL STEST1(SCNRM2(N,CX,INCX),STRUE2(NP1),STRUE2(NP1),
00211 + SFAC)
00212 ELSE IF (ICASE.EQ.7) THEN
00213
00214 CALL STEST1(SCASUM(N,CX,INCX),STRUE4(NP1),STRUE4(NP1),
00215 + SFAC)
00216 ELSE IF (ICASE.EQ.8) THEN
00217
00218 CALL CSCAL(N,CA,CX,INCX)
00219 CALL CTEST(LEN,CX,CTRUE5(1,NP1,INCX),CTRUE5(1,NP1,INCX),
00220 + SFAC)
00221 ELSE IF (ICASE.EQ.9) THEN
00222
00223 CALL CSSCAL(N,SA,CX,INCX)
00224 CALL CTEST(LEN,CX,CTRUE6(1,NP1,INCX),CTRUE6(1,NP1,INCX),
00225 + SFAC)
00226 ELSE IF (ICASE.EQ.10) THEN
00227
00228 CALL ITEST1(ICAMAX(N,CX,INCX),ITRUE3(NP1))
00229 ELSE
00230 WRITE (NOUT,*) ' Shouldn''t be here in CHECK1'
00231 STOP
00232 END IF
00233
00234 40 CONTINUE
00235 60 CONTINUE
00236
00237 INCX = 1
00238 IF (ICASE.EQ.8) THEN
00239
00240
00241 CA = (0.0E0,0.0E0)
00242 DO 80 I = 1, 5
00243 MWPCT(I) = (0.0E0,0.0E0)
00244 MWPCS(I) = (1.0E0,1.0E0)
00245 80 CONTINUE
00246 CALL CSCAL(5,CA,CX,INCX)
00247 CALL CTEST(5,CX,MWPCT,MWPCS,SFAC)
00248 ELSE IF (ICASE.EQ.9) THEN
00249
00250
00251 SA = 0.0E0
00252 DO 100 I = 1, 5
00253 MWPCT(I) = (0.0E0,0.0E0)
00254 MWPCS(I) = (1.0E0,1.0E0)
00255 100 CONTINUE
00256 CALL CSSCAL(5,SA,CX,INCX)
00257 CALL CTEST(5,CX,MWPCT,MWPCS,SFAC)
00258
00259 SA = 1.0E0
00260 DO 120 I = 1, 5
00261 MWPCT(I) = CX(I)
00262 MWPCS(I) = CX(I)
00263 120 CONTINUE
00264 CALL CSSCAL(5,SA,CX,INCX)
00265 CALL CTEST(5,CX,MWPCT,MWPCS,SFAC)
00266
00267 SA = -1.0E0
00268 DO 140 I = 1, 5
00269 MWPCT(I) = -CX(I)
00270 MWPCS(I) = -CX(I)
00271 140 CONTINUE
00272 CALL CSSCAL(5,SA,CX,INCX)
00273 CALL CTEST(5,CX,MWPCT,MWPCS,SFAC)
00274 END IF
00275 RETURN
00276 END
00277 SUBROUTINE CHECK2(SFAC)
00278
00279 INTEGER NOUT
00280 PARAMETER (NOUT=6)
00281
00282 REAL SFAC
00283
00284 INTEGER ICASE, INCX, INCY, MODE, N
00285 LOGICAL PASS
00286
00287 COMPLEX CA
00288 INTEGER I, J, KI, KN, KSIZE, LENX, LENY, MX, MY
00289
00290 COMPLEX CDOT(1), CSIZE1(4), CSIZE2(7,2), CSIZE3(14),
00291 + CT10X(7,4,4), CT10Y(7,4,4), CT6(4,4), CT7(4,4),
00292 + CT8(7,4,4), CX(7), CX1(7), CY(7), CY1(7)
00293 INTEGER INCXS(4), INCYS(4), LENS(4,2), NS(4)
00294
00295 COMPLEX CDOTC, CDOTU
00296 EXTERNAL CDOTC, CDOTU
00297
00298 EXTERNAL CAXPY, CCOPY, CSWAP, CTEST
00299
00300 INTRINSIC ABS, MIN
00301
00302 COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
00303
00304 DATA CA/(0.4E0,-0.7E0)/
00305 DATA INCXS/1, 2, -2, -1/
00306 DATA INCYS/1, -2, 1, -2/
00307 DATA LENS/1, 1, 2, 4, 1, 1, 3, 7/
00308 DATA NS/0, 1, 2, 4/
00309 DATA CX1/(0.7E0,-0.8E0), (-0.4E0,-0.7E0),
00310 + (-0.1E0,-0.9E0), (0.2E0,-0.8E0),
00311 + (-0.9E0,-0.4E0), (0.1E0,0.4E0), (-0.6E0,0.6E0)/
00312 DATA CY1/(0.6E0,-0.6E0), (-0.9E0,0.5E0),
00313 + (0.7E0,-0.6E0), (0.1E0,-0.5E0), (-0.1E0,-0.2E0),
00314 + (-0.5E0,-0.3E0), (0.8E0,-0.7E0)/
00315 DATA ((CT8(I,J,1),I=1,7),J=1,4)/(0.6E0,-0.6E0),
00316 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00317 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00318 + (0.32E0,-1.41E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00319 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00320 + (0.0E0,0.0E0), (0.32E0,-1.41E0),
00321 + (-1.55E0,0.5E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00322 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00323 + (0.32E0,-1.41E0), (-1.55E0,0.5E0),
00324 + (0.03E0,-0.89E0), (-0.38E0,-0.96E0),
00325 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0)/
00326 DATA ((CT8(I,J,2),I=1,7),J=1,4)/(0.6E0,-0.6E0),
00327 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00328 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00329 + (0.32E0,-1.41E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00330 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00331 + (0.0E0,0.0E0), (-0.07E0,-0.89E0),
00332 + (-0.9E0,0.5E0), (0.42E0,-1.41E0), (0.0E0,0.0E0),
00333 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00334 + (0.78E0,0.06E0), (-0.9E0,0.5E0),
00335 + (0.06E0,-0.13E0), (0.1E0,-0.5E0),
00336 + (-0.77E0,-0.49E0), (-0.5E0,-0.3E0),
00337 + (0.52E0,-1.51E0)/
00338 DATA ((CT8(I,J,3),I=1,7),J=1,4)/(0.6E0,-0.6E0),
00339 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00340 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00341 + (0.32E0,-1.41E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00342 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00343 + (0.0E0,0.0E0), (-0.07E0,-0.89E0),
00344 + (-1.18E0,-0.31E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00345 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00346 + (0.78E0,0.06E0), (-1.54E0,0.97E0),
00347 + (0.03E0,-0.89E0), (-0.18E0,-1.31E0),
00348 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0)/
00349 DATA ((CT8(I,J,4),I=1,7),J=1,4)/(0.6E0,-0.6E0),
00350 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00351 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00352 + (0.32E0,-1.41E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00353 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00354 + (0.0E0,0.0E0), (0.32E0,-1.41E0), (-0.9E0,0.5E0),
00355 + (0.05E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00356 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.32E0,-1.41E0),
00357 + (-0.9E0,0.5E0), (0.05E0,-0.6E0), (0.1E0,-0.5E0),
00358 + (-0.77E0,-0.49E0), (-0.5E0,-0.3E0),
00359 + (0.32E0,-1.16E0)/
00360 DATA CT7/(0.0E0,0.0E0), (-0.06E0,-0.90E0),
00361 + (0.65E0,-0.47E0), (-0.34E0,-1.22E0),
00362 + (0.0E0,0.0E0), (-0.06E0,-0.90E0),
00363 + (-0.59E0,-1.46E0), (-1.04E0,-0.04E0),
00364 + (0.0E0,0.0E0), (-0.06E0,-0.90E0),
00365 + (-0.83E0,0.59E0), (0.07E0,-0.37E0),
00366 + (0.0E0,0.0E0), (-0.06E0,-0.90E0),
00367 + (-0.76E0,-1.15E0), (-1.33E0,-1.82E0)/
00368 DATA CT6/(0.0E0,0.0E0), (0.90E0,0.06E0),
00369 + (0.91E0,-0.77E0), (1.80E0,-0.10E0),
00370 + (0.0E0,0.0E0), (0.90E0,0.06E0), (1.45E0,0.74E0),
00371 + (0.20E0,0.90E0), (0.0E0,0.0E0), (0.90E0,0.06E0),
00372 + (-0.55E0,0.23E0), (0.83E0,-0.39E0),
00373 + (0.0E0,0.0E0), (0.90E0,0.06E0), (1.04E0,0.79E0),
00374 + (1.95E0,1.22E0)/
00375 DATA ((CT10X(I,J,1),I=1,7),J=1,4)/(0.7E0,-0.8E0),
00376 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00377 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00378 + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00379 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00380 + (0.0E0,0.0E0), (0.6E0,-0.6E0), (-0.9E0,0.5E0),
00381 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00382 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.6E0,-0.6E0),
00383 + (-0.9E0,0.5E0), (0.7E0,-0.6E0), (0.1E0,-0.5E0),
00384 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0)/
00385 DATA ((CT10X(I,J,2),I=1,7),J=1,4)/(0.7E0,-0.8E0),
00386 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00387 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00388 + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00389 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00390 + (0.0E0,0.0E0), (0.7E0,-0.6E0), (-0.4E0,-0.7E0),
00391 + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00392 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.8E0,-0.7E0),
00393 + (-0.4E0,-0.7E0), (-0.1E0,-0.2E0),
00394 + (0.2E0,-0.8E0), (0.7E0,-0.6E0), (0.1E0,0.4E0),
00395 + (0.6E0,-0.6E0)/
00396 DATA ((CT10X(I,J,3),I=1,7),J=1,4)/(0.7E0,-0.8E0),
00397 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00398 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00399 + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00400 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00401 + (0.0E0,0.0E0), (-0.9E0,0.5E0), (-0.4E0,-0.7E0),
00402 + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00403 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.1E0,-0.5E0),
00404 + (-0.4E0,-0.7E0), (0.7E0,-0.6E0), (0.2E0,-0.8E0),
00405 + (-0.9E0,0.5E0), (0.1E0,0.4E0), (0.6E0,-0.6E0)/
00406 DATA ((CT10X(I,J,4),I=1,7),J=1,4)/(0.7E0,-0.8E0),
00407 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00408 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00409 + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00410 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00411 + (0.0E0,0.0E0), (0.6E0,-0.6E0), (0.7E0,-0.6E0),
00412 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00413 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.6E0,-0.6E0),
00414 + (0.7E0,-0.6E0), (-0.1E0,-0.2E0), (0.8E0,-0.7E0),
00415 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0)/
00416 DATA ((CT10Y(I,J,1),I=1,7),J=1,4)/(0.6E0,-0.6E0),
00417 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00418 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00419 + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00420 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00421 + (0.0E0,0.0E0), (0.7E0,-0.8E0), (-0.4E0,-0.7E0),
00422 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00423 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.7E0,-0.8E0),
00424 + (-0.4E0,-0.7E0), (-0.1E0,-0.9E0),
00425 + (0.2E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00426 + (0.0E0,0.0E0)/
00427 DATA ((CT10Y(I,J,2),I=1,7),J=1,4)/(0.6E0,-0.6E0),
00428 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00429 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00430 + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00431 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00432 + (0.0E0,0.0E0), (-0.1E0,-0.9E0), (-0.9E0,0.5E0),
00433 + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00434 + (0.0E0,0.0E0), (0.0E0,0.0E0), (-0.6E0,0.6E0),
00435 + (-0.9E0,0.5E0), (-0.9E0,-0.4E0), (0.1E0,-0.5E0),
00436 + (-0.1E0,-0.9E0), (-0.5E0,-0.3E0),
00437 + (0.7E0,-0.8E0)/
00438 DATA ((CT10Y(I,J,3),I=1,7),J=1,4)/(0.6E0,-0.6E0),
00439 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00440 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00441 + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00442 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00443 + (0.0E0,0.0E0), (-0.1E0,-0.9E0), (0.7E0,-0.8E0),
00444 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00445 + (0.0E0,0.0E0), (0.0E0,0.0E0), (-0.6E0,0.6E0),
00446 + (-0.9E0,-0.4E0), (-0.1E0,-0.9E0),
00447 + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00448 + (0.0E0,0.0E0)/
00449 DATA ((CT10Y(I,J,4),I=1,7),J=1,4)/(0.6E0,-0.6E0),
00450 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00451 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00452 + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00453 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00454 + (0.0E0,0.0E0), (0.7E0,-0.8E0), (-0.9E0,0.5E0),
00455 + (-0.4E0,-0.7E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00456 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.7E0,-0.8E0),
00457 + (-0.9E0,0.5E0), (-0.4E0,-0.7E0), (0.1E0,-0.5E0),
00458 + (-0.1E0,-0.9E0), (-0.5E0,-0.3E0),
00459 + (0.2E0,-0.8E0)/
00460 DATA CSIZE1/(0.0E0,0.0E0), (0.9E0,0.9E0),
00461 + (1.63E0,1.73E0), (2.90E0,2.78E0)/
00462 DATA CSIZE3/(0.0E0,0.0E0), (0.0E0,0.0E0),
00463 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00464 + (0.0E0,0.0E0), (0.0E0,0.0E0), (1.17E0,1.17E0),
00465 + (1.17E0,1.17E0), (1.17E0,1.17E0),
00466 + (1.17E0,1.17E0), (1.17E0,1.17E0),
00467 + (1.17E0,1.17E0), (1.17E0,1.17E0)/
00468 DATA CSIZE2/(0.0E0,0.0E0), (0.0E0,0.0E0),
00469 + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
00470 + (0.0E0,0.0E0), (0.0E0,0.0E0), (1.54E0,1.54E0),
00471 + (1.54E0,1.54E0), (1.54E0,1.54E0),
00472 + (1.54E0,1.54E0), (1.54E0,1.54E0),
00473 + (1.54E0,1.54E0), (1.54E0,1.54E0)/
00474
00475 DO 60 KI = 1, 4
00476 INCX = INCXS(KI)
00477 INCY = INCYS(KI)
00478 MX = ABS(INCX)
00479 MY = ABS(INCY)
00480
00481 DO 40 KN = 1, 4
00482 N = NS(KN)
00483 KSIZE = MIN(2,KN)
00484 LENX = LENS(KN,MX)
00485 LENY = LENS(KN,MY)
00486
00487 DO 20 I = 1, 7
00488 CX(I) = CX1(I)
00489 CY(I) = CY1(I)
00490 20 CONTINUE
00491 IF (ICASE.EQ.1) THEN
00492
00493 CDOT(1) = CDOTC(N,CX,INCX,CY,INCY)
00494 CALL CTEST(1,CDOT,CT6(KN,KI),CSIZE1(KN),SFAC)
00495 ELSE IF (ICASE.EQ.2) THEN
00496
00497 CDOT(1) = CDOTU(N,CX,INCX,CY,INCY)
00498 CALL CTEST(1,CDOT,CT7(KN,KI),CSIZE1(KN),SFAC)
00499 ELSE IF (ICASE.EQ.3) THEN
00500
00501 CALL CAXPY(N,CA,CX,INCX,CY,INCY)
00502 CALL CTEST(LENY,CY,CT8(1,KN,KI),CSIZE2(1,KSIZE),SFAC)
00503 ELSE IF (ICASE.EQ.4) THEN
00504
00505 CALL CCOPY(N,CX,INCX,CY,INCY)
00506 CALL CTEST(LENY,CY,CT10Y(1,KN,KI),CSIZE3,1.0E0)
00507 ELSE IF (ICASE.EQ.5) THEN
00508
00509 CALL CSWAP(N,CX,INCX,CY,INCY)
00510 CALL CTEST(LENX,CX,CT10X(1,KN,KI),CSIZE3,1.0E0)
00511 CALL CTEST(LENY,CY,CT10Y(1,KN,KI),CSIZE3,1.0E0)
00512 ELSE
00513 WRITE (NOUT,*) ' Shouldn''t be here in CHECK2'
00514 STOP
00515 END IF
00516
00517 40 CONTINUE
00518 60 CONTINUE
00519 RETURN
00520 END
00521 SUBROUTINE STEST(LEN,SCOMP,STRUE,SSIZE,SFAC)
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531 INTEGER NOUT
00532 PARAMETER (NOUT=6)
00533
00534 REAL SFAC
00535 INTEGER LEN
00536
00537 REAL SCOMP(LEN), SSIZE(LEN), STRUE(LEN)
00538
00539 INTEGER ICASE, INCX, INCY, MODE, N
00540 LOGICAL PASS
00541
00542 REAL SD
00543 INTEGER I
00544
00545 REAL SDIFF
00546 EXTERNAL SDIFF
00547
00548 INTRINSIC ABS
00549
00550 COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
00551
00552
00553 DO 40 I = 1, LEN
00554 SD = SCOMP(I) - STRUE(I)
00555 IF (SDIFF(ABS(SSIZE(I))+ABS(SFAC*SD),ABS(SSIZE(I))).EQ.0.0E0)
00556 + GO TO 40
00557
00558
00559
00560 IF ( .NOT. PASS) GO TO 20
00561
00562 PASS = .FALSE.
00563 WRITE (NOUT,99999)
00564 WRITE (NOUT,99998)
00565 20 WRITE (NOUT,99997) ICASE, N, INCX, INCY, MODE, I, SCOMP(I),
00566 + STRUE(I), SD, SSIZE(I)
00567 40 CONTINUE
00568 RETURN
00569
00570 99999 FORMAT (' FAIL')
00571 99998 FORMAT (/' CASE N INCX INCY MODE I ',
00572 + ' COMP(I) TRUE(I) DIFFERENCE',
00573 + ' SIZE(I)',/1X)
00574 99997 FORMAT (1X,I4,I3,3I5,I3,2E36.8,2E12.4)
00575 END
00576 SUBROUTINE STEST1(SCOMP1,STRUE1,SSIZE,SFAC)
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586 REAL SCOMP1, SFAC, STRUE1
00587
00588 REAL SSIZE(*)
00589
00590 REAL SCOMP(1), STRUE(1)
00591
00592 EXTERNAL STEST
00593
00594
00595 SCOMP(1) = SCOMP1
00596 STRUE(1) = STRUE1
00597 CALL STEST(1,SCOMP,STRUE,SSIZE,SFAC)
00598
00599 RETURN
00600 END
00601 REAL FUNCTION SDIFF(SA,SB)
00602
00603
00604
00605
00606 REAL SA, SB
00607
00608 SDIFF = SA - SB
00609 RETURN
00610 END
00611 SUBROUTINE CTEST(LEN,CCOMP,CTRUE,CSIZE,SFAC)
00612
00613
00614
00615
00616
00617 REAL SFAC
00618 INTEGER LEN
00619
00620 COMPLEX CCOMP(LEN), CSIZE(LEN), CTRUE(LEN)
00621
00622 INTEGER I
00623
00624 REAL SCOMP(20), SSIZE(20), STRUE(20)
00625
00626 EXTERNAL STEST
00627
00628 INTRINSIC AIMAG, REAL
00629
00630 DO 20 I = 1, LEN
00631 SCOMP(2*I-1) = REAL(CCOMP(I))
00632 SCOMP(2*I) = AIMAG(CCOMP(I))
00633 STRUE(2*I-1) = REAL(CTRUE(I))
00634 STRUE(2*I) = AIMAG(CTRUE(I))
00635 SSIZE(2*I-1) = REAL(CSIZE(I))
00636 SSIZE(2*I) = AIMAG(CSIZE(I))
00637 20 CONTINUE
00638
00639 CALL STEST(2*LEN,SCOMP,STRUE,SSIZE,SFAC)
00640 RETURN
00641 END
00642 SUBROUTINE ITEST1(ICOMP,ITRUE)
00643
00644
00645
00646
00647
00648
00649
00650 INTEGER NOUT
00651 PARAMETER (NOUT=6)
00652
00653 INTEGER ICOMP, ITRUE
00654
00655 INTEGER ICASE, INCX, INCY, MODE, N
00656 LOGICAL PASS
00657
00658 INTEGER ID
00659
00660 COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
00661
00662 IF (ICOMP.EQ.ITRUE) GO TO 40
00663
00664
00665
00666 IF ( .NOT. PASS) GO TO 20
00667
00668 PASS = .FALSE.
00669 WRITE (NOUT,99999)
00670 WRITE (NOUT,99998)
00671 20 ID = ICOMP - ITRUE
00672 WRITE (NOUT,99997) ICASE, N, INCX, INCY, MODE, ICOMP, ITRUE, ID
00673 40 CONTINUE
00674 RETURN
00675
00676 99999 FORMAT (' FAIL')
00677 99998 FORMAT (/' CASE N INCX INCY MODE ',
00678 + ' COMP TRUE DIFFERENCE',
00679 + /1X)
00680 99997 FORMAT (1X,I4,I3,3I5,2I36,I12)
00681 END