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)
8999999
FORMAT (
' Real BLAS Test Program Results',/1x)
9099998
FORMAT (
' ----- PASS -----')
100 INTEGER ICASE, INCX, INCY, N
105 COMMON /combla/icase, n, incx, incy, pass
121 WRITE (nout,99999) icase, l(icase)
12499999
FORMAT (/
' Test of subprogram number',i3,12x,a6)
134 DOUBLE PRECISION SFAC
136 INTEGER ICASE, INCX, INCY, N
139 DOUBLE PRECISION SA, SB, SC, SS, D12
142 DOUBLE PRECISION DA1(8), DATRUE(8), DB1(8), DBTRUE(8), DC1(8),
143 $ DS1(8), DAB(4,9), DTEMP(9), DTRUE(9,9)
147 COMMON /combla/icase, n, incx, incy, pass
149 DATA da1/0.3d0, 0.4d0, -0.3d0, -0.4d0, -0.3d0, 0.0d0,
151 DATA db1/0.4d0, 0.3d0, 0.4d0, 0.3d0, -0.4d0, 0.0d0,
153 DATA dc1/0.6d0, 0.8d0, -0.6d0, 0.8d0, 0.6d0, 1.0d0,
155 DATA ds1/0.8d0, 0.6d0, 0.8d0, -0.6d0, 0.8d0, 0.0d0,
157 DATA datrue/0.5d0, 0.5d0, 0.5d0, -0.5d0, -0.5d0,
158 + 0.0d0, 1.0d0, 1.0d0/
159 DATA dbtrue/0.0d0, 0.6d0, 0.0d0, -0.6d0, 0.0d0,
160 + 0.0d0, 1.0d0, 0.0d0/
162 DATA dab/ .1d0,.3d0,1.2d0,.2d0,
163 a .7d0, .2d0, .6d0, 4.2d0,
164 b 0.d0,0.d0,0.d0,0.d0,
165 c 4.d0, -1.d0, 2.d0, 4.d0,
166 d 6.d-10, 2.d-2, 1.d5, 10.d0,
167 e 4.d10, 2.d-2, 1.d-5, 10.d0,
168 f 2.d-10, 4.d-2, 1.d5, 10.d0,
169 g 2.d10, 4.d-2, 1.d-5, 10.d0,
170 h 4.d0, -2.d0, 8.d0, 4.d0 /
172 DATA dtrue/0.d0,0.d0, 1.3d0, .2d0, 0.d0,0.d0,0.d0, .5d0, 0.d0,
173 a 0.d0,0.d0, 4.5d0, 4.2d0, 1.d0, .5d0, 0.d0,0.d0,0.d0,
174 b 0.d0,0.d0,0.d0,0.d0, -2.d0, 0.d0,0.d0,0.d0,0.d0,
175 c 0.d0,0.d0,0.d0, 4.d0, -1.d0, 0.d0,0.d0,0.d0,0.d0,
176 d 0.d0, 15.d-3, 0.d0, 10.d0, -1.d0, 0.d0, -1.d-4,
178 f 0.d0,0.d0, 6144.d-5, 10.d0, -1.d0, 4096.d0, -1.d6,
180 h 0.d0,0.d0,15.d0,10.d0,-1.d0, 5.d-5, 0.d0,1.d0,0.d0,
181 i 0.d0,0.d0, 15.d0, 10.d0, -1. d0, 5.d5, -4096.d0,
183 k 0.d0,0.d0, 7.d0, 4.d0, 0.d0,0.d0, -.5d0, -.25d0, 0.d0/
186 dtrue(1,1) = 12.d0 / 130.d0
187 dtrue(2,1) = 36.d0 / 130.d0
188 dtrue(7,1) = -1.d0 / 6.d0
189 dtrue(1,2) = 14.d0 / 75.d0
190 dtrue(2,2) = 49.d0 / 75.d0
191 dtrue(9,2) = 1.d0 / 7.d0
192 dtrue(1,5) = 45.d-11 * (d12 * d12)
193 dtrue(3,5) = 4.d5 / (3.d0 * d12)
194 dtrue(6,5) = 1.d0 / d12
195 dtrue(8,5) = 1.d4 / (3.d0 * d12)
196 dtrue(1,6) = 4.d10 / (1.5d0 * d12 * d12)
197 dtrue(2,6) = 2.d-2 / 1.5d0
198 dtrue(8,6) = 5.d-7 * d12
199 dtrue(1,7) = 4.d0 / 150.d0
200 dtrue(2,7) = (2.d-10 / 1.5d0) * (d12 * d12)
201 dtrue(7,7) = -dtrue(6,5)
202 dtrue(9,7) = 1.d4 / d12
203 dtrue(1,8) = dtrue(1,7)
204 dtrue(2,8) = 2.d10 / (1.5d0 * d12 * d12)
205 dtrue(1,9) = 32.d0 / 7.d0
206 dtrue(2,9) = -16.d0 / 7.d0
212 dbtrue(1) = 1.0d0/0.6d0
213 dbtrue(3) = -1.0d0/0.6d0
214 dbtrue(5) = 1.0d0/0.6d0
224 CALL drotg(sa,sb,sc,ss)
225 CALL stest1(sa,datrue(k),datrue(k),sfac)
226 CALL stest1(sb,dbtrue(k),dbtrue(k),sfac)
227 CALL stest1(sc,dc1(k),dc1(k),sfac)
228 CALL stest1(ss,ds1(k),ds1(k),sfac)
229 ELSEIF (icase.EQ.11)
THEN
236 CALL drotmg(dtemp(1),dtemp(2),dtemp(3),dtemp(4),dtemp(5))
237 CALL stest(9,dtemp,dtrue(1,k),dtrue(1,k),sfac)
239 WRITE (nout,*)
' Shouldn''t be here in CHECK0'
253 DOUBLE PRECISION SFAC
255 INTEGER ICASE, INCX, INCY, N
258 INTEGER I, IX, LEN, NP1
260 DOUBLE PRECISION DTRUE1(5), DTRUE3(5), DTRUE5(8,5,2), DV(8,5,2),
261 + DVR(8), SA(10), STEMP(1), STRUE(8), SX(8),
263 INTEGER ITRUE2(5), ITRUEC(5)
265 DOUBLE PRECISION DASUM, DNRM2
267 EXTERNAL dasum, dnrm2, idamax
273 COMMON /combla/icase, n, incx, incy, pass
275 DATA sa/0.3d0, -1.0d0, 0.0d0, 1.0d0, 0.3d0, 0.3d0,
276 + 0.3d0, 0.3d0, 0.3d0, 0.3d0/
277 DATA dv/0.1d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0,
278 + 2.0d0, 2.0d0, 0.3d0, 3.0d0, 3.0d0, 3.0d0, 3.0d0,
279 + 3.0d0, 3.0d0, 3.0d0, 0.3d0, -0.4d0, 4.0d0,
280 + 4.0d0, 4.0d0, 4.0d0, 4.0d0, 4.0d0, 0.2d0,
281 + -0.6d0, 0.3d0, 5.0d0, 5.0d0, 5.0d0, 5.0d0,
282 + 5.0d0, 0.1d0, -0.3d0, 0.5d0, -0.1d0, 6.0d0,
283 + 6.0d0, 6.0d0, 6.0d0, 0.1d0, 8.0d0, 8.0d0, 8.0d0,
284 + 8.0d0, 8.0d0, 8.0d0, 8.0d0, 0.3d0, 9.0d0, 9.0d0,
285 + 9.0d0, 9.0d0, 9.0d0, 9.0d0, 9.0d0, 0.3d0, 2.0d0,
286 + -0.4d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0,
287 + 0.2d0, 3.0d0, -0.6d0, 5.0d0, 0.3d0, 2.0d0,
288 + 2.0d0, 2.0d0, 0.1d0, 4.0d0, -0.3d0, 6.0d0,
289 + -0.5d0, 7.0d0, -0.1d0, 3.0d0/
290 DATA dvr/8.0d0, -7.0d0, 9.0d0, 5.0d0, 9.0d0, 8.0d0,
292 DATA dtrue1/0.0d0, 0.3d0, 0.5d0, 0.7d0, 0.6d0/
293 DATA dtrue3/0.0d0, 0.3d0, 0.7d0, 1.1d0, 1.0d0/
294 DATA dtrue5/0.10d0, 2.0d0, 2.0d0, 2.0d0, 2.0d0,
295 + 2.0d0, 2.0d0, 2.0d0, -0.3d0, 3.0d0, 3.0d0,
296 + 3.0d0, 3.0d0, 3.0d0, 3.0d0, 3.0d0, 0.0d0, 0.0d0,
297 + 4.0d0, 4.0d0, 4.0d0, 4.0d0, 4.0d0, 4.0d0,
298 + 0.20d0, -0.60d0, 0.30d0, 5.0d0, 5.0d0, 5.0d0,
299 + 5.0d0, 5.0d0, 0.03d0, -0.09d0, 0.15d0, -0.03d0,
300 + 6.0d0, 6.0d0, 6.0d0, 6.0d0, 0.10d0, 8.0d0,
301 + 8.0d0, 8.0d0, 8.0d0, 8.0d0, 8.0d0, 8.0d0,
302 + 0.09d0, 9.0d0, 9.0d0, 9.0d0, 9.0d0, 9.0d0,
303 + 9.0d0, 9.0d0, 0.09d0, 2.0d0, -0.12d0, 2.0d0,
304 + 2.0d0, 2.0d0, 2.0d0, 2.0d0, 0.06d0, 3.0d0,
305 + -0.18d0, 5.0d0, 0.09d0, 2.0d0, 2.0d0, 2.0d0,
306 + 0.03d0, 4.0d0, -0.09d0, 6.0d0, -0.15d0, 7.0d0,
308 DATA itrue2/0, 1, 2, 2, 3/
309 DATA itruec/0, 1, 1, 1, 1/
317 sx(i) = dv(i,np1,incx)
322 stemp(1) = dtrue1(np1)
323 CALL stest1(dnrm2(n,sx,incx),stemp(1),stemp,sfac)
324 ELSE IF (icase.EQ.8)
THEN
326 stemp(1) = dtrue3(np1)
327 CALL stest1(dasum(n,sx,incx),stemp(1),stemp,sfac)
328 ELSE IF (icase.EQ.9)
THEN
330 CALL dscal(n,sa((incx-1)*5+np1),sx,incx)
332 strue(i) = dtrue5(i,np1,incx)
334 CALL stest(len,sx,strue,strue,sfac)
335 ELSE IF (icase.EQ.10)
THEN
337 CALL itest1(idamax(n,sx,incx),itrue2(np1))
341 CALL itest1(idamax(n,sx,incx),itruec(np1))
343 WRITE (nout,*)
' Shouldn''t be here in CHECK1'
347 IF (icase.EQ.10)
THEN
354 CALL itest1(idamax(n,sxr,incx),3)
367 DOUBLE PRECISION SFAC
369 INTEGER ICASE, INCX, INCY, N
373 INTEGER I, J, KI, KN, KNI, KPAR, KSIZE, LENX, LENY,
374 $ LINCX, LINCY, MX, MY
376 DOUBLE PRECISION DT10X(7,4,4), DT10Y(7,4,4), DT7(4,4),
377 $ DT8(7,4,4), DX1(7),
378 $ DY1(7), SSIZE1(4), SSIZE2(14,2), SSIZE(7),
379 $ STX(7), STY(7), SX(7), SY(7),
380 $ DPAR(5,4), DT19X(7,4,16),DT19XA(7,4,4),
381 $ DT19XB(7,4,4), DT19XC(7,4,4),DT19XD(7,4,4),
382 $ DT19Y(7,4,16), DT19YA(7,4,4),DT19YB(7,4,4),
383 $ DT19YC(7,4,4), DT19YD(7,4,4), DTEMP(5),
384 $ STY0(1), SX0(1), SY0(1)
385 INTEGER INCXS(4), INCYS(4), LENS(4,2), NS(4)
387 DOUBLE PRECISION DDOT, DSDOT
395 COMMON /combla/icase, n, incx, incy, pass
397 equivalence(dt19x(1,1,1),dt19xa(1,1,1)),(dt19x(1,1,5),
398 a dt19xb(1,1,1)),(dt19x(1,1,9),dt19xc(1,1,1)),
399 b (dt19x(1,1,13),dt19xd(1,1,1))
400 equivalence(dt19y(1,1,1),dt19ya(1,1,1)),(dt19y(1,1,5),
401 a dt19yb(1,1,1)),(dt19y(1,1,9),dt19yc(1,1,1)),
402 b (dt19y(1,1,13),dt19yd(1,1,1))
405 DATA incxs/1, 2, -2, -1/
406 DATA incys/1, -2, 1, -2/
407 DATA lens/1, 1, 2, 4, 1, 1, 3, 7/
409 DATA dx1/0.6d0, 0.1d0, -0.5d0, 0.8d0, 0.9d0, -0.3d0,
411 DATA dy1/0.5d0, -0.9d0, 0.3d0, 0.7d0, -0.6d0, 0.2d0,
413 DATA dt7/0.0d0, 0.30d0, 0.21d0, 0.62d0, 0.0d0,
414 + 0.30d0, -0.07d0, 0.85d0, 0.0d0, 0.30d0, -0.79d0,
415 + -0.74d0, 0.0d0, 0.30d0, 0.33d0, 1.27d0/
416 DATA dt8/0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
417 + 0.0d0, 0.68d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
418 + 0.0d0, 0.0d0, 0.68d0, -0.87d0, 0.0d0, 0.0d0,
419 + 0.0d0, 0.0d0, 0.0d0, 0.68d0, -0.87d0, 0.15d0,
420 + 0.94d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0,
421 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.68d0,
422 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
423 + 0.35d0, -0.9d0, 0.48d0, 0.0d0, 0.0d0, 0.0d0,
424 + 0.0d0, 0.38d0, -0.9d0, 0.57d0, 0.7d0, -0.75d0,
425 + 0.2d0, 0.98d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0,
426 + 0.0d0, 0.0d0, 0.0d0, 0.68d0, 0.0d0, 0.0d0,
427 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.35d0, -0.72d0,
428 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.38d0,
429 + -0.63d0, 0.15d0, 0.88d0, 0.0d0, 0.0d0, 0.0d0,
430 + 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
431 + 0.68d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
432 + 0.0d0, 0.68d0, -0.9d0, 0.33d0, 0.0d0, 0.0d0,
433 + 0.0d0, 0.0d0, 0.68d0, -0.9d0, 0.33d0, 0.7d0,
434 + -0.75d0, 0.2d0, 1.04d0/
435 DATA dt10x/0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
436 + 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
437 + 0.0d0, 0.5d0, -0.9d0, 0.0d0, 0.0d0, 0.0d0,
438 + 0.0d0, 0.0d0, 0.5d0, -0.9d0, 0.3d0, 0.7d0,
439 + 0.0d0, 0.0d0, 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0,
440 + 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0,
441 + 0.0d0, 0.0d0, 0.0d0, 0.3d0, 0.1d0, 0.5d0, 0.0d0,
442 + 0.0d0, 0.0d0, 0.0d0, 0.8d0, 0.1d0, -0.6d0,
443 + 0.8d0, 0.3d0, -0.3d0, 0.5d0, 0.6d0, 0.0d0,
444 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0,
445 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, -0.9d0,
446 + 0.1d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.7d0,
447 + 0.1d0, 0.3d0, 0.8d0, -0.9d0, -0.3d0, 0.5d0,
448 + 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
449 + 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
450 + 0.5d0, 0.3d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
451 + 0.5d0, 0.3d0, -0.6d0, 0.8d0, 0.0d0, 0.0d0,
453 DATA dt10y/0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
454 + 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
455 + 0.0d0, 0.6d0, 0.1d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
456 + 0.0d0, 0.6d0, 0.1d0, -0.5d0, 0.8d0, 0.0d0,
457 + 0.0d0, 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
458 + 0.0d0, 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
459 + 0.0d0, 0.0d0, -0.5d0, -0.9d0, 0.6d0, 0.0d0,
460 + 0.0d0, 0.0d0, 0.0d0, -0.4d0, -0.9d0, 0.9d0,
461 + 0.7d0, -0.5d0, 0.2d0, 0.6d0, 0.5d0, 0.0d0,
462 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.6d0, 0.0d0,
463 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, -0.5d0,
464 + 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
465 + -0.4d0, 0.9d0, -0.5d0, 0.6d0, 0.0d0, 0.0d0,
466 + 0.0d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
467 + 0.0d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
468 + 0.0d0, 0.6d0, -0.9d0, 0.1d0, 0.0d0, 0.0d0,
469 + 0.0d0, 0.0d0, 0.6d0, -0.9d0, 0.1d0, 0.7d0,
470 + -0.5d0, 0.2d0, 0.8d0/
471 DATA ssize1/0.0d0, 0.3d0, 1.6d0, 3.2d0/
472 DATA ssize2/0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
473 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
474 + 0.0d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
475 + 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
476 + 1.17d0, 1.17d0, 1.17d0/
480 DATA dpar/-2.d0, 0.d0,0.d0,0.d0,0.d0,
481 a -1.d0, 2.d0, -3.d0, -4.d0, 5.d0,
482 b 0.d0, 0.d0, 2.d0, -3.d0, 0.d0,
483 c 1.d0, 5.d0, 2.d0, 0.d0, -4.d0/
485 DATA dt19xa/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
486 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
487 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
488 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
489 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
490 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
491 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
492 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
493 h .6d0, .1d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
494 i -.8d0, 3.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
495 j -.9d0, 2.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
496 k 3.5d0, -.4d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
497 l .6d0, .1d0, -.5d0, .8d0, 0.d0,0.d0,0.d0,
498 m -.8d0, 3.8d0, -2.2d0, -1.2d0, 0.d0,0.d0,0.d0,
499 n -.9d0, 2.8d0, -1.4d0, -1.3d0, 0.d0,0.d0,0.d0,
500 o 3.5d0, -.4d0, -2.2d0, 4.7d0, 0.d0,0.d0,0.d0/
502 DATA dt19xb/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
503 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
504 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
505 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
506 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
507 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
508 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
509 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
510 h .6d0, .1d0, -.5d0, 0.d0,0.d0,0.d0,0.d0,
511 i 0.d0, .1d0, -3.0d0, 0.d0,0.d0,0.d0,0.d0,
512 j -.3d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
513 k 3.3d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
514 l .6d0, .1d0, -.5d0, .8d0, .9d0, -.3d0, -.4d0,
515 m -2.0d0, .1d0, 1.4d0, .8d0, .6d0, -.3d0, -2.8d0,
516 n -1.8d0, .1d0, 1.3d0, .8d0, 0.d0, -.3d0, -1.9d0,
517 o 3.8d0, .1d0, -3.1d0, .8d0, 4.8d0, -.3d0, -1.5d0 /
519 DATA dt19xc/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
520 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
521 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
522 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
523 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
524 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
525 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
526 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
527 h .6d0, .1d0, -.5d0, 0.d0,0.d0,0.d0,0.d0,
528 i 4.8d0, .1d0, -3.0d0, 0.d0,0.d0,0.d0,0.d0,
529 j 3.3d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
530 k 2.1d0, .1d0, -2.0d0, 0.d0,0.d0,0.d0,0.d0,
531 l .6d0, .1d0, -.5d0, .8d0, .9d0, -.3d0, -.4d0,
532 m -1.6d0, .1d0, -2.2d0, .8d0, 5.4d0, -.3d0, -2.8d0,
533 n -1.5d0, .1d0, -1.4d0, .8d0, 3.6d0, -.3d0, -1.9d0,
534 o 3.7d0, .1d0, -2.2d0, .8d0, 3.6d0, -.3d0, -1.5d0 /
536 DATA dt19xd/.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
537 a .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
538 b .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
539 c .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
540 d .6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
541 e -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
542 f -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
543 g 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
544 h .6d0, .1d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
545 i -.8d0, -1.0d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
546 j -.9d0, -.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
547 k 3.5d0, .8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
548 l .6d0, .1d0, -.5d0, .8d0, 0.d0,0.d0,0.d0,
549 m -.8d0, -1.0d0, 1.4d0, -1.6d0, 0.d0,0.d0,0.d0,
550 n -.9d0, -.8d0, 1.3d0, -1.6d0, 0.d0,0.d0,0.d0,
551 o 3.5d0, .8d0, -3.1d0, 4.8d0, 0.d0,0.d0,0.d0/
553 DATA dt19ya/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
554 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
555 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
556 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
557 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
558 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
559 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
560 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
561 h .5d0, -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
562 i .7d0, -4.8d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
563 j 1.7d0, -.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
564 k -2.6d0, 3.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
565 l .5d0, -.9d0, .3d0, .7d0, 0.d0,0.d0,0.d0,
566 m .7d0, -4.8d0, 3.0d0, 1.1d0, 0.d0,0.d0,0.d0,
567 n 1.7d0, -.7d0, -.7d0, 2.3d0, 0.d0,0.d0,0.d0,
568 o -2.6d0, 3.5d0, -.7d0, -3.6d0, 0.d0,0.d0,0.d0/
570 DATA dt19yb/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
571 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
572 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
573 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
574 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
575 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
576 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
577 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
578 h .5d0, -.9d0, .3d0, 0.d0,0.d0,0.d0,0.d0,
579 i 4.0d0, -.9d0, -.3d0, 0.d0,0.d0,0.d0,0.d0,
580 j -.5d0, -.9d0, 1.5d0, 0.d0,0.d0,0.d0,0.d0,
581 k -1.5d0, -.9d0, -1.8d0, 0.d0,0.d0,0.d0,0.d0,
582 l .5d0, -.9d0, .3d0, .7d0, -.6d0, .2d0, .8d0,
583 m 3.7d0, -.9d0, -1.2d0, .7d0, -1.5d0, .2d0, 2.2d0,
584 n -.3d0, -.9d0, 2.1d0, .7d0, -1.6d0, .2d0, 2.0d0,
585 o -1.6d0, -.9d0, -2.1d0, .7d0, 2.9d0, .2d0, -3.8d0 /
587 DATA dt19yc/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
588 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
589 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
590 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
591 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
592 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
593 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
594 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
595 h .5d0, -.9d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
596 i 4.0d0, -6.3d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
597 j -.5d0, .3d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
598 k -1.5d0, 3.0d0, 0.d0,0.d0,0.d0,0.d0,0.d0,
599 l .5d0, -.9d0, .3d0, .7d0, 0.d0,0.d0,0.d0,
600 m 3.7d0, -7.2d0, 3.0d0, 1.7d0, 0.d0,0.d0,0.d0,
601 n -.3d0, .9d0, -.7d0, 1.9d0, 0.d0,0.d0,0.d0,
602 o -1.6d0, 2.7d0, -.7d0, -3.4d0, 0.d0,0.d0,0.d0/
604 DATA dt19yd/.5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
605 a .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
606 b .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
607 c .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
608 d .5d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
609 e .7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
610 f 1.7d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
611 g -2.6d0, 0.d0,0.d0,0.d0,0.d0,0.d0,0.d0,
612 h .5d0, -.9d0, .3d0, 0.d0,0.d0,0.d0,0.d0,
613 i .7d0, -.9d0, 1.2d0, 0.d0,0.d0,0.d0,0.d0,
614 j 1.7d0, -.9d0, .5d0, 0.d0,0.d0,0.d0,0.d0,
615 k -2.6d0, -.9d0, -1.3d0, 0.d0,0.d0,0.d0,0.d0,
616 l .5d0, -.9d0, .3d0, .7d0, -.6d0, .2d0, .8d0,
617 m .7d0, -.9d0, 1.2d0, .7d0, -1.5d0, .2d0, 1.6d0,
618 n 1.7d0, -.9d0, .5d0, .7d0, -1.6d0, .2d0, 2.4d0,
619 o -2.6d0, -.9d0, -1.3d0, .7d0, 2.9d0, .2d0, -4.0d0 /
642 CALL stest1(ddot(n,sx,incx,sy,incy),dt7(kn,ki),ssize1(kn)
644 ELSE IF (icase.EQ.2)
THEN
646 CALL daxpy(n,sa,sx,incx,sy,incy)
648 sty(j) = dt8(j,kn,ki)
650 CALL stest(leny,sy,sty,ssize2(1,ksize),sfac)
651 ELSE IF (icase.EQ.5)
THEN
654 sty(i) = dt10y(i,kn,ki)
656 CALL dcopy(n,sx,incx,sy,incy)
657 CALL stest(leny,sy,sty,ssize2(1,1),1.0d0)
670 CALL dcopy(n,sx0,incx,sy0,incy)
671 CALL stest(1,sy0,sty0,ssize2(1,1),1.0d0)
675 ELSE IF (icase.EQ.6)
THEN
677 CALL dswap(n,sx,incx,sy,incy)
679 stx(i) = dt10x(i,kn,ki)
680 sty(i) = dt10y(i,kn,ki)
682 CALL stest(lenx,sx,stx,ssize2(1,1),1.0d0)
683 CALL stest(leny,sy,sty,ssize2(1,1),1.0d0)
684 ELSE IF (icase.EQ.12)
THEN
691 stx(i)= dt19x(i,kpar,kni)
692 sty(i)= dt19y(i,kpar,kni)
696 dtemp(i) = dpar(i,kpar)
704 IF ((kpar .EQ. 2) .AND. (kni .EQ. 7))
706 IF ((kpar .EQ. 3) .AND. (kni .EQ. 8))
709 CALL drotm(n,sx,incx,sy,incy,dtemp)
710 CALL stest(lenx,sx,stx,ssize,sfac)
711 CALL stest(leny,sy,sty,sty,sfac)
713 ELSE IF (icase.EQ.13)
THEN
715 CALL testdsdot(real(dsdot(n,real(sx),incx,real(sy),incy)),
716 $ real(dt7(kn,ki)),real(ssize1(kn)), .3125e-1)
718 WRITE (nout,*)
' Shouldn''t be here in CHECK2'
733 DOUBLE PRECISION SFAC
735 INTEGER ICASE, INCX, INCY, N
738 DOUBLE PRECISION SC, SS
739 INTEGER I, K, KI, KN, KSIZE, LENX, LENY, MX, MY
741 DOUBLE PRECISION COPYX(5), COPYY(5), DT9X(7,4,4), DT9Y(7,4,4),
742 + DX1(7), DY1(7), MWPC(11), MWPS(11), MWPSTX(5),
743 + MWPSTY(5), MWPTX(11,5), MWPTY(11,5), MWPX(5),
744 + MWPY(5), SSIZE2(14,2), STX(7), STY(7), SX(7),
746 INTEGER INCXS(4), INCYS(4), LENS(4,2), MWPINX(11),
747 + MWPINY(11), MWPN(11), NS(4)
753 COMMON /combla/icase, n, incx, incy, pass
755 DATA incxs/1, 2, -2, -1/
756 DATA incys/1, -2, 1, -2/
757 DATA lens/1, 1, 2, 4, 1, 1, 3, 7/
759 DATA dx1/0.6d0, 0.1d0, -0.5d0, 0.8d0, 0.9d0, -0.3d0,
761 DATA dy1/0.5d0, -0.9d0, 0.3d0, 0.7d0, -0.6d0, 0.2d0,
763 DATA sc, ss/0.8d0, 0.6d0/
764 DATA dt9x/0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
765 + 0.0d0, 0.78d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
766 + 0.0d0, 0.0d0, 0.78d0, -0.46d0, 0.0d0, 0.0d0,
767 + 0.0d0, 0.0d0, 0.0d0, 0.78d0, -0.46d0, -0.22d0,
768 + 1.06d0, 0.0d0, 0.0d0, 0.0d0, 0.6d0, 0.0d0,
769 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.78d0,
770 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
771 + 0.66d0, 0.1d0, -0.1d0, 0.0d0, 0.0d0, 0.0d0,
772 + 0.0d0, 0.96d0, 0.1d0, -0.76d0, 0.8d0, 0.90d0,
773 + -0.3d0, -0.02d0, 0.6d0, 0.0d0, 0.0d0, 0.0d0,
774 + 0.0d0, 0.0d0, 0.0d0, 0.78d0, 0.0d0, 0.0d0,
775 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, -0.06d0, 0.1d0,
776 + -0.1d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.90d0,
777 + 0.1d0, -0.22d0, 0.8d0, 0.18d0, -0.3d0, -0.02d0,
778 + 0.6d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
779 + 0.78d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
780 + 0.0d0, 0.78d0, 0.26d0, 0.0d0, 0.0d0, 0.0d0,
781 + 0.0d0, 0.0d0, 0.78d0, 0.26d0, -0.76d0, 1.12d0,
782 + 0.0d0, 0.0d0, 0.0d0/
783 DATA dt9y/0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
784 + 0.0d0, 0.04d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
785 + 0.0d0, 0.0d0, 0.04d0, -0.78d0, 0.0d0, 0.0d0,
786 + 0.0d0, 0.0d0, 0.0d0, 0.04d0, -0.78d0, 0.54d0,
787 + 0.08d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0, 0.0d0,
788 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.04d0,
789 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.7d0,
790 + -0.9d0, -0.12d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
791 + 0.64d0, -0.9d0, -0.30d0, 0.7d0, -0.18d0, 0.2d0,
792 + 0.28d0, 0.5d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
793 + 0.0d0, 0.0d0, 0.04d0, 0.0d0, 0.0d0, 0.0d0,
794 + 0.0d0, 0.0d0, 0.0d0, 0.7d0, -1.08d0, 0.0d0,
795 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.64d0, -1.26d0,
796 + 0.54d0, 0.20d0, 0.0d0, 0.0d0, 0.0d0, 0.5d0,
797 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
798 + 0.04d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
799 + 0.0d0, 0.04d0, -0.9d0, 0.18d0, 0.0d0, 0.0d0,
800 + 0.0d0, 0.0d0, 0.04d0, -0.9d0, 0.18d0, 0.7d0,
801 + -0.18d0, 0.2d0, 0.16d0/
802 DATA ssize2/0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
803 + 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0, 0.0d0,
804 + 0.0d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
805 + 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0, 1.17d0,
806 + 1.17d0, 1.17d0, 1.17d0/
826 stx(i) = dt9x(i,kn,ki)
827 sty(i) = dt9y(i,kn,ki)
829 CALL drot(n,sx,incx,sy,incy,sc,ss)
830 CALL stest(lenx,sx,stx,ssize2(1,ksize),sfac)
831 CALL stest(leny,sy,sty,ssize2(1,ksize),sfac)
833 WRITE (nout,*)
' Shouldn''t be here in CHECK3'
925 mwpstx(k) = mwptx(i,k)
926 mwpsty(k) = mwpty(i,k)
928 CALL drot(mwpn(i),copyx,incx,copyy,incy,mwpc(i),mwps(i))
929 CALL stest(5,copyx,mwpstx,mwpstx,sfac)
930 CALL stest(5,copyy,mwpsty,mwpsty,sfac)
937 SUBROUTINE stest(LEN,SCOMP,STRUE,SSIZE,SFAC)
948 DOUBLE PRECISION ZERO
949 parameter(nout=6, zero=0.0d0)
951 DOUBLE PRECISION SFAC
954 DOUBLE PRECISION SCOMP(LEN), SSIZE(LEN), STRUE(LEN)
956 INTEGER ICASE, INCX, INCY, N
962 DOUBLE PRECISION SDIFF
967 COMMON /combla/icase, n, incx, incy, pass
971 sd = scomp(i) - strue(i)
972 IF (abs(sfac*sd) .LE. abs(ssize(i))*epsilon(zero))
977 IF ( .NOT. pass)
GO TO 20
982 20
WRITE (nout,99997) icase, n, incx, incy, i, scomp(i),
983 + strue(i), sd, ssize(i)
98799999
FORMAT (
' FAIL')
98899998
FORMAT (/
' CASE N INCX INCY I ',
989 +
' COMP(I) TRUE(I) DIFFERENCE',
99199997
FORMAT (1x,i4,i3,2i5,i3,2d36.8,2d12.4)
1008 parameter(nout=6, zero=0.0e0)
1010 REAL SFAC, SCOMP, SSIZE, STRUE
1012 INTEGER ICASE, INCX, INCY, N
1019 COMMON /combla/icase, n, incx, incy, pass
1023 IF (abs(sfac*sd) .LE. abs(ssize) * epsilon(zero))
1028 IF ( .NOT. pass)
GO TO 20
1033 20
WRITE (nout,99997) icase, n, incx, incy, scomp,
103899999
FORMAT (
' FAIL')
103999998
FORMAT (/
' CASE N INCX INCY ',
1040 +
' COMP(I) TRUE(I) DIFFERENCE',
104299997
FORMAT (1x,i4,i3,1i5,i3,2e36.8,2e12.4)
1057 DOUBLE PRECISION SCOMP1, SFAC, STRUE1
1059 DOUBLE PRECISION SSIZE(*)
1061 DOUBLE PRECISION SCOMP(1), STRUE(1)
1068 CALL stest(1,scomp,strue,ssize,sfac)
1080 DOUBLE PRECISION sa, sb
1099 INTEGER ICOMP, ITRUE
1101 INTEGER ICASE, INCX, INCY, N
1106 COMMON /combla/icase, n, incx, incy, pass
1109 IF (icomp.EQ.itrue)
GO TO 40
1113 IF ( .NOT. pass)
GO TO 20
1118 20 id = icomp - itrue
1119 WRITE (nout,99997) icase, n, incx, incy, icomp, itrue, id
112399999
FORMAT (
' FAIL')
112499998
FORMAT (/
' CASE N INCX INCY ',
1125 +
' COMP TRUE DIFFERENCE',
112799997
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(a, b, c, s)
DROTG