51 INTEGER icase, incx, incy, n
59 COMMON /combla/icase, n, incx, incy, pass
61 DATA sfac/9.765625d-4/
76 IF (icase.EQ.3 .OR. icase.EQ.11)
THEN
78 ELSE IF (icase.EQ.7 .OR. icase.EQ.8 .OR. icase.EQ.9 .OR.
81 ELSE IF (icase.EQ.1 .OR. icase.EQ.2 .OR. icase.EQ.5 .OR.
82 + icase.EQ.6 .OR. icase.EQ.12 .OR. icase.EQ.13)
THEN
84 ELSE IF (icase.EQ.4)
THEN
88 IF (pass)
WRITE (nout,99998)
92 99999
FORMAT (
' Real BLAS Test Program Results',/1x)
93 99998
FORMAT (
' ----- PASS -----')
100 INTEGER ICASE, INCX, INCY, N
105 COMMON /combla/icase, n, incx, incy, pass
121 WRITE (nout,99999) icase, l(icase)
124 99999
FORMAT (/
' Test of subprogram number',i3,12x,a6)
131 DOUBLE PRECISION SFAC
133 INTEGER ICASE, INCX, INCY, N
136 DOUBLE PRECISION SA, SB, SC, SS, D12
139 DOUBLE PRECISION DA1(8), DATRUE(8), DB1(8), DBTRUE(8), DC1(8),
140 $ DS1(8), DAB(4,9), DTEMP(9), DTRUE(9,9)
144 COMMON /combla/icase, n, incx, incy, pass
146 DATA da1/0.3d0, 0.4d0, -0.3d0, -0.4d0, -0.3d0, 0.0d0,
148 DATA db1/0.4d0, 0.3d0, 0.4d0, 0.3d0, -0.4d0, 0.0d0,
150 DATA dc1/0.6d0, 0.8d0, -0.6d0, 0.8d0, 0.6d0, 1.0d0,
152 DATA ds1/0.8d0, 0.6d0, 0.8d0, -0.6d0, 0.8d0, 0.0d0,
154 DATA datrue/0.5d0, 0.5d0, 0.5d0, -0.5d0, -0.5d0,
155 + 0.0d0, 1.0d0, 1.0d0/
156 DATA dbtrue/0.0d0, 0.6d0, 0.0d0, -0.6d0, 0.0d0,
157 + 0.0d0, 1.0d0, 0.0d0/
159 DATA dab/ .1d0,.3d0,1.2d0,.2d0,
160 a .7d0, .2d0, .6d0, 4.2d0,
161 b 0.d0,0.d0,0.d0,0.d0,
162 c 4.d0, -1.d0, 2.d0, 4.d0,
163 d 6.d-10, 2.d-2, 1.d5, 10.d0,
164 e 4.d10, 2.d-2, 1.d-5, 10.d0,
165 f 2.d-10, 4.d-2, 1.d5, 10.d0,
166 g 2.d10, 4.d-2, 1.d-5, 10.d0,
167 h 4.d0, -2.d0, 8.d0, 4.d0 /
169 DATA dtrue/0.d0,0.d0, 1.3d0, .2d0, 0.d0,0.d0,0.d0, .5d0, 0.d0,
170 a 0.d0,0.d0, 4.5d0, 4.2d0, 1.d0, .5d0, 0.d0,0.d0,0.d0,
171 b 0.d0,0.d0,0.d0,0.d0, -2.d0, 0.d0,0.d0,0.d0,0.d0,
172 c 0.d0,0.d0,0.d0, 4.d0, -1.d0, 0.d0,0.d0,0.d0,0.d0,
173 d 0.d0, 15.d-3, 0.d0, 10.d0, -1.d0, 0.d0, -1.d-4,
175 f 0.d0,0.d0, 6144.d-5, 10.d0, -1.d0, 4096.d0, -1.d6,
177 h 0.d0,0.d0,15.d0,10.d0,-1.d0, 5.d-5, 0.d0,1.d0,0.d0,
178 i 0.d0,0.d0, 15.d0, 10.d0, -1. d0, 5.d5, -4096.d0,
180 k 0.d0,0.d0, 7.d0, 4.d0, 0.d0,0.d0, -.5d0, -.25d0, 0.d0/
183 dtrue(1,1) = 12.d0 / 130.d0
184 dtrue(2,1) = 36.d0 / 130.d0
185 dtrue(7,1) = -1.d0 / 6.d0
186 dtrue(1,2) = 14.d0 / 75.d0
187 dtrue(2,2) = 49.d0 / 75.d0
188 dtrue(9,2) = 1.d0 / 7.d0
189 dtrue(1,5) = 45.d-11 * (d12 * d12)
190 dtrue(3,5) = 4.d5 / (3.d0 * d12)
191 dtrue(6,5) = 1.d0 / d12
192 dtrue(8,5) = 1.d4 / (3.d0 * d12)
193 dtrue(1,6) = 4.d10 / (1.5d0 * d12 * d12)
194 dtrue(2,6) = 2.d-2 / 1.5d0
195 dtrue(8,6) = 5.d-7 * d12
196 dtrue(1,7) = 4.d0 / 150.d0
197 dtrue(2,7) = (2.d-10 / 1.5d0) * (d12 * d12)
198 dtrue(7,7) = -dtrue(6,5)
199 dtrue(9,7) = 1.d4 / d12
200 dtrue(1,8) = dtrue(1,7)
201 dtrue(2,8) = 2.d10 / (1.5d0 * d12 * d12)
202 dtrue(1,9) = 32.d0 / 7.d0
203 dtrue(2,9) = -16.d0 / 7.d0
209 dbtrue(1) = 1.0d0/0.6d0
210 dbtrue(3) = -1.0d0/0.6d0
211 dbtrue(5) = 1.0d0/0.6d0
221 CALL drotg(sa,sb,sc,ss)
222 CALL stest1(sa,datrue(k),datrue(k),sfac)
223 CALL stest1(sb,dbtrue(k),dbtrue(k),sfac)
224 CALL stest1(sc,dc1(k),dc1(k),sfac)
225 CALL stest1(ss,ds1(k),ds1(k),sfac)
226 ELSEIF (icase.EQ.11)
THEN
233 CALL drotmg(dtemp(1),dtemp(2),dtemp(3),dtemp(4),dtemp(5))
234 CALL stest(9,dtemp,dtrue(1,k),dtrue(1,k),sfac)
236 WRITE (nout,*)
' Shouldn''t be here in CHECK0'
247 DOUBLE PRECISION SFAC
249 INTEGER ICASE, INCX, INCY, N
254 DOUBLE PRECISION DTRUE1(5), DTRUE3(5), DTRUE5(8,5,2), DV(8,5,2),
255 + SA(10), STEMP(1), STRUE(8), SX(8)
258 DOUBLE PRECISION DASUM, DNRM2
260 EXTERNAL dasum, dnrm2, idamax
266 COMMON /combla/icase, n, incx, incy, pass
268 DATA sa/0.3d0, -1.0d0, 0.0d0, 1.0d0, 0.3d0, 0.3d0,
269 + 0.3d0, 0.3d0, 0.3d0, 0.3d0/
270 DATA dv/0.1d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0,
271 + 2.0d0, 2.0d0, 0.3d0, 3.0d0, 3.0d0, 3.0d0, 3.0d0,
272 + 3.0d0, 3.0d0, 3.0d0, 0.3d0, -0.4d0, 4.0d0,
273 + 4.0d0, 4.0d0, 4.0d0, 4.0d0, 4.0d0, 0.2d0,
274 + -0.6d0, 0.3d0, 5.0d0, 5.0d0, 5.0d0, 5.0d0,
275 + 5.0d0, 0.1d0, -0.3d0, 0.5d0, -0.1d0, 6.0d0,
276 + 6.0d0, 6.0d0, 6.0d0, 0.1d0, 8.0d0, 8.0d0, 8.0d0,
277 + 8.0d0, 8.0d0, 8.0d0, 8.0d0, 0.3d0, 9.0d0, 9.0d0,
278 + 9.0d0, 9.0d0, 9.0d0, 9.0d0, 9.0d0, 0.3d0, 2.0d0,
279 + -0.4d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0,
280 + 0.2d0, 3.0d0, -0.6d0, 5.0d0, 0.3d0, 2.0d0,
281 + 2.0d0, 2.0d0, 0.1d0, 4.0d0, -0.3d0, 6.0d0,
282 + -0.5d0, 7.0d0, -0.1d0, 3.0d0/
283 DATA dtrue1/0.0d0, 0.3d0, 0.5d0, 0.7d0, 0.6d0/
284 DATA dtrue3/0.0d0, 0.3d0, 0.7d0, 1.1d0, 1.0d0/
285 DATA dtrue5/0.10d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0,
286 + 2.0d0, 2.0d0, 2.0d0, -0.3d0, 3.0d0, 3.0d0,
287 + 3.0d0, 3.0d0, 3.0d0, 3.0d0, 3.0d0, 0.0d0, 0.0d0,
288 + 4.0d0, 4.0d0, 4.0d0, 4.0d0, 4.0d0, 4.0d0,
289 + 0.20d0, -0.60d0, 0.30d0, 5.0d0, 5.0d0, 5.0d0,
290 + 5.0d0, 5.0d0, 0.03d0, -0.09d0, 0.15d0, -0.03d0,
291 + 6.0d0, 6.0d0, 6.0d0, 6.0d0, 0.10d0, 8.0d0,
292 + 8.0d0, 8.0d0, 8.0d0, 8.0d0, 8.0d0, 8.0d0,
293 + 0.09d0, 9.0d0, 9.0d0, 9.0d0, 9.0d0, 9.0d0,
294 + 9.0d0, 9.0d0, 0.09d0, 2.0d0, -0.12d0, 2.0d0,
295 + 2.0d0, 2.0d0, 2.0d0, 2.0d0, 0.06d0, 3.0d0,
296 + -0.18d0, 5.0d0, 0.09d0, 2.0d0, 2.0d0, 2.0d0,
297 + 0.03d0, 4.0d0, -0.09d0, 6.0d0, -0.15d0, 7.0d0,
299 DATA itrue2/0, 1, 2, 2, 3/
307 sx(i) = dv(i,np1,incx)
312 stemp(1) = dtrue1(np1)
313 CALL stest1(dnrm2(n,sx,incx),stemp(1),stemp,sfac)
314 ELSE IF (icase.EQ.8)
THEN
316 stemp(1) = dtrue3(np1)
317 CALL stest1(dasum(n,sx,incx),stemp(1),stemp,sfac)
318 ELSE IF (icase.EQ.9)
THEN
320 CALL dscal(n,sa((incx-1)*5+np1),sx,incx)
322 strue(i) = dtrue5(i,np1,incx)
324 CALL stest(len,sx,strue,strue,sfac)
325 ELSE IF (icase.EQ.10)
THEN
327 CALL itest1(idamax(n,sx,incx),itrue2(np1))
329 WRITE (nout,*)
' Shouldn''t be here in CHECK1'
341 DOUBLE PRECISION SFAC
343 INTEGER ICASE, INCX, INCY, N
347 INTEGER I, J, KI, KN, KNI, KPAR, KSIZE, LENX, LENY,
350 DOUBLE PRECISION DT10X(7,4,4), DT10Y(7,4,4), DT7(4,4),
351 $ DT8(7,4,4), DX1(7),
352 $ DY1(7), SSIZE1(4), SSIZE2(14,2), SSIZE(7),
353 $ STX(7), STY(7), SX(7), SY(7),
354 $ DPAR(5,4), DT19X(7,4,16),DT19XA(7,4,4),
355 $ DT19XB(7,4,4), DT19XC(7,4,4),DT19XD(7,4,4),
356 $ DT19Y(7,4,16), DT19YA(7,4,4),DT19YB(7,4,4),
357 $ DT19YC(7,4,4), DT19YD(7,4,4), DTEMP(5)
358 INTEGER INCXS(4), INCYS(4), LENS(4,2), NS(4)
360 DOUBLE PRECISION DDOT, DSDOT
368 COMMON /combla/icase, n, incx, incy, pass
370 equivalence(dt19x(1,1,1),dt19xa(1,1,1)),(dt19x(1,1,5),
371 a dt19xb(1,1,1)),(dt19x(1,1,9),dt19xc(1,1,1)),
372 b (dt19x(1,1,13),dt19xd(1,1,1))
373 equivalence(dt19y(1,1,1),dt19ya(1,1,1)),(dt19y(1,1,5),
374 a dt19yb(1,1,1)),(dt19y(1,1,9),dt19yc(1,1,1)),
375 b (dt19y(1,1,13),dt19yd(1,1,1))
378 DATA incxs/1, 2, -2, -1/
379 DATA incys/1, -2, 1, -2/
380 DATA lens/1, 1, 2, 4, 1, 1, 3, 7/
382 DATA dx1/0.6d0, 0.1d0, -0.5d0, 0.8d0, 0.9d0, -0.3d0,
384 DATA dy1/0.5d0, -0.9d0, 0.3d0, 0.7d0, -0.6d0, 0.2d0,
386 DATA dt7/0.0d0, 0.30d0, 0.21d0, 0.62d0, 0.0d0,
387 + 0.30d0, -0.07d0, 0.85d0, 0.0d0, 0.30d0, -0.79d0,
388 + -0.74d0, 0.0d0, 0.30d0, 0.33d0, 1.27d0/
389 DATA dt8/0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
390 + 0.0d0, 0.68d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
391 + 0.0d0, 0.0d0, 0.68d0, -0.87d0, 0.0d0, 0.0d0,
392 + 0.0d0, 0.0d0, 0.0d0, 0.68d0, -0.87d0, 0.15d0,
393 + 0.94d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0,
394 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.68d0,
395 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
396 + 0.35d0, -0.9d0, 0.48d0, 0.0d0, 0.0d0, 0.0d0,
397 + 0.0d0, 0.38d0, -0.9d0, 0.57d0, 0.7d0, -0.75d0,
398 + 0.2d0, 0.98d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0,
399 + 0.0d0, 0.0d0, 0.0d0, 0.68d0, 0.0d0, 0.0d0,
400 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.35d0, -0.72d0,
401 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.38d0,
402 + -0.63d0, 0.15d0, 0.88d0, 0.0d0, 0.0d0, 0.0d0,
403 + 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
404 + 0.68d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
405 + 0.0d0, 0.68d0, -0.9d0, 0.33d0, 0.0d0, 0.0d0,
406 + 0.0d0, 0.0d0, 0.68d0, -0.9d0, 0.33d0, 0.7d0,
407 + -0.75d0, 0.2d0, 1.04d0/
408 DATA dt10x/0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
409 + 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
410 + 0.0d0, 0.5d0, -0.9d0, 0.0d0, 0.0d0, 0.0d0,
411 + 0.0d0, 0.0d0, 0.5d0, -0.9d0, 0.3d0, 0.7d0,
412 + 0.0d0, 0.0d0, 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0,
413 + 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0,
414 + 0.0d0, 0.0d0, 0.0d0, 0.3d0, 0.1d0, 0.5d0, 0.0d0,
415 + 0.0d0, 0.0d0, 0.0d0, 0.8d0, 0.1d0, -0.6d0,
416 + 0.8d0, 0.3d0, -0.3d0, 0.5d0, 0.6d0, 0.0d0,
417 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0,
418 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, -0.9d0,
419 + 0.1d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.7d0,
420 + 0.1d0, 0.3d0, 0.8d0, -0.9d0, -0.3d0, 0.5d0,
421 + 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
422 + 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
423 + 0.5d0, 0.3d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
424 + 0.5d0, 0.3d0, -0.6d0, 0.8d0, 0.0d0, 0.0d0,
426 DATA dt10y/0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
427 + 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
428 + 0.0d0, 0.6d0, 0.1d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
429 + 0.0d0, 0.6d0, 0.1d0, -0.5d0, 0.8d0, 0.0d0,
430 + 0.0d0, 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
431 + 0.0d0, 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
432 + 0.0d0, 0.0d0, -0.5d0, -0.9d0, 0.6d0, 0.0d0,
433 + 0.0d0, 0.0d0, 0.0d0, -0.4d0, -0.9d0, 0.9d0,
434 + 0.7d0, -0.5d0, 0.2d0, 0.6d0, 0.5d0, 0.0d0,
435 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.6d0, 0.0d0,
436 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, -0.5d0,
437 + 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
438 + -0.4d0, 0.9d0, -0.5d0, 0.6d0, 0.0d0, 0.0d0,
439 + 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
440 + 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
441 + 0.0d0, 0.6d0, -0.9d0, 0.1d0, 0.0d0, 0.0d0,
442 + 0.0d0, 0.0d0, 0.6d0, -0.9d0, 0.1d0, 0.7d0,
443 + -0.5d0, 0.2d0, 0.8d0/
444 DATA ssize1/0.0d0, 0.3d0, 1.6d0, 3.2d0/
445 DATA ssize2/0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
446 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
447 + 0.0d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
448 + 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
449 + 1.17d0, 1.17d0, 1.17d0/
453 DATA dpar/-2.d0, 0.d0,0.d0,0.d0,0.d0,
454 a -1.d0, 2.d0, -3.d0, -4.d0, 5.d0,
455 b 0.d0, 0.d0, 2.d0, -3.d0, 0.d0,
456 c 1.d0, 5.d0, 2.d0, 0.d0, -4.d0/
458 DATA dt19xa/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
459 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
460 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
461 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
462 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
463 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
464 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
465 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
466 h .6d0, .1d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
467 i -.8d0, 3.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
468 j -.9d0, 2.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
469 k 3.5d0, -.4d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
470 l .6d0, .1d0, -.5d0, .8d0, 0.d0,0.d0,0.d0,
471 m -.8d0, 3.8d0, -2.2d0, -1.2d0, 0.d0,0.d0,0.d0,
472 n -.9d0, 2.8d0, -1.4d0, -1.3d0, 0.d0,0.d0,0.d0,
473 o 3.5d0, -.4d0, -2.2d0, 4.7d0, 0.d0,0.d0,0.d0/
475 DATA dt19xb/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
476 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
477 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
478 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
479 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
480 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
481 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
482 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
483 h .6d0, .1d0, -.5d0, 0.d0,0.d0,0.d0,0.d0,
484 i 0.d0, .1d0, -3.0d0, 0.d0,0.d0,0.d0,0.d0,
485 j -.3d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
486 k 3.3d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
487 l .6d0, .1d0, -.5d0, .8d0, .9d0, -.3d0, -.4d0,
488 m -2.0d0, .1d0, 1.4d0, .8d0, .6d0, -.3d0, -2.8d0,
489 n -1.8d0, .1d0, 1.3d0, .8d0, 0.d0, -.3d0, -1.9d0,
490 o 3.8d0, .1d0, -3.1d0, .8d0, 4.8d0, -.3d0, -1.5d0 /
492 DATA dt19xc/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
493 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
494 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
495 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
496 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
497 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
498 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
499 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
500 h .6d0, .1d0, -.5d0, 0.d0,0.d0,0.d0,0.d0,
501 i 4.8d0, .1d0, -3.0d0, 0.d0,0.d0,0.d0,0.d0,
502 j 3.3d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
503 k 2.1d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
504 l .6d0, .1d0, -.5d0, .8d0, .9d0, -.3d0, -.4d0,
505 m -1.6d0, .1d0, -2.2d0, .8d0, 5.4d0, -.3d0, -2.8d0,
506 n -1.5d0, .1d0, -1.4d0, .8d0, 3.6d0, -.3d0, -1.9d0,
507 o 3.7d0, .1d0, -2.2d0, .8d0, 3.6d0, -.3d0, -1.5d0 /
509 DATA dt19xd/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
510 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
511 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
512 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
513 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
514 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
515 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
516 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
517 h .6d0, .1d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
518 i -.8d0, -1.0d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
519 j -.9d0, -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
520 k 3.5d0, .8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
521 l .6d0, .1d0, -.5d0, .8d0, 0.d0,0.d0,0.d0,
522 m -.8d0, -1.0d0, 1.4d0, -1.6d0, 0.d0,0.d0,0.d0,
523 n -.9d0, -.8d0, 1.3d0, -1.6d0, 0.d0,0.d0,0.d0,
524 o 3.5d0, .8d0, -3.1d0, 4.8d0, 0.d0,0.d0,0.d0/
526 DATA dt19ya/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
527 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
528 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
529 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
530 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
531 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
532 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
533 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
534 h .5d0, -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
535 i .7d0, -4.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
536 j 1.7d0, -.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
537 k -2.6d0, 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
538 l .5d0, -.9d0, .3d0, .7d0, 0.d0,0.d0,0.d0,
539 m .7d0, -4.8d0, 3.0d0, 1.1d0, 0.d0,0.d0,0.d0,
540 n 1.7d0, -.7d0, -.7d0, 2.3d0, 0.d0,0.d0,0.d0,
541 o -2.6d0, 3.5d0, -.7d0, -3.6d0, 0.d0,0.d0,0.d0/
543 DATA dt19yb/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
544 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
545 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
546 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
547 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
548 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
549 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
550 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
551 h .5d0, -.9d0, .3d0, 0.d0,0.d0,0.d0,0.d0,
552 i 4.0d0, -.9d0, -.3d0, 0.d0,0.d0,0.d0,0.d0,
553 j -.5d0, -.9d0, 1.5d0, 0.d0,0.d0,0.d0,0.d0,
554 k -1.5d0, -.9d0, -1.8d0, 0.d0,0.d0,0.d0,0.d0,
555 l .5d0, -.9d0, .3d0, .7d0, -.6d0, .2d0, .8d0,
556 m 3.7d0, -.9d0, -1.2d0, .7d0, -1.5d0, .2d0, 2.2d0,
557 n -.3d0, -.9d0, 2.1d0, .7d0, -1.6d0, .2d0, 2.0d0,
558 o -1.6d0, -.9d0, -2.1d0, .7d0, 2.9d0, .2d0, -3.8d0 /
560 DATA dt19yc/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
561 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
562 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
563 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
564 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
565 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
566 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
567 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
568 h .5d0, -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
569 i 4.0d0, -6.3d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
570 j -.5d0, .3d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
571 k -1.5d0, 3.0d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
572 l .5d0, -.9d0, .3d0, .7d0, 0.d0,0.d0,0.d0,
573 m 3.7d0, -7.2d0, 3.0d0, 1.7d0, 0.d0,0.d0,0.d0,
574 n -.3d0, .9d0, -.7d0, 1.9d0, 0.d0,0.d0,0.d0,
575 o -1.6d0, 2.7d0, -.7d0, -3.4d0, 0.d0,0.d0,0.d0/
577 DATA dt19yd/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
578 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
579 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
580 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
581 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
582 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
583 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
584 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
585 h .5d0, -.9d0, .3d0, 0.d0,0.d0,0.d0,0.d0,
586 i .7d0, -.9d0, 1.2d0, 0.d0,0.d0,0.d0,0.d0,
587 j 1.7d0, -.9d0, .5d0, 0.d0,0.d0,0.d0,0.d0,
588 k -2.6d0, -.9d0, -1.3d0, 0.d0,0.d0,0.d0,0.d0,
589 l .5d0, -.9d0, .3d0, .7d0, -.6d0, .2d0, .8d0,
590 m .7d0, -.9d0, 1.2d0, .7d0, -1.5d0, .2d0, 1.6d0,
591 n 1.7d0, -.9d0, .5d0, .7d0, -1.6d0, .2d0, 2.4d0,
592 o -2.6d0, -.9d0, -1.3d0, .7d0, 2.9d0, .2d0, -4.0d0 /
615 CALL stest1(ddot(n,sx,incx,sy,incy),dt7(kn,ki),ssize1(kn)
617 ELSE IF (icase.EQ.2)
THEN
619 CALL daxpy(n,sa,sx,incx,sy,incy)
621 sty(j) = dt8(j,kn,ki)
623 CALL stest(leny,sy,sty,ssize2(1,ksize),sfac)
624 ELSE IF (icase.EQ.5)
THEN
627 sty(i) = dt10y(i,kn,ki)
629 CALL dcopy(n,sx,incx,sy,incy)
630 CALL stest(leny,sy,sty,ssize2(1,1),1.0d0)
631 ELSE IF (icase.EQ.6)
THEN
633 CALL dswap(n,sx,incx,sy,incy)
635 stx(i) = dt10x(i,kn,ki)
636 sty(i) = dt10y(i,kn,ki)
638 CALL stest(lenx,sx,stx,ssize2(1,1),1.0d0)
639 CALL stest(leny,sy,sty,ssize2(1,1),1.0d0)
640 ELSE IF (icase.EQ.12)
THEN
647 stx(i)= dt19x(i,kpar,kni)
648 sty(i)= dt19y(i,kpar,kni)
652 dtemp(i) = dpar(i,kpar)
660 IF ((kpar .EQ. 2) .AND. (kni .EQ. 7))
662 IF ((kpar .EQ. 3) .AND. (kni .EQ. 8))
665 CALL drotm(n,sx,incx,sy,incy,dtemp)
666 CALL stest(lenx,sx,stx,ssize,sfac)
667 CALL stest(leny,sy,sty,sty,sfac)
669 ELSE IF (icase.EQ.13)
THEN
671 CALL testdsdot(real(dsdot(n,real(sx),incx,real(sy),incy)),
672 $ real(dt7(kn,ki)),real(ssize1(kn)), .3125e-1)
674 WRITE (nout,*)
' Shouldn''t be here in CHECK2'
686 DOUBLE PRECISION SFAC
688 INTEGER ICASE, INCX, INCY, N
691 DOUBLE PRECISION SC, SS
692 INTEGER I, K, KI, KN, KSIZE, LENX, LENY, MX, MY
694 DOUBLE PRECISION COPYX(5), COPYY(5), DT9X(7,4,4), DT9Y(7,4,4),
695 + DX1(7), DY1(7), MWPC(11), MWPS(11), MWPSTX(5),
696 + MWPSTY(5), MWPTX(11,5), MWPTY(11,5), MWPX(5),
697 + MWPY(5), SSIZE2(14,2), STX(7), STY(7), SX(7),
699 INTEGER INCXS(4), INCYS(4), LENS(4,2), MWPINX(11),
700 + MWPINY(11), MWPN(11), NS(4)
706 COMMON /combla/icase, n, incx, incy, pass
708 DATA incxs/1, 2, -2, -1/
709 DATA incys/1, -2, 1, -2/
710 DATA lens/1, 1, 2, 4, 1, 1, 3, 7/
712 DATA dx1/0.6d0, 0.1d0, -0.5d0, 0.8d0, 0.9d0, -0.3d0,
714 DATA dy1/0.5d0, -0.9d0, 0.3d0, 0.7d0, -0.6d0, 0.2d0,
716 DATA sc, ss/0.8d0, 0.6d0/
717 DATA dt9x/0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
718 + 0.0d0, 0.78d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
719 + 0.0d0, 0.0d0, 0.78d0, -0.46d0, 0.0d0, 0.0d0,
720 + 0.0d0, 0.0d0, 0.0d0, 0.78d0, -0.46d0, -0.22d0,
721 + 1.06d0, 0.0d0, 0.0d0, 0.0d0, 0.6d0, 0.0d0,
722 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.78d0,
723 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
724 + 0.66d0, 0.1d0, -0.1d0, 0.0d0, 0.0d0, 0.0d0,
725 + 0.0d0, 0.96d0, 0.1d0, -0.76d0, 0.8d0, 0.90d0,
726 + -0.3d0, -0.02d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0,
727 + 0.0d0, 0.0d0, 0.0d0, 0.78d0, 0.0d0, 0.0d0,
728 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, -0.06d0, 0.1d0,
729 + -0.1d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.90d0,
730 + 0.1d0, -0.22d0, 0.8d0, 0.18d0, -0.3d0, -0.02d0,
731 + 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
732 + 0.78d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
733 + 0.0d0, 0.78d0, 0.26d0, 0.0d0, 0.0d0, 0.0d0,
734 + 0.0d0, 0.0d0, 0.78d0, 0.26d0, -0.76d0, 1.12d0,
735 + 0.0d0, 0.0d0, 0.0d0/
736 DATA dt9y/0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
737 + 0.0d0, 0.04d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
738 + 0.0d0, 0.0d0, 0.04d0, -0.78d0, 0.0d0, 0.0d0,
739 + 0.0d0, 0.0d0, 0.0d0, 0.04d0, -0.78d0, 0.54d0,
740 + 0.08d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0,
741 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.04d0,
742 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.7d0,
743 + -0.9d0, -0.12d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
744 + 0.64d0, -0.9d0, -0.30d0, 0.7d0, -0.18d0, 0.2d0,
745 + 0.28d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
746 + 0.0d0, 0.0d0, 0.04d0, 0.0d0, 0.0d0, 0.0d0,
747 + 0.0d0, 0.0d0, 0.0d0, 0.7d0, -1.08d0, 0.0d0,
748 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.64d0, -1.26d0,
749 + 0.54d0, 0.20d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0,
750 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
751 + 0.04d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
752 + 0.0d0, 0.04d0, -0.9d0, 0.18d0, 0.0d0, 0.0d0,
753 + 0.0d0, 0.0d0, 0.04d0, -0.9d0, 0.18d0, 0.7d0,
754 + -0.18d0, 0.2d0, 0.16d0/
755 DATA ssize2/0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
756 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
757 + 0.0d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
758 + 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
759 + 1.17d0, 1.17d0, 1.17d0/
779 stx(i) = dt9x(i,kn,ki)
780 sty(i) = dt9y(i,kn,ki)
782 CALL drot(n,sx,incx,sy,incy,sc,ss)
783 CALL stest(lenx,sx,stx,ssize2(1,ksize),sfac)
784 CALL stest(leny,sy,sty,ssize2(1,ksize),sfac)
786 WRITE (nout,*)
' Shouldn''t be here in CHECK3'
878 mwpstx(k) = mwptx(i,k)
879 mwpsty(k) = mwpty(i,k)
881 CALL drot(mwpn(i),copyx,incx,copyy,incy,mwpc(i),mwps(i))
882 CALL stest(5,copyx,mwpstx,mwpstx,sfac)
883 CALL stest(5,copyy,mwpsty,mwpsty,sfac)
887 SUBROUTINE stest(LEN,SCOMP,STRUE,SSIZE,SFAC)
898 DOUBLE PRECISION ZERO
899 parameter(nout=6, zero=0.0d0)
901 DOUBLE PRECISION SFAC
904 DOUBLE PRECISION SCOMP(LEN), SSIZE(LEN), STRUE(LEN)
906 INTEGER ICASE, INCX, INCY, N
912 DOUBLE PRECISION SDIFF
917 COMMON /combla/icase, n, incx, incy, pass
921 sd = scomp(i) - strue(i)
922 IF (abs(sfac*sd) .LE. abs(ssize(i))*epsilon(zero))
927 IF ( .NOT. pass)
GO TO 20
932 20
WRITE (nout,99997) icase, n, incx, incy, i, scomp(i),
933 + strue(i), sd, ssize(i)
937 99999
FORMAT (
' FAIL')
938 99998
FORMAT (/
' CASE N INCX INCY I ',
939 +
' COMP(I) TRUE(I) DIFFERENCE',
941 99997
FORMAT (1x,i4,i3,2i5,i3,2d36.8,2d12.4)
943 SUBROUTINE testdsdot(SCOMP,STRUE,SSIZE,SFAC)
955 parameter(nout=6, zero=0.0e0)
957 REAL SFAC, SCOMP, SSIZE, STRUE
959 INTEGER ICASE, INCX, INCY, N
966 COMMON /combla/icase, n, incx, incy, pass
970 IF (abs(sfac*sd) .LE. abs(ssize) * epsilon(zero))
975 IF ( .NOT. pass)
GO TO 20
980 20
WRITE (nout,99997) icase, n, incx, incy, scomp,
985 99999
FORMAT (
' FAIL')
986 99998
FORMAT (/
' CASE N INCX INCY ',
987 +
' COMP(I) TRUE(I) DIFFERENCE',
989 99997
FORMAT (1x,i4,i3,1i5,i3,2e36.8,2e12.4)
991 SUBROUTINE stest1(SCOMP1,STRUE1,SSIZE,SFAC)
1001 DOUBLE PRECISION SCOMP1, SFAC, STRUE1
1003 DOUBLE PRECISION SSIZE(*)
1005 DOUBLE PRECISION SCOMP(1), STRUE(1)
1012 CALL stest(1,scomp,strue,ssize,sfac)
1016 DOUBLE PRECISION FUNCTION sdiff(SA,SB)
1021 DOUBLE PRECISION sa, sb
1026 SUBROUTINE itest1(ICOMP,ITRUE)
1037 INTEGER ICOMP, ITRUE
1039 INTEGER ICASE, INCX, INCY, N
1044 COMMON /combla/icase, n, incx, incy, pass
1047 IF (icomp.EQ.itrue)
GO TO 40
1051 IF ( .NOT. pass)
GO TO 20
1056 20 id = icomp - itrue
1057 WRITE (nout,99997) icase, n, incx, incy, icomp, itrue, id
1061 99999
FORMAT (
' FAIL')
1062 99998
FORMAT (/
' CASE N INCX INCY ',
1063 +
' COMP TRUE DIFFERENCE',
1065 99997
FORMAT (1x,i4,i3,2i5,2i36,i12)