3 float ffunc1(float arg) { return arg; }
4 float ffunc2(double arg) { return arg; }
5 float ffunc3(int arg) { return arg; }
6 double dfunc1(float arg) { return arg; }
7 double dfunc2(double arg) { return arg; }
8 double dfunc3(int arg) { return arg; }
10 // deal with recursive calls for floats / doubles
11 // requires stack alignment on some architectures
13 float frecurse(float a) {
16 return frecurse(3.14);
19 double drecurse(double a) {
22 return drecurse(6.28);
28 expectf(1.0 + 0.5, 1.5);
29 expectf(1.0 - 0.5, 0.5);
30 expectf(1.0 * 2.0, 2.0);
31 expectf(1.0 / 4.0, 0.25);
35 expectf(1.0 + 1, 2.0);
36 expectf(1.0 - 1, 0.0);
37 expectf(1.0 * 2, 2.0);
38 expectf(1.0 / 4, 0.25);
40 expectf(ffunc1(3.14f), 3.14f);
41 expectf(ffunc1(3.0f), 3.0f);
42 expectf(ffunc2(3.14f), 3.14f);
43 expectf(ffunc2(3.0f), 3.0f);
44 expectf(ffunc3(3.14f), 3.0f);
45 expectf(ffunc3(3), 3);
46 expectd(dfunc1(1.0), 1.0);
47 expectd(dfunc1(10.0), 10.0);
48 expectd(dfunc2(2.0), 2.0);
49 expectd(dfunc2(10), 10.0);
50 expectd(dfunc3(11.5), 11.0);
51 expectd(dfunc3(10), 10.0);
52 // Bug: these are still broken
53 //expectf(frecurse(1024), 3.14);
54 //expectd(drecurse(1024), 6.28);