1 /** bug-2516.c
2 */
3 #include <testfwk.h>
4 #include <stdlib.h>
5 #include <math.h>
6 
7 #pragma disable_warning 122
8 
9 #if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Not enough memory
10 float gfa = 1.0 / 0.0;
11 float gfb = (-1.0) / 0.0;
12 float gfc = 0.0 / 0.0;
13 float gfd = 1.0;
14 
15 static float sfa = 1.0 / 0.0;
16 static float sfb = (-1.0) / 0.0;
17 static float sfc = 0.0 / 0.0;
18 static float sfd = 1.0;
19 
divTest(float a,float b)20 static float divTest(float a, float b)
21 {
22   return a / b;
23 }
24 #endif
25 
26 void
testBug(void)27 testBug (void)
28 {
29 #if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Not enough memory
30   float lfa = 1.0 / 0.0;
31   float lfb = (-1.0) / 0.0;
32   float lfc = 0.0 / 0.0;
33   float lfd = 1.0;
34 
35   ASSERT (isinf (gfa));
36   ASSERT (isinf (sfa));
37   ASSERT (isinf (lfa));
38 
39   ASSERT (isinf (gfb));
40   ASSERT (isinf (sfb));
41   ASSERT (isinf (lfb));
42 
43   ASSERT (isnan (gfc));
44   ASSERT (isnan (sfc));
45   ASSERT (isnan (lfc));
46 
47   ASSERT (!isnan (gfd));
48   ASSERT (!isnan (sfd));
49   ASSERT (!isnan (lfd));
50 
51   ASSERT (!isinf (gfd));
52   ASSERT (!isinf (sfd));
53   ASSERT (!isinf (lfd));
54 
55   ASSERT (isinf (divTest (1.0, 0.0)));
56   ASSERT (isinf (divTest (-1.0, 0.0)));
57   ASSERT (isnan (divTest (0.0, 0.0)));
58 
59   ASSERT (!isinf (divTest (1.0, 0.5)));
60   ASSERT (!isnan (divTest (1.0, 0.5)));
61 
62   ASSERT (!isnan (divTest (1e38, 1e-38)));
63   ASSERT (isinf (divTest (1e38, 1e-38)));
64 #endif
65 }
66