48 INTEGER icase, incx, incy, n
56 COMMON /combla/icase, n, incx, incy, pass
58 DATA sfac/9.765625d-4/
73 IF (icase.EQ.3 .OR. icase.EQ.11)
THEN
75 ELSE IF (icase.EQ.7 .OR. icase.EQ.8 .OR. icase.EQ.9 .OR.
78 ELSE IF (icase.EQ.1 .OR. icase.EQ.2 .OR. icase.EQ.5 .OR.
79 + icase.EQ.6 .OR. icase.EQ.12 .OR. icase.EQ.13)
THEN
81 ELSE IF (icase.EQ.4)
THEN
85 IF (pass)
WRITE (nout,99998)
89 99999
FORMAT (
' Real BLAS Test Program Results',/1x)
90 99998
FORMAT (
' ----- PASS -----')
97 INTEGER ICASE, INCX, INCY, N
102 COMMON /combla/icase, n, incx, incy, pass
118 WRITE (nout,99999) icase, l(icase)
121 99999
FORMAT (/
' Test of subprogram number',i3,12x,a6)
128 DOUBLE PRECISION SFAC
130 INTEGER ICASE, INCX, INCY, N
133 DOUBLE PRECISION SA, SB, SC, SS, D12
136 DOUBLE PRECISION DA1(8), DATRUE(8), DB1(8), DBTRUE(8), DC1(8),
137 $ DS1(8), DAB(4,9), DTEMP(9), DTRUE(9,9)
141 COMMON /combla/icase, n, incx, incy, pass
143 DATA da1/0.3d0, 0.4d0, -0.3d0, -0.4d0, -0.3d0, 0.0d0,
145 DATA db1/0.4d0, 0.3d0, 0.4d0, 0.3d0, -0.4d0, 0.0d0,
147 DATA dc1/0.6d0, 0.8d0, -0.6d0, 0.8d0, 0.6d0, 1.0d0,
149 DATA ds1/0.8d0, 0.6d0, 0.8d0, -0.6d0, 0.8d0, 0.0d0,
151 DATA datrue/0.5d0, 0.5d0, 0.5d0, -0.5d0, -0.5d0,
152 + 0.0d0, 1.0d0, 1.0d0/
153 DATA dbtrue/0.0d0, 0.6d0, 0.0d0, -0.6d0, 0.0d0,
154 + 0.0d0, 1.0d0, 0.0d0/
156 DATA dab/ .1d0,.3d0,1.2d0,.2d0,
157 a .7d0, .2d0, .6d0, 4.2d0,
158 b 0.d0,0.d0,0.d0,0.d0,
159 c 4.d0, -1.d0, 2.d0, 4.d0,
160 d 6.d-10, 2.d-2, 1.d5, 10.d0,
161 e 4.d10, 2.d-2, 1.d-5, 10.d0,
162 f 2.d-10, 4.d-2, 1.d5, 10.d0,
163 g 2.d10, 4.d-2, 1.d-5, 10.d0,
164 h 4.d0, -2.d0, 8.d0, 4.d0 /
166 DATA dtrue/0.d0,0.d0, 1.3d0, .2d0, 0.d0,0.d0,0.d0, .5d0, 0.d0,
167 a 0.d0,0.d0, 4.5d0, 4.2d0, 1.d0, .5d0, 0.d0,0.d0,0.d0,
168 b 0.d0,0.d0,0.d0,0.d0, -2.d0, 0.d0,0.d0,0.d0,0.d0,
169 c 0.d0,0.d0,0.d0, 4.d0, -1.d0, 0.d0,0.d0,0.d0,0.d0,
170 d 0.d0, 15.d-3, 0.d0, 10.d0, -1.d0, 0.d0, -1.d-4,
172 f 0.d0,0.d0, 6144.d-5, 10.d0, -1.d0, 4096.d0, -1.d6,
174 h 0.d0,0.d0,15.d0,10.d0,-1.d0, 5.d-5, 0.d0,1.d0,0.d0,
175 i 0.d0,0.d0, 15.d0, 10.d0, -1. d0, 5.d5, -4096.d0,
177 k 0.d0,0.d0, 7.d0, 4.d0, 0.d0,0.d0, -.5d0, -.25d0, 0.d0/
180 dtrue(1,1) = 12.d0 / 130.d0
181 dtrue(2,1) = 36.d0 / 130.d0
182 dtrue(7,1) = -1.d0 / 6.d0
183 dtrue(1,2) = 14.d0 / 75.d0
184 dtrue(2,2) = 49.d0 / 75.d0
185 dtrue(9,2) = 1.d0 / 7.d0
186 dtrue(1,5) = 45.d-11 * (d12 * d12)
187 dtrue(3,5) = 4.d5 / (3.d0 * d12)
188 dtrue(6,5) = 1.d0 / d12
189 dtrue(8,5) = 1.d4 / (3.d0 * d12)
190 dtrue(1,6) = 4.d10 / (1.5d0 * d12 * d12)
191 dtrue(2,6) = 2.d-2 / 1.5d0
192 dtrue(8,6) = 5.d-7 * d12
193 dtrue(1,7) = 4.d0 / 150.d0
194 dtrue(2,7) = (2.d-10 / 1.5d0) * (d12 * d12)
195 dtrue(7,7) = -dtrue(6,5)
196 dtrue(9,7) = 1.d4 / d12
197 dtrue(1,8) = dtrue(1,7)
198 dtrue(2,8) = 2.d10 / (1.5d0 * d12 * d12)
199 dtrue(1,9) = 32.d0 / 7.d0
200 dtrue(2,9) = -16.d0 / 7.d0
206 dbtrue(1) = 1.0d0/0.6d0
207 dbtrue(3) = -1.0d0/0.6d0
208 dbtrue(5) = 1.0d0/0.6d0
218 CALL drotg(sa,sb,sc,ss)
219 CALL stest1(sa,datrue(k),datrue(k),sfac)
220 CALL stest1(sb,dbtrue(k),dbtrue(k),sfac)
221 CALL stest1(sc,dc1(k),dc1(k),sfac)
222 CALL stest1(ss,ds1(k),ds1(k),sfac)
223 ELSEIF (icase.EQ.11)
THEN
230 CALL drotmg(dtemp(1),dtemp(2),dtemp(3),dtemp(4),dtemp(5))
231 CALL stest(9,dtemp,dtrue(1,k),dtrue(1,k),sfac)
233 WRITE (nout,*)
' Shouldn''t be here in CHECK0'
244 DOUBLE PRECISION SFAC
246 INTEGER ICASE, INCX, INCY, N
249 INTEGER I, IX, LEN, NP1
251 DOUBLE PRECISION DTRUE1(5), DTRUE3(5), DTRUE5(8,5,2), DV(8,5,2),
252 + DVR(8), SA(10), STEMP(1), STRUE(8), SX(8),
254 INTEGER ITRUE2(5), ITRUEC(5)
256 DOUBLE PRECISION DASUM, DNRM2
258 EXTERNAL dasum, dnrm2, idamax
264 COMMON /combla/icase, n, incx, incy, pass
266 DATA sa/0.3d0, -1.0d0, 0.0d0, 1.0d0, 0.3d0, 0.3d0,
267 + 0.3d0, 0.3d0, 0.3d0, 0.3d0/
268 DATA dv/0.1d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0,
269 + 2.0d0, 2.0d0, 0.3d0, 3.0d0, 3.0d0, 3.0d0, 3.0d0,
270 + 3.0d0, 3.0d0, 3.0d0, 0.3d0, -0.4d0, 4.0d0,
271 + 4.0d0, 4.0d0, 4.0d0, 4.0d0, 4.0d0, 0.2d0,
272 + -0.6d0, 0.3d0, 5.0d0, 5.0d0, 5.0d0, 5.0d0,
273 + 5.0d0, 0.1d0, -0.3d0, 0.5d0, -0.1d0, 6.0d0,
274 + 6.0d0, 6.0d0, 6.0d0, 0.1d0, 8.0d0, 8.0d0, 8.0d0,
275 + 8.0d0, 8.0d0, 8.0d0, 8.0d0, 0.3d0, 9.0d0, 9.0d0,
276 + 9.0d0, 9.0d0, 9.0d0, 9.0d0, 9.0d0, 0.3d0, 2.0d0,
277 + -0.4d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0,
278 + 0.2d0, 3.0d0, -0.6d0, 5.0d0, 0.3d0, 2.0d0,
279 + 2.0d0, 2.0d0, 0.1d0, 4.0d0, -0.3d0, 6.0d0,
280 + -0.5d0, 7.0d0, -0.1d0, 3.0d0/
281 DATA dvr/8.0d0, -7.0d0, 9.0d0, 5.0d0, 9.0d0, 8.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/
300 DATA itruec/0, 1, 1, 1, 1/
308 sx(i) = dv(i,np1,incx)
313 stemp(1) = dtrue1(np1)
314 CALL stest1(dnrm2(n,sx,incx),stemp(1),stemp,sfac)
315 ELSE IF (icase.EQ.8)
THEN
317 stemp(1) = dtrue3(np1)
318 CALL stest1(dasum(n,sx,incx),stemp(1),stemp,sfac)
319 ELSE IF (icase.EQ.9)
THEN
321 CALL dscal(n,sa((incx-1)*5+np1),sx,incx)
323 strue(i) = dtrue5(i,np1,incx)
325 CALL stest(len,sx,strue,strue,sfac)
326 ELSE IF (icase.EQ.10)
THEN
328 CALL itest1(idamax(n,sx,incx),itrue2(np1))
332 CALL itest1(idamax(n,sx,incx),itruec(np1))
334 WRITE (nout,*)
' Shouldn''t be here in CHECK1'
338 IF (icase.EQ.10)
THEN
345 CALL itest1(idamax(n,sxr,incx),3)
355 DOUBLE PRECISION SFAC
357 INTEGER ICASE, INCX, INCY, N
361 INTEGER I, J, KI, KN, KNI, KPAR, KSIZE, LENX, LENY,
362 $ LINCX, LINCY, MX, MY
364 DOUBLE PRECISION DT10X(7,4,4), DT10Y(7,4,4), DT7(4,4),
365 $ DT8(7,4,4), DX1(7),
366 $ DY1(7), SSIZE1(4), SSIZE2(14,2), SSIZE(7),
367 $ STX(7), STY(7), SX(7), SY(7),
368 $ DPAR(5,4), DT19X(7,4,16),DT19XA(7,4,4),
369 $ DT19XB(7,4,4), DT19XC(7,4,4),DT19XD(7,4,4),
370 $ DT19Y(7,4,16), DT19YA(7,4,4),DT19YB(7,4,4),
371 $ DT19YC(7,4,4), DT19YD(7,4,4), DTEMP(5),
372 $ STY0(1), SX0(1), SY0(1)
373 INTEGER INCXS(4), INCYS(4), LENS(4,2), NS(4)
375 DOUBLE PRECISION DDOT, DSDOT
383 COMMON /combla/icase, n, incx, incy, pass
385 equivalence(dt19x(1,1,1),dt19xa(1,1,1)),(dt19x(1,1,5),
386 a dt19xb(1,1,1)),(dt19x(1,1,9),dt19xc(1,1,1)),
387 b (dt19x(1,1,13),dt19xd(1,1,1))
388 equivalence(dt19y(1,1,1),dt19ya(1,1,1)),(dt19y(1,1,5),
389 a dt19yb(1,1,1)),(dt19y(1,1,9),dt19yc(1,1,1)),
390 b (dt19y(1,1,13),dt19yd(1,1,1))
393 DATA incxs/1, 2, -2, -1/
394 DATA incys/1, -2, 1, -2/
395 DATA lens/1, 1, 2, 4, 1, 1, 3, 7/
397 DATA dx1/0.6d0, 0.1d0, -0.5d0, 0.8d0, 0.9d0, -0.3d0,
399 DATA dy1/0.5d0, -0.9d0, 0.3d0, 0.7d0, -0.6d0, 0.2d0,
401 DATA dt7/0.0d0, 0.30d0, 0.21d0, 0.62d0, 0.0d0,
402 + 0.30d0, -0.07d0, 0.85d0, 0.0d0, 0.30d0, -0.79d0,
403 + -0.74d0, 0.0d0, 0.30d0, 0.33d0, 1.27d0/
404 DATA dt8/0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
405 + 0.0d0, 0.68d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
406 + 0.0d0, 0.0d0, 0.68d0, -0.87d0, 0.0d0, 0.0d0,
407 + 0.0d0, 0.0d0, 0.0d0, 0.68d0, -0.87d0, 0.15d0,
408 + 0.94d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0,
409 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.68d0,
410 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
411 + 0.35d0, -0.9d0, 0.48d0, 0.0d0, 0.0d0, 0.0d0,
412 + 0.0d0, 0.38d0, -0.9d0, 0.57d0, 0.7d0, -0.75d0,
413 + 0.2d0, 0.98d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0,
414 + 0.0d0, 0.0d0, 0.0d0, 0.68d0, 0.0d0, 0.0d0,
415 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.35d0, -0.72d0,
416 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.38d0,
417 + -0.63d0, 0.15d0, 0.88d0, 0.0d0, 0.0d0, 0.0d0,
418 + 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
419 + 0.68d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
420 + 0.0d0, 0.68d0, -0.9d0, 0.33d0, 0.0d0, 0.0d0,
421 + 0.0d0, 0.0d0, 0.68d0, -0.9d0, 0.33d0, 0.7d0,
422 + -0.75d0, 0.2d0, 1.04d0/
423 DATA dt10x/0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
424 + 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
425 + 0.0d0, 0.5d0, -0.9d0, 0.0d0, 0.0d0, 0.0d0,
426 + 0.0d0, 0.0d0, 0.5d0, -0.9d0, 0.3d0, 0.7d0,
427 + 0.0d0, 0.0d0, 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0,
428 + 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0,
429 + 0.0d0, 0.0d0, 0.0d0, 0.3d0, 0.1d0, 0.5d0, 0.0d0,
430 + 0.0d0, 0.0d0, 0.0d0, 0.8d0, 0.1d0, -0.6d0,
431 + 0.8d0, 0.3d0, -0.3d0, 0.5d0, 0.6d0, 0.0d0,
432 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0,
433 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, -0.9d0,
434 + 0.1d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.7d0,
435 + 0.1d0, 0.3d0, 0.8d0, -0.9d0, -0.3d0, 0.5d0,
436 + 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
437 + 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
438 + 0.5d0, 0.3d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
439 + 0.5d0, 0.3d0, -0.6d0, 0.8d0, 0.0d0, 0.0d0,
441 DATA dt10y/0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
442 + 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
443 + 0.0d0, 0.6d0, 0.1d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
444 + 0.0d0, 0.6d0, 0.1d0, -0.5d0, 0.8d0, 0.0d0,
445 + 0.0d0, 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
446 + 0.0d0, 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
447 + 0.0d0, 0.0d0, -0.5d0, -0.9d0, 0.6d0, 0.0d0,
448 + 0.0d0, 0.0d0, 0.0d0, -0.4d0, -0.9d0, 0.9d0,
449 + 0.7d0, -0.5d0, 0.2d0, 0.6d0, 0.5d0, 0.0d0,
450 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.6d0, 0.0d0,
451 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, -0.5d0,
452 + 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
453 + -0.4d0, 0.9d0, -0.5d0, 0.6d0, 0.0d0, 0.0d0,
454 + 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
455 + 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
456 + 0.0d0, 0.6d0, -0.9d0, 0.1d0, 0.0d0, 0.0d0,
457 + 0.0d0, 0.0d0, 0.6d0, -0.9d0, 0.1d0, 0.7d0,
458 + -0.5d0, 0.2d0, 0.8d0/
459 DATA ssize1/0.0d0, 0.3d0, 1.6d0, 3.2d0/
460 DATA ssize2/0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
461 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
462 + 0.0d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
463 + 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
464 + 1.17d0, 1.17d0, 1.17d0/
468 DATA dpar/-2.d0, 0.d0,0.d0,0.d0,0.d0,
469 a -1.d0, 2.d0, -3.d0, -4.d0, 5.d0,
470 b 0.d0, 0.d0, 2.d0, -3.d0, 0.d0,
471 c 1.d0, 5.d0, 2.d0, 0.d0, -4.d0/
473 DATA dt19xa/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
474 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
475 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
476 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
477 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
478 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
479 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
480 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
481 h .6d0, .1d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
482 i -.8d0, 3.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
483 j -.9d0, 2.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
484 k 3.5d0, -.4d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
485 l .6d0, .1d0, -.5d0, .8d0, 0.d0,0.d0,0.d0,
486 m -.8d0, 3.8d0, -2.2d0, -1.2d0, 0.d0,0.d0,0.d0,
487 n -.9d0, 2.8d0, -1.4d0, -1.3d0, 0.d0,0.d0,0.d0,
488 o 3.5d0, -.4d0, -2.2d0, 4.7d0, 0.d0,0.d0,0.d0/
490 DATA dt19xb/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
491 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
492 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
493 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
494 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
495 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
496 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
497 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
498 h .6d0, .1d0, -.5d0, 0.d0,0.d0,0.d0,0.d0,
499 i 0.d0, .1d0, -3.0d0, 0.d0,0.d0,0.d0,0.d0,
500 j -.3d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
501 k 3.3d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
502 l .6d0, .1d0, -.5d0, .8d0, .9d0, -.3d0, -.4d0,
503 m -2.0d0, .1d0, 1.4d0, .8d0, .6d0, -.3d0, -2.8d0,
504 n -1.8d0, .1d0, 1.3d0, .8d0, 0.d0, -.3d0, -1.9d0,
505 o 3.8d0, .1d0, -3.1d0, .8d0, 4.8d0, -.3d0, -1.5d0 /
507 DATA dt19xc/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
508 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
509 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
510 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
511 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
512 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
513 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
514 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
515 h .6d0, .1d0, -.5d0, 0.d0,0.d0,0.d0,0.d0,
516 i 4.8d0, .1d0, -3.0d0, 0.d0,0.d0,0.d0,0.d0,
517 j 3.3d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
518 k 2.1d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
519 l .6d0, .1d0, -.5d0, .8d0, .9d0, -.3d0, -.4d0,
520 m -1.6d0, .1d0, -2.2d0, .8d0, 5.4d0, -.3d0, -2.8d0,
521 n -1.5d0, .1d0, -1.4d0, .8d0, 3.6d0, -.3d0, -1.9d0,
522 o 3.7d0, .1d0, -2.2d0, .8d0, 3.6d0, -.3d0, -1.5d0 /
524 DATA dt19xd/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
525 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
526 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
527 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
528 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
529 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
530 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
531 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
532 h .6d0, .1d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
533 i -.8d0, -1.0d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
534 j -.9d0, -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
535 k 3.5d0, .8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
536 l .6d0, .1d0, -.5d0, .8d0, 0.d0,0.d0,0.d0,
537 m -.8d0, -1.0d0, 1.4d0, -1.6d0, 0.d0,0.d0,0.d0,
538 n -.9d0, -.8d0, 1.3d0, -1.6d0, 0.d0,0.d0,0.d0,
539 o 3.5d0, .8d0, -3.1d0, 4.8d0, 0.d0,0.d0,0.d0/
541 DATA dt19ya/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
542 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
543 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
544 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
545 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
546 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
547 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
548 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
549 h .5d0, -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
550 i .7d0, -4.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
551 j 1.7d0, -.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
552 k -2.6d0, 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
553 l .5d0, -.9d0, .3d0, .7d0, 0.d0,0.d0,0.d0,
554 m .7d0, -4.8d0, 3.0d0, 1.1d0, 0.d0,0.d0,0.d0,
555 n 1.7d0, -.7d0, -.7d0, 2.3d0, 0.d0,0.d0,0.d0,
556 o -2.6d0, 3.5d0, -.7d0, -3.6d0, 0.d0,0.d0,0.d0/
558 DATA dt19yb/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
559 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
560 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
561 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
562 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
563 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
564 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
565 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
566 h .5d0, -.9d0, .3d0, 0.d0,0.d0,0.d0,0.d0,
567 i 4.0d0, -.9d0, -.3d0, 0.d0,0.d0,0.d0,0.d0,
568 j -.5d0, -.9d0, 1.5d0, 0.d0,0.d0,0.d0,0.d0,
569 k -1.5d0, -.9d0, -1.8d0, 0.d0,0.d0,0.d0,0.d0,
570 l .5d0, -.9d0, .3d0, .7d0, -.6d0, .2d0, .8d0,
571 m 3.7d0, -.9d0, -1.2d0, .7d0, -1.5d0, .2d0, 2.2d0,
572 n -.3d0, -.9d0, 2.1d0, .7d0, -1.6d0, .2d0, 2.0d0,
573 o -1.6d0, -.9d0, -2.1d0, .7d0, 2.9d0, .2d0, -3.8d0 /
575 DATA dt19yc/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
576 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
577 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
578 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
579 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
580 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
581 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
582 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
583 h .5d0, -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
584 i 4.0d0, -6.3d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
585 j -.5d0, .3d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
586 k -1.5d0, 3.0d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
587 l .5d0, -.9d0, .3d0, .7d0, 0.d0,0.d0,0.d0,
588 m 3.7d0, -7.2d0, 3.0d0, 1.7d0, 0.d0,0.d0,0.d0,
589 n -.3d0, .9d0, -.7d0, 1.9d0, 0.d0,0.d0,0.d0,
590 o -1.6d0, 2.7d0, -.7d0, -3.4d0, 0.d0,0.d0,0.d0/
592 DATA dt19yd/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
593 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
594 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
595 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
596 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
597 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
598 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
599 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
600 h .5d0, -.9d0, .3d0, 0.d0,0.d0,0.d0,0.d0,
601 i .7d0, -.9d0, 1.2d0, 0.d0,0.d0,0.d0,0.d0,
602 j 1.7d0, -.9d0, .5d0, 0.d0,0.d0,0.d0,0.d0,
603 k -2.6d0, -.9d0, -1.3d0, 0.d0,0.d0,0.d0,0.d0,
604 l .5d0, -.9d0, .3d0, .7d0, -.6d0, .2d0, .8d0,
605 m .7d0, -.9d0, 1.2d0, .7d0, -1.5d0, .2d0, 1.6d0,
606 n 1.7d0, -.9d0, .5d0, .7d0, -1.6d0, .2d0, 2.4d0,
607 o -2.6d0, -.9d0, -1.3d0, .7d0, 2.9d0, .2d0, -4.0d0 /
630 CALL stest1(ddot(n,sx,incx,sy,incy),dt7(kn,ki),ssize1(kn)
632 ELSE IF (icase.EQ.2)
THEN
634 CALL daxpy(n,sa,sx,incx,sy,incy)
636 sty(j) = dt8(j,kn,ki)
638 CALL stest(leny,sy,sty,ssize2(1,ksize),sfac)
639 ELSE IF (icase.EQ.5)
THEN
642 sty(i) = dt10y(i,kn,ki)
644 CALL dcopy(n,sx,incx,sy,incy)
645 CALL stest(leny,sy,sty,ssize2(1,1),1.0d0)
658 CALL dcopy(n,sx0,incx,sy0,incy)
659 CALL stest(1,sy0,sty0,ssize2(1,1),1.0d0)
663 ELSE IF (icase.EQ.6)
THEN
665 CALL dswap(n,sx,incx,sy,incy)
667 stx(i) = dt10x(i,kn,ki)
668 sty(i) = dt10y(i,kn,ki)
670 CALL stest(lenx,sx,stx,ssize2(1,1),1.0d0)
671 CALL stest(leny,sy,sty,ssize2(1,1),1.0d0)
672 ELSE IF (icase.EQ.12)
THEN
679 stx(i)= dt19x(i,kpar,kni)
680 sty(i)= dt19y(i,kpar,kni)
684 dtemp(i) = dpar(i,kpar)
692 IF ((kpar .EQ. 2) .AND. (kni .EQ. 7))
694 IF ((kpar .EQ. 3) .AND. (kni .EQ. 8))
697 CALL drotm(n,sx,incx,sy,incy,dtemp)
698 CALL stest(lenx,sx,stx,ssize,sfac)
699 CALL stest(leny,sy,sty,sty,sfac)
701 ELSE IF (icase.EQ.13)
THEN
703 CALL testdsdot(real(dsdot(n,real(sx),incx,real(sy),incy)),
704 $ real(dt7(kn,ki)),real(ssize1(kn)), .3125e-1)
706 WRITE (nout,*)
' Shouldn''t be here in CHECK2'
718 DOUBLE PRECISION SFAC
720 INTEGER ICASE, INCX, INCY, N
723 DOUBLE PRECISION SC, SS
724 INTEGER I, K, KI, KN, KSIZE, LENX, LENY, MX, MY
726 DOUBLE PRECISION COPYX(5), COPYY(5), DT9X(7,4,4), DT9Y(7,4,4),
727 + DX1(7), DY1(7), MWPC(11), MWPS(11), MWPSTX(5),
728 + MWPSTY(5), MWPTX(11,5), MWPTY(11,5), MWPX(5),
729 + MWPY(5), SSIZE2(14,2), STX(7), STY(7), SX(7),
731 INTEGER INCXS(4), INCYS(4), LENS(4,2), MWPINX(11),
732 + MWPINY(11), MWPN(11), NS(4)
738 COMMON /combla/icase, n, incx, incy, pass
740 DATA incxs/1, 2, -2, -1/
741 DATA incys/1, -2, 1, -2/
742 DATA lens/1, 1, 2, 4, 1, 1, 3, 7/
744 DATA dx1/0.6d0, 0.1d0, -0.5d0, 0.8d0, 0.9d0, -0.3d0,
746 DATA dy1/0.5d0, -0.9d0, 0.3d0, 0.7d0, -0.6d0, 0.2d0,
748 DATA sc, ss/0.8d0, 0.6d0/
749 DATA dt9x/0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
750 + 0.0d0, 0.78d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
751 + 0.0d0, 0.0d0, 0.78d0, -0.46d0, 0.0d0, 0.0d0,
752 + 0.0d0, 0.0d0, 0.0d0, 0.78d0, -0.46d0, -0.22d0,
753 + 1.06d0, 0.0d0, 0.0d0, 0.0d0, 0.6d0, 0.0d0,
754 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.78d0,
755 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
756 + 0.66d0, 0.1d0, -0.1d0, 0.0d0, 0.0d0, 0.0d0,
757 + 0.0d0, 0.96d0, 0.1d0, -0.76d0, 0.8d0, 0.90d0,
758 + -0.3d0, -0.02d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0,
759 + 0.0d0, 0.0d0, 0.0d0, 0.78d0, 0.0d0, 0.0d0,
760 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, -0.06d0, 0.1d0,
761 + -0.1d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.90d0,
762 + 0.1d0, -0.22d0, 0.8d0, 0.18d0, -0.3d0, -0.02d0,
763 + 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
764 + 0.78d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
765 + 0.0d0, 0.78d0, 0.26d0, 0.0d0, 0.0d0, 0.0d0,
766 + 0.0d0, 0.0d0, 0.78d0, 0.26d0, -0.76d0, 1.12d0,
767 + 0.0d0, 0.0d0, 0.0d0/
768 DATA dt9y/0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
769 + 0.0d0, 0.04d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
770 + 0.0d0, 0.0d0, 0.04d0, -0.78d0, 0.0d0, 0.0d0,
771 + 0.0d0, 0.0d0, 0.0d0, 0.04d0, -0.78d0, 0.54d0,
772 + 0.08d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0,
773 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.04d0,
774 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.7d0,
775 + -0.9d0, -0.12d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
776 + 0.64d0, -0.9d0, -0.30d0, 0.7d0, -0.18d0, 0.2d0,
777 + 0.28d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
778 + 0.0d0, 0.0d0, 0.04d0, 0.0d0, 0.0d0, 0.0d0,
779 + 0.0d0, 0.0d0, 0.0d0, 0.7d0, -1.08d0, 0.0d0,
780 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.64d0, -1.26d0,
781 + 0.54d0, 0.20d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0,
782 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
783 + 0.04d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
784 + 0.0d0, 0.04d0, -0.9d0, 0.18d0, 0.0d0, 0.0d0,
785 + 0.0d0, 0.0d0, 0.04d0, -0.9d0, 0.18d0, 0.7d0,
786 + -0.18d0, 0.2d0, 0.16d0/
787 DATA ssize2/0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
788 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
789 + 0.0d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
790 + 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
791 + 1.17d0, 1.17d0, 1.17d0/
811 stx(i) = dt9x(i,kn,ki)
812 sty(i) = dt9y(i,kn,ki)
814 CALL drot(n,sx,incx,sy,incy,sc,ss)
815 CALL stest(lenx,sx,stx,ssize2(1,ksize),sfac)
816 CALL stest(leny,sy,sty,ssize2(1,ksize),sfac)
818 WRITE (nout,*)
' Shouldn''t be here in CHECK3'
910 mwpstx(k) = mwptx(i,k)
911 mwpsty(k) = mwpty(i,k)
913 CALL drot(mwpn(i),copyx,incx,copyy,incy,mwpc(i),mwps(i))
914 CALL stest(5,copyx,mwpstx,mwpstx,sfac)
915 CALL stest(5,copyy,mwpsty,mwpsty,sfac)
919 SUBROUTINE stest(LEN,SCOMP,STRUE,SSIZE,SFAC)
930 DOUBLE PRECISION ZERO
931 parameter(nout=6, zero=0.0d0)
933 DOUBLE PRECISION SFAC
936 DOUBLE PRECISION SCOMP(LEN), SSIZE(LEN), STRUE(LEN)
938 INTEGER ICASE, INCX, INCY, N
944 DOUBLE PRECISION SDIFF
949 COMMON /combla/icase, n, incx, incy, pass
953 sd = scomp(i) - strue(i)
954 IF (abs(sfac*sd) .LE. abs(ssize(i))*epsilon(zero))
959 IF ( .NOT. pass)
GO TO 20
964 20
WRITE (nout,99997) icase, n, incx, incy, i, scomp(i),
965 + strue(i), sd, ssize(i)
969 99999
FORMAT (
' FAIL')
970 99998
FORMAT (/
' CASE N INCX INCY I ',
971 +
' COMP(I) TRUE(I) DIFFERENCE',
973 99997
FORMAT (1x,i4,i3,2i5,i3,2d36.8,2d12.4)
987 parameter(nout=6, zero=0.0e0)
989 REAL SFAC, SCOMP, SSIZE, STRUE
991 INTEGER ICASE, INCX, INCY, N
998 COMMON /combla/icase, n, incx, incy, pass
1002 IF (abs(sfac*sd) .LE. abs(ssize) * epsilon(zero))
1007 IF ( .NOT. pass)
GO TO 20
1012 20
WRITE (nout,99997) icase, n, incx, incy, scomp,
1017 99999
FORMAT (
' FAIL')
1018 99998
FORMAT (/
' CASE N INCX INCY ',
1019 +
' COMP(I) TRUE(I) DIFFERENCE',
1021 99997
FORMAT (1x,i4,i3,1i5,i3,2e36.8,2e12.4)
1033 DOUBLE PRECISION SCOMP1, SFAC, STRUE1
1035 DOUBLE PRECISION SSIZE(*)
1037 DOUBLE PRECISION SCOMP(1), STRUE(1)
1044 CALL stest(1,scomp,strue,ssize,sfac)
1053 DOUBLE PRECISION sa, sb
1069 INTEGER ICOMP, ITRUE
1071 INTEGER ICASE, INCX, INCY, N
1076 COMMON /combla/icase, n, incx, incy, pass
1079 IF (icomp.EQ.itrue)
GO TO 40
1083 IF ( .NOT. pass)
GO TO 20
1088 20 id = icomp - itrue
1089 WRITE (nout,99997) icase, n, incx, incy, icomp, itrue, id
1093 99999
FORMAT (
' FAIL')
1094 99998
FORMAT (/
' CASE N INCX INCY ',
1095 +
' COMP TRUE DIFFERENCE',
1097 99997
FORMAT (1x,i4,i3,2i5,2i36,i12)
subroutine stest(LEN, SCOMP, STRUE, SSIZE, SFAC)
real function sdiff(SA, SB)
subroutine stest1(SCOMP1, STRUE1, SSIZE, SFAC)
subroutine itest1(ICOMP, ITRUE)
subroutine testdsdot(SCOMP, STRUE, SSIZE, SFAC)
subroutine drotm(N, DX, INCX, DY, INCY, DPARAM)
DROTM
subroutine drotmg(DD1, DD2, DX1, DY1, DPARAM)
DROTMG
subroutine dcopy(N, DX, INCX, DY, INCY)
DCOPY
subroutine drot(N, DX, INCX, DY, INCY, C, S)
DROT
subroutine dscal(N, DA, DX, INCX)
DSCAL
subroutine daxpy(N, DA, DX, INCX, DY, INCY)
DAXPY
subroutine dswap(N, DX, INCX, DY, INCY)
DSWAP
subroutine drotg(DA, DB, C, S)
DROTG