|
| 1 | +#include <assert.h> |
| 2 | + |
| 3 | +typedef __CPROVER_fixedbv[32][16] fbvt; |
| 4 | + |
1 | 5 | int main()
|
2 | 6 | {
|
3 |
| - double f; |
| 7 | + fbvt f; |
4 | 8 |
|
5 | 9 | // addition
|
6 |
| - assert(100.0+10==110); |
| 10 | + assert((fbvt)100.0+10==110); |
7 | 11 | assert(0+f==f);
|
8 | 12 | assert(f+0==f);
|
9 |
| - assert(100+0.5==100.5); |
10 |
| - assert(0.0+0.0+f==f); |
| 13 | + assert(100+(fbvt)0.5==(fbvt)100.5); |
| 14 | + assert((fbvt)0.0+(fbvt)0.0+f==f); |
11 | 15 |
|
12 | 16 | // subtraction
|
13 |
| - assert(100.0-10==90); |
| 17 | + assert((fbvt)100.0-10==90); |
14 | 18 | assert(0-f==-f);
|
15 | 19 | assert(f-0==f);
|
16 |
| - assert(100-0.5==99.5); |
17 |
| - assert(0.0-0.0-f==-f); |
| 20 | + assert(100-(fbvt)0.5==(fbvt)99.5); |
| 21 | + assert((fbvt)0.0-(fbvt)0.0-f==-f); |
18 | 22 |
|
19 | 23 | // unary minus
|
20 |
| - assert(-(-100.0)==100); |
21 |
| - assert(-(1-2.0)==1); |
| 24 | + assert(-(fbvt)(-100.0)==100); |
| 25 | + assert(-(1-(fbvt)2.0)==1); |
22 | 26 | assert(-(-f)==f);
|
23 | 27 |
|
24 | 28 | // multiplication
|
25 |
| - assert(100.0*10==1000); |
| 29 | + assert((fbvt)100.0*10==1000); |
26 | 30 | assert(0*f==0);
|
27 | 31 | assert(f*0==0);
|
28 |
| - assert(100*0.5==50); |
| 32 | + assert(100*(fbvt)0.5==50); |
29 | 33 | assert(f*1==f);
|
30 | 34 | assert(1*f==f);
|
31 |
| - assert(1.0*1.0*f==f); |
| 35 | + assert((fbvt)1.0*(fbvt)1.0*f==f); |
32 | 36 |
|
33 | 37 | // division
|
34 |
| - assert(100.0/1.0==100); |
35 |
| - assert(100.1/1.0==100.1); |
36 |
| - assert(100.0/2.0==50); |
37 |
| - assert(100.0/0.5==200); |
38 |
| - assert(0/1.0==0); |
39 |
| - assert(f/1.0==f); |
| 38 | + assert((fbvt)100.0/(fbvt)1.0==100); |
| 39 | + assert((fbvt)100.1/(fbvt)1.0==(fbvt)100.1); |
| 40 | + assert((fbvt)100.0/(fbvt)2.0==50); |
| 41 | + assert((fbvt)100.0/(fbvt)0.5==200); |
| 42 | + assert(0/(fbvt)1.0==0); |
| 43 | + assert(f/(fbvt)1.0==f); |
40 | 44 |
|
41 | 45 | // conversion
|
42 |
| - assert(((double)(float)100)==100.0); |
43 |
| - assert(((unsigned int)100.0)==100.0); |
| 46 | + assert(((__CPROVER_fixedbv[40][16])(fbvt)100)==(__CPROVER_fixedbv[40][16])100.0); |
| 47 | + assert(((unsigned int)(fbvt)100.0)==100.0); |
44 | 48 | assert(100.0);
|
45 | 49 | assert(!0.0);
|
46 |
| - assert((int)0.5==0); |
47 |
| - assert((int)0.49==0); |
48 |
| - assert((int)-1.5==-1); |
49 |
| - assert((int)-10.49==-10); |
| 50 | + assert((int)(fbvt)0.5==0); |
| 51 | + assert((int)(fbvt)0.49==0); |
| 52 | + assert((int)(fbvt)-1.5==-1); |
| 53 | + assert((int)(fbvt)-10.49==-10); |
50 | 54 |
|
51 | 55 | // relations
|
52 |
| - assert(1.0<2.5); |
53 |
| - assert(1.0<=2.5); |
54 |
| - assert(1.01<=1.01); |
55 |
| - assert(2.5>1.0); |
56 |
| - assert(2.5>=1.0); |
57 |
| - assert(1.01>=1.01); |
58 |
| - assert(!(1.0>=2.5)); |
59 |
| - assert(!(1.0>2.5)); |
60 |
| - assert(1.0!=2.5); |
| 56 | + assert((fbvt)1.0<(fbvt)2.5); |
| 57 | + assert((fbvt)1.0<=(fbvt)2.5); |
| 58 | + assert((fbvt)1.01<=(fbvt)1.01); |
| 59 | + assert((fbvt)2.5>(fbvt)1.0); |
| 60 | + assert((fbvt)2.5>=(fbvt)1.0); |
| 61 | + assert((fbvt)1.01>=(fbvt)1.01); |
| 62 | + assert(!((fbvt)1.0>=(fbvt)2.5)); |
| 63 | + assert(!((fbvt)1.0>(fbvt)2.5)); |
| 64 | + assert((fbvt)1.0!=(fbvt)2.5); |
61 | 65 | }
|
0 commit comments