deffb239bbb48c496551b141c006be6a4432459c
[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   volatile float left, right;
23
24   left = 17;
25   right = 343;
26
27   ASSERT(left/right == (17.0/343.0));
28   ASSERT(right/left == (343.0/17.0));
29
30   right = 17;
31   ASSERT(left/right == 1.0);
32 }
33
34 void
35 testDivNearOne(void)
36 {
37   volatile float left, right, result;
38
39   left = 12392.4;
40   right = 12392.4;
41   result = left / right;
42
43   if (result > 0.999999)
44     {
45       /* Fine */
46     }
47   else
48     {
49       FAIL();
50     }
51   if (result < 1.00001)
52     {
53       /* Fine */
54     }
55   else
56     {
57       FAIL();
58     }
59   if (result > 0.999999 && result < 1.00001)
60     {
61       /* Fine */
62     }
63   else
64     {
65       FAIL();
66     }
67 }