c5434520cb10da4c4bc3bb945ec986552dcde820
[fw/sdcc] / support / regression / tests / simplefloat.c
1 /** Simple set of tests for floating pt.
2  */
3 #include <testfwk.h>
4
5 void
6 testCmp(void)
7 {
8   volatile float left, right;
9
10   left = 5;
11   right = 13;
12   ASSERT(left + right == 18);
13   ASSERT(left + right <= 18);
14   ASSERT(left + right >= 18);
15   ASSERT(left + right > 17.9);
16   ASSERT(left + right < 18.1);
17 }
18
19 void
20 testDiv(void)
21 {
22 #if !PORT_HOST
23 #ifdef __mcs51
24   idata at 0xd0
25 #endif
26   volatile float left;
27   volatile float right;
28
29   left = 17;
30   right = 343;
31
32   ASSERT(left/right == (17.0/343.0));
33   ASSERT(right/left == (343.0/17.0));
34
35   right = 17;
36   ASSERT(left/right == 1.0);
37 #endif
38 }
39
40 void
41 testDivNearOne(void)
42 {
43   volatile float left, right, result;
44
45   left = 12392.4;
46   right = 12392.4;
47   result = left / right;
48
49   if (result > 0.999999)
50     {
51       /* Fine */
52     }
53   else
54     {
55       FAIL();
56     }
57   if (result < 1.00001)
58     {
59       /* Fine */
60     }
61   else
62     {
63       FAIL();
64     }
65   if (result > 0.999999 && result < 1.00001)
66     {
67       /* Fine */
68     }
69   else
70     {
71       FAIL();
72     }
73 }