48 INTEGER icase, incx, incy, mode, n
56 COMMON /combla/icase, n, incx, incy, mode, pass
58 DATA sfac/9.765625d-4/
76 ELSE IF (icase.GE.6)
THEN
80 IF (pass)
WRITE (nout,99998)
8499999
FORMAT (
' Complex BLAS Test Program Results',/1x)
8599998
FORMAT (
' ----- PASS -----')
95 INTEGER ICASE, INCX, INCY, MODE, N
100 COMMON /combla/icase, n, incx, incy, mode, pass
113 WRITE (nout,99999) icase, l(icase)
11699999
FORMAT (/
' Test of subprogram number',i3,12x,a6)
124 DOUBLE PRECISION THRESH
125 parameter(nout=6, thresh=10.0d0)
127 DOUBLE PRECISION SFAC
129 INTEGER ICASE, INCX, INCY, MODE, N
134 INTEGER I, IX, J, LEN, NP1
136 COMPLEX*16 CTRUE5(8,5,2), CTRUE6(8,5,2), CV(8,5,2), CVR(8),
137 + CX(8), CXR(15), MWPCS(5), MWPCT(5)
138 DOUBLE PRECISION STRUE2(5), STRUE4(5)
139 INTEGER ITRUE3(5), ITRUEC(5)
141 DOUBLE PRECISION DZASUM, DZNRM2
143 EXTERNAL dzasum, dznrm2, izamax
149 COMMON /combla/icase, n, incx, incy, mode, pass
151 DATA sa, ca/0.3d0, (0.4d0,-0.7d0)/
152 DATA ((cv(i,j,1),i=1,8),j=1,5)/(0.1d0,0.1d0),
153 + (1.0d0,2.0d0), (1.0d0,2.0d0), (1.0d0,2.0d0),
154 + (1.0d0,2.0d0), (1.0d0,2.0d0), (1.0d0,2.0d0),
155 + (1.0d0,2.0d0), (0.3d0,-0.4d0), (3.0d0,4.0d0),
156 + (3.0d0,4.0d0), (3.0d0,4.0d0), (3.0d0,4.0d0),
157 + (3.0d0,4.0d0), (3.0d0,4.0d0), (3.0d0,4.0d0),
158 + (0.1d0,-0.3d0), (0.5d0,-0.1d0), (5.0d0,6.0d0),
159 + (5.0d0,6.0d0), (5.0d0,6.0d0), (5.0d0,6.0d0),
160 + (5.0d0,6.0d0), (5.0d0,6.0d0), (0.1d0,0.1d0),
161 + (-0.6d0,0.1d0), (0.1d0,-0.3d0), (7.0d0,8.0d0),
162 + (7.0d0,8.0d0), (7.0d0,8.0d0), (7.0d0,8.0d0),
163 + (7.0d0,8.0d0), (0.3d0,0.1d0), (0.5d0,0.0d0),
164 + (0.0d0,0.5d0), (0.0d0,0.2d0), (2.0d0,3.0d0),
165 + (2.0d0,3.0d0), (2.0d0,3.0d0), (2.0d0,3.0d0)/
166 DATA ((cv(i,j,2),i=1,8),j=1,5)/(0.1d0,0.1d0),
167 + (4.0d0,5.0d0), (4.0d0,5.0d0), (4.0d0,5.0d0),
168 + (4.0d0,5.0d0), (4.0d0,5.0d0), (4.0d0,5.0d0),
169 + (4.0d0,5.0d0), (0.3d0,-0.4d0), (6.0d0,7.0d0),
170 + (6.0d0,7.0d0), (6.0d0,7.0d0), (6.0d0,7.0d0),
171 + (6.0d0,7.0d0), (6.0d0,7.0d0), (6.0d0,7.0d0),
172 + (0.1d0,-0.3d0), (8.0d0,9.0d0), (0.5d0,-0.1d0),
173 + (2.0d0,5.0d0), (2.0d0,5.0d0), (2.0d0,5.0d0),
174 + (2.0d0,5.0d0), (2.0d0,5.0d0), (0.1d0,0.1d0),
175 + (3.0d0,6.0d0), (-0.6d0,0.1d0), (4.0d0,7.0d0),
176 + (0.1d0,-0.3d0), (7.0d0,2.0d0), (7.0d0,2.0d0),
177 + (7.0d0,2.0d0), (0.3d0,0.1d0), (5.0d0,8.0d0),
178 + (0.5d0,0.0d0), (6.0d0,9.0d0), (0.0d0,0.5d0),
179 + (8.0d0,3.0d0), (0.0d0,0.2d0), (9.0d0,4.0d0)/
180 DATA cvr/(8.0d0,8.0d0), (-7.0d0,-7.0d0),
181 + (9.0d0,9.0d0), (5.0d0,5.0d0), (9.0d0,9.0d0),
182 + (8.0d0,8.0d0), (7.0d0,7.0d0), (7.0d0,7.0d0)/
183 DATA strue2/0.0d0, 0.5d0, 0.6d0, 0.7d0, 0.8d0/
184 DATA strue4/0.0d0, 0.7d0, 1.0d0, 1.3d0, 1.6d0/
185 DATA ((ctrue5(i,j,1),i=1,8),j=1,5)/(0.1d0,0.1d0),
186 + (1.0d0,2.0d0), (1.0d0,2.0d0), (1.0d0,2.0d0),
187 + (1.0d0,2.0d0), (1.0d0,2.0d0), (1.0d0,2.0d0),
188 + (1.0d0,2.0d0), (-0.16d0,-0.37d0), (3.0d0,4.0d0),
189 + (3.0d0,4.0d0), (3.0d0,4.0d0), (3.0d0,4.0d0),
190 + (3.0d0,4.0d0), (3.0d0,4.0d0), (3.0d0,4.0d0),
191 + (-0.17d0,-0.19d0), (0.13d0,-0.39d0),
192 + (5.0d0,6.0d0), (5.0d0,6.0d0), (5.0d0,6.0d0),
193 + (5.0d0,6.0d0), (5.0d0,6.0d0), (5.0d0,6.0d0),
194 + (0.11d0,-0.03d0), (-0.17d0,0.46d0),
195 + (-0.17d0,-0.19d0), (7.0d0,8.0d0), (7.0d0,8.0d0),
196 + (7.0d0,8.0d0), (7.0d0,8.0d0), (7.0d0,8.0d0),
197 + (0.19d0,-0.17d0), (0.20d0,-0.35d0),
198 + (0.35d0,0.20d0), (0.14d0,0.08d0),
199 + (2.0d0,3.0d0), (2.0d0,3.0d0), (2.0d0,3.0d0),
201 DATA ((ctrue5(i,j,2),i=1,8),j=1,5)/(0.1d0,0.1d0),
202 + (4.0d0,5.0d0), (4.0d0,5.0d0), (4.0d0,5.0d0),
203 + (4.0d0,5.0d0), (4.0d0,5.0d0), (4.0d0,5.0d0),
204 + (4.0d0,5.0d0), (-0.16d0,-0.37d0), (6.0d0,7.0d0),
205 + (6.0d0,7.0d0), (6.0d0,7.0d0), (6.0d0,7.0d0),
206 + (6.0d0,7.0d0), (6.0d0,7.0d0), (6.0d0,7.0d0),
207 + (-0.17d0,-0.19d0), (8.0d0,9.0d0),
208 + (0.13d0,-0.39d0), (2.0d0,5.0d0), (2.0d0,5.0d0),
209 + (2.0d0,5.0d0), (2.0d0,5.0d0), (2.0d0,5.0d0),
210 + (0.11d0,-0.03d0), (3.0d0,6.0d0),
211 + (-0.17d0,0.46d0), (4.0d0,7.0d0),
212 + (-0.17d0,-0.19d0), (7.0d0,2.0d0), (7.0d0,2.0d0),
213 + (7.0d0,2.0d0), (0.19d0,-0.17d0), (5.0d0,8.0d0),
214 + (0.20d0,-0.35d0), (6.0d0,9.0d0),
215 + (0.35d0,0.20d0), (8.0d0,3.0d0),
216 + (0.14d0,0.08d0), (9.0d0,4.0d0)/
217 DATA ((ctrue6(i,j,1),i=1,8),j=1,5)/(0.1d0,0.1d0),
218 + (1.0d0,2.0d0), (1.0d0,2.0d0), (1.0d0,2.0d0),
219 + (1.0d0,2.0d0), (1.0d0,2.0d0), (1.0d0,2.0d0),
220 + (1.0d0,2.0d0), (0.09d0,-0.12d0), (3.0d0,4.0d0),
221 + (3.0d0,4.0d0), (3.0d0,4.0d0), (3.0d0,4.0d0),
222 + (3.0d0,4.0d0), (3.0d0,4.0d0), (3.0d0,4.0d0),
223 + (0.03d0,-0.09d0), (0.15d0,-0.03d0),
224 + (5.0d0,6.0d0), (5.0d0,6.0d0), (5.0d0,6.0d0),
225 + (5.0d0,6.0d0), (5.0d0,6.0d0), (5.0d0,6.0d0),
226 + (0.03d0,0.03d0), (-0.18d0,0.03d0),
227 + (0.03d0,-0.09d0), (7.0d0,8.0d0), (7.0d0,8.0d0),
228 + (7.0d0,8.0d0), (7.0d0,8.0d0), (7.0d0,8.0d0),
229 + (0.09d0,0.03d0), (0.15d0,0.00d0),
230 + (0.00d0,0.15d0), (0.00d0,0.06d0), (2.0d0,3.0d0),
231 + (2.0d0,3.0d0), (2.0d0,3.0d0), (2.0d0,3.0d0)/
232 DATA ((ctrue6(i,j,2),i=1,8),j=1,5)/(0.1d0,0.1d0),
233 + (4.0d0,5.0d0), (4.0d0,5.0d0), (4.0d0,5.0d0),
234 + (4.0d0,5.0d0), (4.0d0,5.0d0), (4.0d0,5.0d0),
235 + (4.0d0,5.0d0), (0.09d0,-0.12d0), (6.0d0,7.0d0),
236 + (6.0d0,7.0d0), (6.0d0,7.0d0), (6.0d0,7.0d0),
237 + (6.0d0,7.0d0), (6.0d0,7.0d0), (6.0d0,7.0d0),
238 + (0.03d0,-0.09d0), (8.0d0,9.0d0),
239 + (0.15d0,-0.03d0), (2.0d0,5.0d0), (2.0d0,5.0d0),
240 + (2.0d0,5.0d0), (2.0d0,5.0d0), (2.0d0,5.0d0),
241 + (0.03d0,0.03d0), (3.0d0,6.0d0),
242 + (-0.18d0,0.03d0), (4.0d0,7.0d0),
243 + (0.03d0,-0.09d0), (7.0d0,2.0d0), (7.0d0,2.0d0),
244 + (7.0d0,2.0d0), (0.09d0,0.03d0), (5.0d0,8.0d0),
245 + (0.15d0,0.00d0), (6.0d0,9.0d0), (0.00d0,0.15d0),
246 + (8.0d0,3.0d0), (0.00d0,0.06d0), (9.0d0,4.0d0)/
247 DATA itrue3/0, 1, 2, 2, 2/
248 DATA itruec/0, 1, 1, 1, 1/
256 cx(i) = cv(i,np1,incx)
261 CALL zb1nrm2(n,(incx-2)*2,thresh)
264 CALL stest1(dznrm2(n,cx,incx),strue2(np1),strue2(np1),
266 ELSE IF (icase.EQ.7)
THEN
268 CALL stest1(dzasum(n,cx,incx),strue4(np1),strue4(np1),
270 ELSE IF (icase.EQ.8)
THEN
272 CALL zscal(n,ca,cx,incx)
273 CALL ctest(len,cx,ctrue5(1,np1,incx),ctrue5(1,np1,incx),
275 ELSE IF (icase.EQ.9)
THEN
278 CALL ctest(len,cx,ctrue6(1,np1,incx),ctrue6(1,np1,incx),
280 ELSE IF (icase.EQ.10)
THEN
282 CALL itest1(izamax(n,cx,incx),itrue3(np1))
284 cx(i) = (42.0d0,43.0d0)
286 CALL itest1(izamax(n,cx,incx),itruec(np1))
288 WRITE (nout,*)
' Shouldn''t be here in CHECK1'
293 IF (icase.EQ.10)
THEN
300 CALL itest1(izamax(n,cxr,incx),3)
310 mwpct(i) = (0.0d0,0.0d0)
311 mwpcs(i) = (1.0d0,1.0d0)
313 CALL zscal(5,ca,cx,incx)
314 CALL ctest(5,cx,mwpct,mwpcs,sfac)
315 ELSE IF (icase.EQ.9)
THEN
320 mwpct(i) = (0.0d0,0.0d0)
321 mwpcs(i) = (1.0d0,1.0d0)
324 CALL ctest(5,cx,mwpct,mwpcs,sfac)
332 CALL ctest(5,cx,mwpct,mwpcs,sfac)
340 CALL ctest(5,cx,mwpct,mwpcs,sfac)
352 DOUBLE PRECISION SFAC
354 INTEGER ICASE, INCX, INCY, MODE, N
358 INTEGER I, J, KI, KN, KSIZE, LENX, LENY, LINCX, LINCY,
361 COMPLEX*16 CDOT(1), CSIZE1(4), CSIZE2(7,2), CSIZE3(14),
362 + CT10X(7,4,4), CT10Y(7,4,4), CT6(4,4), CT7(4,4),
363 + CT8(7,4,4), CTY0(1), CX(7), CX0(1), CX1(7),
364 + CY(7), CY0(1), CY1(7)
365 INTEGER INCXS(4), INCYS(4), LENS(4,2), NS(4)
367 COMPLEX*16 ZDOTC, ZDOTU
368 EXTERNAL zdotc, zdotu
374 COMMON /combla/icase, n, incx, incy, mode, pass
376 DATA ca/(0.4d0,-0.7d0)/
377 DATA incxs/1, 2, -2, -1/
378 DATA incys/1, -2, 1, -2/
379 DATA lens/1, 1, 2, 4, 1, 1, 3, 7/
381 DATA cx1/(0.7d0,-0.8d0), (-0.4d0,-0.7d0),
382 + (-0.1d0,-0.9d0), (0.2d0,-0.8d0),
383 + (-0.9d0,-0.4d0), (0.1d0,0.4d0), (-0.6d0,0.6d0)/
384 DATA cy1/(0.6d0,-0.6d0), (-0.9d0,0.5d0),
385 + (0.7d0,-0.6d0), (0.1d0,-0.5d0), (-0.1d0,-0.2d0),
386 + (-0.5d0,-0.3d0), (0.8d0,-0.7d0)/
387 DATA ((ct8(i,j,1),i=1,7),j=1,4)/(0.6d0,-0.6d0),
388 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
389 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
390 + (0.32d0,-1.41d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
391 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
392 + (0.0d0,0.0d0), (0.32d0,-1.41d0),
393 + (-1.55d0,0.5d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
394 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
395 + (0.32d0,-1.41d0), (-1.55d0,0.5d0),
396 + (0.03d0,-0.89d0), (-0.38d0,-0.96d0),
397 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0)/
398 DATA ((ct8(i,j,2),i=1,7),j=1,4)/(0.6d0,-0.6d0),
399 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
400 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
401 + (0.32d0,-1.41d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
402 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
403 + (0.0d0,0.0d0), (-0.07d0,-0.89d0),
404 + (-0.9d0,0.5d0), (0.42d0,-1.41d0), (0.0d0,0.0d0),
405 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
406 + (0.78d0,0.06d0), (-0.9d0,0.5d0),
407 + (0.06d0,-0.13d0), (0.1d0,-0.5d0),
408 + (-0.77d0,-0.49d0), (-0.5d0,-0.3d0),
410 DATA ((ct8(i,j,3),i=1,7),j=1,4)/(0.6d0,-0.6d0),
411 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
412 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
413 + (0.32d0,-1.41d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
414 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
415 + (0.0d0,0.0d0), (-0.07d0,-0.89d0),
416 + (-1.18d0,-0.31d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
417 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
418 + (0.78d0,0.06d0), (-1.54d0,0.97d0),
419 + (0.03d0,-0.89d0), (-0.18d0,-1.31d0),
420 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0)/
421 DATA ((ct8(i,j,4),i=1,7),j=1,4)/(0.6d0,-0.6d0),
422 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
423 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
424 + (0.32d0,-1.41d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
425 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
426 + (0.0d0,0.0d0), (0.32d0,-1.41d0), (-0.9d0,0.5d0),
427 + (0.05d0,-0.6d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
428 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.32d0,-1.41d0),
429 + (-0.9d0,0.5d0), (0.05d0,-0.6d0), (0.1d0,-0.5d0),
430 + (-0.77d0,-0.49d0), (-0.5d0,-0.3d0),
432 DATA ct7/(0.0d0,0.0d0), (-0.06d0,-0.90d0),
433 + (0.65d0,-0.47d0), (-0.34d0,-1.22d0),
434 + (0.0d0,0.0d0), (-0.06d0,-0.90d0),
435 + (-0.59d0,-1.46d0), (-1.04d0,-0.04d0),
436 + (0.0d0,0.0d0), (-0.06d0,-0.90d0),
437 + (-0.83d0,0.59d0), (0.07d0,-0.37d0),
438 + (0.0d0,0.0d0), (-0.06d0,-0.90d0),
439 + (-0.76d0,-1.15d0), (-1.33d0,-1.82d0)/
440 DATA ct6/(0.0d0,0.0d0), (0.90d0,0.06d0),
441 + (0.91d0,-0.77d0), (1.80d0,-0.10d0),
442 + (0.0d0,0.0d0), (0.90d0,0.06d0), (1.45d0,0.74d0),
443 + (0.20d0,0.90d0), (0.0d0,0.0d0), (0.90d0,0.06d0),
444 + (-0.55d0,0.23d0), (0.83d0,-0.39d0),
445 + (0.0d0,0.0d0), (0.90d0,0.06d0), (1.04d0,0.79d0),
447 DATA ((ct10x(i,j,1),i=1,7),j=1,4)/(0.7d0,-0.8d0),
448 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
449 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
450 + (0.6d0,-0.6d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
451 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
452 + (0.0d0,0.0d0), (0.6d0,-0.6d0), (-0.9d0,0.5d0),
453 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
454 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.6d0,-0.6d0),
455 + (-0.9d0,0.5d0), (0.7d0,-0.6d0), (0.1d0,-0.5d0),
456 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0)/
457 DATA ((ct10x(i,j,2),i=1,7),j=1,4)/(0.7d0,-0.8d0),
458 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
459 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
460 + (0.6d0,-0.6d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
461 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
462 + (0.0d0,0.0d0), (0.7d0,-0.6d0), (-0.4d0,-0.7d0),
463 + (0.6d0,-0.6d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
464 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.8d0,-0.7d0),
465 + (-0.4d0,-0.7d0), (-0.1d0,-0.2d0),
466 + (0.2d0,-0.8d0), (0.7d0,-0.6d0), (0.1d0,0.4d0),
468 DATA ((ct10x(i,j,3),i=1,7),j=1,4)/(0.7d0,-0.8d0),
469 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
470 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
471 + (0.6d0,-0.6d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
472 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
473 + (0.0d0,0.0d0), (-0.9d0,0.5d0), (-0.4d0,-0.7d0),
474 + (0.6d0,-0.6d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
475 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.1d0,-0.5d0),
476 + (-0.4d0,-0.7d0), (0.7d0,-0.6d0), (0.2d0,-0.8d0),
477 + (-0.9d0,0.5d0), (0.1d0,0.4d0), (0.6d0,-0.6d0)/
478 DATA ((ct10x(i,j,4),i=1,7),j=1,4)/(0.7d0,-0.8d0),
479 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
480 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
481 + (0.6d0,-0.6d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
482 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
483 + (0.0d0,0.0d0), (0.6d0,-0.6d0), (0.7d0,-0.6d0),
484 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
485 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.6d0,-0.6d0),
486 + (0.7d0,-0.6d0), (-0.1d0,-0.2d0), (0.8d0,-0.7d0),
487 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0)/
488 DATA ((ct10y(i,j,1),i=1,7),j=1,4)/(0.6d0,-0.6d0),
489 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
490 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
491 + (0.7d0,-0.8d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
492 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
493 + (0.0d0,0.0d0), (0.7d0,-0.8d0), (-0.4d0,-0.7d0),
494 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
495 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.7d0,-0.8d0),
496 + (-0.4d0,-0.7d0), (-0.1d0,-0.9d0),
497 + (0.2d0,-0.8d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
499 DATA ((ct10y(i,j,2),i=1,7),j=1,4)/(0.6d0,-0.6d0),
500 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
501 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
502 + (0.7d0,-0.8d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
503 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
504 + (0.0d0,0.0d0), (-0.1d0,-0.9d0), (-0.9d0,0.5d0),
505 + (0.7d0,-0.8d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
506 + (0.0d0,0.0d0), (0.0d0,0.0d0), (-0.6d0,0.6d0),
507 + (-0.9d0,0.5d0), (-0.9d0,-0.4d0), (0.1d0,-0.5d0),
508 + (-0.1d0,-0.9d0), (-0.5d0,-0.3d0),
510 DATA ((ct10y(i,j,3),i=1,7),j=1,4)/(0.6d0,-0.6d0),
511 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
512 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
513 + (0.7d0,-0.8d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
514 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
515 + (0.0d0,0.0d0), (-0.1d0,-0.9d0), (0.7d0,-0.8d0),
516 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
517 + (0.0d0,0.0d0), (0.0d0,0.0d0), (-0.6d0,0.6d0),
518 + (-0.9d0,-0.4d0), (-0.1d0,-0.9d0),
519 + (0.7d0,-0.8d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
521 DATA ((ct10y(i,j,4),i=1,7),j=1,4)/(0.6d0,-0.6d0),
522 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
523 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
524 + (0.7d0,-0.8d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
525 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
526 + (0.0d0,0.0d0), (0.7d0,-0.8d0), (-0.9d0,0.5d0),
527 + (-0.4d0,-0.7d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
528 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.7d0,-0.8d0),
529 + (-0.9d0,0.5d0), (-0.4d0,-0.7d0), (0.1d0,-0.5d0),
530 + (-0.1d0,-0.9d0), (-0.5d0,-0.3d0),
532 DATA csize1/(0.0d0,0.0d0), (0.9d0,0.9d0),
533 + (1.63d0,1.73d0), (2.90d0,2.78d0)/
534 DATA csize3/(0.0d0,0.0d0), (0.0d0,0.0d0),
535 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
536 + (0.0d0,0.0d0), (0.0d0,0.0d0), (1.17d0,1.17d0),
537 + (1.17d0,1.17d0), (1.17d0,1.17d0),
538 + (1.17d0,1.17d0), (1.17d0,1.17d0),
539 + (1.17d0,1.17d0), (1.17d0,1.17d0)/
540 DATA csize2/(0.0d0,0.0d0), (0.0d0,0.0d0),
541 + (0.0d0,0.0d0), (0.0d0,0.0d0), (0.0d0,0.0d0),
542 + (0.0d0,0.0d0), (0.0d0,0.0d0), (1.54d0,1.54d0),
543 + (1.54d0,1.54d0), (1.54d0,1.54d0),
544 + (1.54d0,1.54d0), (1.54d0,1.54d0),
545 + (1.54d0,1.54d0), (1.54d0,1.54d0)/
565 cdot(1) = zdotc(n,cx,incx,cy,incy)
566 CALL ctest(1,cdot,ct6(kn,ki),csize1(kn),sfac)
567 ELSE IF (icase.EQ.2)
THEN
569 cdot(1) = zdotu(n,cx,incx,cy,incy)
570 CALL ctest(1,cdot,ct7(kn,ki),csize1(kn),sfac)
571 ELSE IF (icase.EQ.3)
THEN
573 CALL zaxpy(n,ca,cx,incx,cy,incy)
574 CALL ctest(leny,cy,ct8(1,kn,ki),csize2(1,ksize),sfac)
575 ELSE IF (icase.EQ.4)
THEN
577 CALL zcopy(n,cx,incx,cy,incy)
578 CALL ctest(leny,cy,ct10y(1,kn,ki),csize3,1.0d0)
580 cx0(1) = (42.0d0,43.0d0)
581 cy0(1) = (44.0d0,45.0d0)
591 CALL zcopy(n,cx0,incx,cy0,incy)
592 CALL ctest(1,cy0,cty0,csize3,1.0d0)
596 ELSE IF (icase.EQ.5)
THEN
598 CALL zswap(n,cx,incx,cy,incy)
599 CALL ctest(lenx,cx,ct10x(1,kn,ki),csize3,1.0d0)
600 CALL ctest(leny,cy,ct10y(1,kn,ki),csize3,1.0d0)
602 WRITE (nout,*)
' Shouldn''t be here in CHECK2'
613 SUBROUTINE stest(LEN,SCOMP,STRUE,SSIZE,SFAC)
624 DOUBLE PRECISION ZERO
625 parameter(nout=6, zero=0.0d0)
627 DOUBLE PRECISION SFAC
630 DOUBLE PRECISION SCOMP(LEN), SSIZE(LEN), STRUE(LEN)
632 INTEGER ICASE, INCX, INCY, MODE, N
638 DOUBLE PRECISION SDIFF
643 COMMON /combla/icase, n, incx, incy, mode, pass
647 sd = scomp(i) - strue(i)
648 IF (abs(sfac*sd) .LE. abs(ssize(i))*epsilon(zero))
653 IF ( .NOT. pass)
GO TO 20
658 20
WRITE (nout,99997) icase, n, incx, incy, mode, i, scomp(i),
659 + strue(i), sd, ssize(i)
66399999
FORMAT (
' FAIL')
66499998
FORMAT (/
' CASE N INCX INCY MODE I ',
665 +
' COMP(I) TRUE(I) DIFFERENCE',
66799997
FORMAT (1x,i4,i3,3i5,i3,2d36.8,2d12.4)
672 SUBROUTINE stest1(SCOMP1,STRUE1,SSIZE,SFAC)
682 DOUBLE PRECISION SCOMP1, SFAC, STRUE1
684 DOUBLE PRECISION SSIZE(*)
686 DOUBLE PRECISION SCOMP(1), STRUE(1)
693 CALL stest(1,scomp,strue,ssize,sfac)
700 DOUBLE PRECISION FUNCTION sdiff(SA,SB)
705 DOUBLE PRECISION sa, sb
713 SUBROUTINE ctest(LEN,CCOMP,CTRUE,CSIZE,SFAC)
719 DOUBLE PRECISION SFAC
722 COMPLEX*16 CCOMP(LEN), CSIZE(LEN), CTRUE(LEN)
726 DOUBLE PRECISION SCOMP(20), SSIZE(20), STRUE(20)
730 INTRINSIC dimag, dble
733 scomp(2*i-1) = dble(ccomp(i))
734 scomp(2*i) = dimag(ccomp(i))
735 strue(2*i-1) = dble(ctrue(i))
736 strue(2*i) = dimag(ctrue(i))
737 ssize(2*i-1) = dble(csize(i))
738 ssize(2*i) = dimag(csize(i))
741 CALL stest(2*len,scomp,strue,ssize,sfac)
760 INTEGER ICASE, INCX, INCY, MODE, N
765 COMMON /combla/icase, n, incx, incy, mode, pass
767 IF (icomp.EQ.itrue)
GO TO 40
771 IF ( .NOT. pass)
GO TO 20
776 20 id = icomp - itrue
777 WRITE (nout,99997) icase, n, incx, incy, mode, icomp, itrue, id
78199999
FORMAT (
' FAIL')
78299998
FORMAT (/
' CASE N INCX INCY MODE ',
783 +
' COMP TRUE DIFFERENCE',
78599997
FORMAT (1x,i4,i3,3i5,2i36,i12)
808 DOUBLE PRECISION THRESH
812 INTEGER NMAX, NOUT, NV
813 parameter(nmax=20, nout=6, nv=10)
814 DOUBLE PRECISION HALF, ONE, THREE, TWO, ZERO
815 parameter(half=0.5d+0, one=1.0d+0, two= 2.0d+0,
816 & three=3.0d+0, zero=0.0d+0)
818 DOUBLE PRECISION DZNRM2
821 INTRINSIC aimag, abs, dcmplx, dble, max, min, sqrt
823 DOUBLE PRECISION BIGNUM, SAFMAX, SAFMIN, SMLNUM, ULP
824 parameter(bignum=0.99792015476735990583d+292,
825 & safmax=0.44942328371557897693d+308,
826 & safmin=0.22250738585072013831d-307,
827 & smlnum=0.10020841800044863890d-291,
828 & ulp=0.22204460492503130808d-015)
831 DOUBLE PRECISION SNRM, TRAT, V0, V1, WORKSSQ, Y1, Y2,
832 & YMAX, YMIN, YNRM, ZNRM
833 INTEGER I, IV, IW, IX, KS
836 COMPLEX*16 X(NMAX), Z(NMAX)
837 DOUBLE PRECISION VALUES(NV), WORK(NMAX)
840 values(2) = two*safmin
844 values(6) = one / ulp
847 values(9) = dxvals(v0,2)
848 values(10) = dxvals(v0,3)
849 rogue = dcmplx(1234.5678d+0,-1234.5678d+0)
854 IF (n*abs(incx).GT.nmax)
THEN
855 WRITE (nout,99)
"DZNRM2", nmax, incx, n, n*abs(incx)
868 CALL random_number(work(i))
869 work(i) = one - two*work(i)
877 workssq = workssq + work(i)*work(i)
886 IF (abs(v0).GT.one)
THEN
889 z(1) = dcmplx(v0,-three*v0)
892 IF (abs(v1).GT.one)
THEN
893 v1 = (v1*half) / sqrt(dble(ks+1))
896 z(i+1) = dcmplx(v1*work(2*i-1),v1*work(2*i))
901 y1 = abs(v0) * sqrt(10.0d0)
903 y2 = abs(v1)*sqrt(workssq)
914 IF ((y1.NE.y1).OR.(y2.NE.y2))
THEN
917 ELSE IF (ymin == ymax)
THEN
918 ynrm = sqrt(two)*ymax
919 ELSE IF (ymax == zero)
THEN
922 ynrm = ymax*sqrt(one + (ymin / ymax)**2)
931 IF (incx.LT.0) ix = 1 - (n-1)*incx
939 snrm = dznrm2(n,x,incx)
946 y2 = abs(aimag(x(1)))
949 IF ((y1.NE.y1).OR.(y2.NE.y2))
THEN
952 ELSE IF (ymin == ymax)
THEN
953 znrm = sqrt(two)*ymax
954 ELSE IF (ymax == zero)
THEN
957 znrm = ymax * sqrt(one + (ymin / ymax)**2)
959 znrm = sqrt(dble(n)) * znrm
966 IF ((snrm.NE.snrm).OR.(znrm.NE.znrm))
THEN
967 IF ((snrm.NE.snrm).NEQV.(znrm.NE.znrm))
THEN
972 ELSE IF (znrm == zero)
THEN
975 trat = (abs(snrm-znrm) / znrm) / (two*dble(n)*ulp)
977 IF ((trat.NE.trat).OR.(trat.GE.thresh))
THEN
982 WRITE (nout,98)
"DZNRM2", n, incx, iv, iw, trat
98699999
FORMAT (
' FAIL')
987 99
FORMAT (
' Not enough space to test ', a6,
': NMAX = ',i6,
988 +
', INCX = ',i6,/,
' N = ',i6,
', must be at least ',i6 )
989 98
FORMAT( 1x, a6,
': N=', i6,
', INCX=', i4,
', IV=', i2,
', IW=',
990 + i2,
', test=', e15.8 )
993 DOUBLE PRECISION FUNCTION dxvals(XX,K)
998 DOUBLE PRECISION X, Y, YY, Z
1006 ELSE IF (k.EQ.2)
THEN
1008 ELSE IF (k.EQ.3)
THEN
subroutine stest(len, scomp, strue, ssize, sfac)
subroutine ctest(len, ccomp, ctrue, csize, sfac)
subroutine stest1(scomp1, strue1, ssize, sfac)
subroutine itest1(icomp, itrue)
real function sdiff(sa, sb)
subroutine zaxpy(n, za, zx, incx, zy, incy)
ZAXPY
subroutine zcopy(n, zx, incx, zy, incy)
ZCOPY
subroutine zdscal(n, da, zx, incx)
ZDSCAL
subroutine zscal(n, za, zx, incx)
ZSCAL
subroutine zswap(n, zx, incx, zy, incy)
ZSWAP
subroutine zb1nrm2(n, incx, thresh)