@@ -75,7 +75,9 @@ program zdiv
7575* .. Local Variables ..
7676 integer i, min, Max, m,
7777 $ subnormalTreatedAs0, caseAFails, caseBFails,
78- $ caseCFails, caseDFails, caseEFails, caseFFails
78+ $ caseCFails, caseDFails, caseEFails, caseFFails,
79+ $ caseInfFails, caseNaNFails, nFailingTests,
80+ $ nTests
7981 double precision X( N ), aInf, aNaN, b,
8082 $ eps, blueMin, blueMax, OV, Xj, stepX(N), limX(N)
8183 double complex Y, Y2, R, cInf( nInf ), cNaN( nNaN )
@@ -94,6 +96,10 @@ program zdiv
9496 caseDFails = 0
9597 caseEFails = 0
9698 caseFFails = 0
99+ caseInfFails = 0
100+ caseNaNFails = 0
101+ nFailingTests = 0
102+ nTests = 0
97103*
98104* .. Initialize machine constants ..
99105 min = MINEXPONENT (0.0d0 )
@@ -174,6 +180,7 @@ program zdiv
174180 endif
175181 else
176182 do while ( Xj .ne. limX(i) )
183+ nTests = nTests + 1
177184 Y = DCMPLX( Xj, 0.0d0 )
178185 R = Y / Y
179186 if ( R .ne. 1.0D0 ) then
@@ -199,6 +206,7 @@ program zdiv
199206 endif
200207 else
201208 do while ( Xj .ne. limX(i) )
209+ nTests = nTests + 1
202210 Y = DCMPLX( 0.0d0 , Xj )
203211 R = Y / Y
204212 if ( R .ne. 1.0D0 ) then
@@ -224,6 +232,7 @@ program zdiv
224232 endif
225233 else
226234 do while ( Xj .ne. limX(i) )
235+ nTests = nTests + 1
227236 Y = DCMPLX( Xj, Xj )
228237 R = Y / Y
229238 if ( R .ne. 1.0D0 ) then
@@ -249,6 +258,7 @@ program zdiv
249258 endif
250259 else
251260 do while ( Xj .ne. limX(i) )
261+ nTests = nTests + 1
252262 Y = DCMPLX( 0.0d0 , Xj )
253263 Y2 = DCMPLX( Xj, 0.0d0 )
254264 R = Y / Y2
@@ -275,6 +285,7 @@ program zdiv
275285 endif
276286 else
277287 do while ( Xj .ne. limX(i) )
288+ nTests = nTests + 1
278289 Y = DCMPLX( 0.0d0 , Xj )
279290 Y2 = DCMPLX( Xj, 0.0d0 )
280291 R = Y2 / Y
@@ -301,6 +312,7 @@ program zdiv
301312 endif
302313 else
303314 do while ( Xj .ne. limX(i) )
315+ nTests = nTests + 1
304316 Y = DCMPLX( Xj, Xj )
305317 R = Y / DCONJG( Y )
306318 if ( R .ne. DCMPLX(0.0D0 ,1.0D0 ) ) then
@@ -318,38 +330,57 @@ program zdiv
318330*
319331* Test (g) Infs
320332 do 70 i = 1 , nInf
333+ nTests = nTests + 3
321334 Y = cInf(i)
322335 R = czero / Y
323336 if ( (R .ne. czero) .and. (R .eq. R) ) then
337+ caseInfFails = caseInfFails + 1
324338 WRITE ( * , FMT = 9998 ) ' ia' ,i, czero, Y, R, ' NaN and 0'
325339 endif
326340 R = cone / Y
327341 if ( (R .ne. czero) .and. (R .eq. R) ) then
342+ caseInfFails = caseInfFails + 1
328343 WRITE ( * , FMT = 9998 ) ' ib' ,i, cone, Y, R, ' NaN and 0'
329344 endif
330345 R = Y / Y
331346 if ( R .eq. R ) then
347+ caseInfFails = caseInfFails + 1
332348 WRITE ( * , FMT = 9998 ) ' ic' ,i, Y, Y, R, ' NaN'
333349 endif
334350 70 continue
335351*
336352* Test (h) NaNs
337353 do 80 i = 1 , nNaN
354+ nTests = nTests + 3
338355 Y = cNaN(i)
339356 R = czero / Y
340357 if ( R .eq. R ) then
358+ caseNaNFails = caseNaNFails + 1
341359 WRITE ( * , FMT = 9998 ) ' na' ,i, czero, Y, R, ' NaN'
342360 endif
343361 R = cone / Y
344362 if ( R .eq. R ) then
363+ caseNaNFails = caseNaNFails + 1
345364 WRITE ( * , FMT = 9998 ) ' nb' ,i, cone, Y, R, ' NaN'
346365 endif
347366 R = Y / Y
348367 if ( R .eq. R ) then
368+ caseNaNFails = caseNaNFails + 1
349369 WRITE ( * , FMT = 9998 ) ' nc' ,i, Y, Y, R, ' NaN'
350370 endif
351371 80 continue
352372*
373+ * If any test fails, displays a message
374+ nFailingTests = caseAFails + caseBFails + caseCFails + caseDFails
375+ $ + caseEFails + caseFFails + caseInfFails
376+ $ + caseNaNFails
377+ if ( nFailingTests .gt. 0 ) then
378+ print * , " # " , nTests- nFailingTests, " tests out of " , nTests,
379+ $ " pass for complex division," , nFailingTests," fail."
380+ else
381+ print * , " # All tests pass for complex division."
382+ endif
383+ *
353384* If anything was written to stderr, print the message
354385 if ( (caseAFails .gt. 0 ) .or. (caseBFails .gt. 0 ) .or.
355386 $ (caseCFails .gt. 0 ) .or. (caseDFails .gt. 0 ) .or.
0 commit comments