1 // Test floating point operations.
2
unaryOps()3 void unaryOps() {
4 // Unary ops
5 printf("-%g = %g\n", 1.1, -1.1);
6 printf("!%g = %d\n", 1.2, !1.2);
7 printf("!%g = %d\n", 0.0, !0.0);
8 }
9
binaryOps()10 void binaryOps() {
11 printf("double op double:\n");
12 printf("%g + %g = %g\n", 1.0, 2.0, 1.0 + 2.0);
13 printf("%g - %g = %g\n", 1.0, 2.0, 1.0 - 2.0);
14 printf("%g * %g = %g\n", 1.0, 2.0, 1.0 * 2.0);
15 printf("%g / %g = %g\n", 1.0, 2.0, 1.0 / 2.0);
16
17 printf("float op float:\n");
18 printf("%g + %g = %g\n", 1.0f, 2.0f, 1.0f + 2.0f);
19 printf("%g - %g = %g\n", 1.0f, 2.0f, 1.0f - 2.0f);
20 printf("%g * %g = %g\n", 1.0f, 2.0f, 1.0f * 2.0f);
21 printf("%g / %g = %g\n", 1.0f, 2.0f, 1.0f / 2.0f);
22
23 printf("double op float:\n");
24 printf("%g + %g = %g\n", 1.0, 2.0f, 1.0 + 2.0f);
25 printf("%g - %g = %g\n", 1.0, 2.0f, 1.0 - 2.0f);
26 printf("%g * %g = %g\n", 1.0, 2.0f, 1.0 * 2.0f);
27 printf("%g / %g = %g\n", 1.0, 2.0f, 1.0 / 2.0f);
28
29 printf("double op int:\n");
30 printf("%g + %d = %g\n", 1.0, 2, 1.0 + 2);
31 printf("%g - %d = %g\n", 1.0, 2, 1.0 - 2);
32 printf("%g * %d = %g\n", 1.0, 2, 1.0 * 2);
33 printf("%g / %d = %g\n", 1.0, 2, 1.0 / 2);
34
35 printf("int op double:\n");
36 printf("%d + %g = %g\n", 1, 2.0, 1 + 2.0);
37 printf("%d - %g = %g\n", 1, 2.0, 1 - 2.0);
38 printf("%d * %g = %g\n", 1, 2.0, 1 * 2.0);
39 printf("%d / %g = %g\n", 1, 2.0, 1 / 2.0);
40 }
41
comparisonTestdd(double a,double b)42 void comparisonTestdd(double a, double b) {
43 printf("%g op %g: < %d <= %d == %d >= %d > %d != %d\n",
44 a, b, a < b, a <= b, a == b, a >= b, a > b, a != b);
45 }
46
comparisonOpsdd()47 void comparisonOpsdd() {
48 printf("double op double:\n");
49 comparisonTestdd(1.0, 2.0);
50 comparisonTestdd(1.0, 1.0);
51 comparisonTestdd(2.0, 1.0);
52 }
53
54
comparisonTestdf(double a,float b)55 void comparisonTestdf(double a, float b) {
56 printf("%g op %g: < %d <= %d == %d >= %d > %d != %d\n",
57 a, b, a < b, a <= b, a == b, a >= b, a > b, a != b);
58 }
59
comparisonOpsdf()60 void comparisonOpsdf() {
61 printf("double op float:\n");
62 comparisonTestdf(1.0, 2.0f);
63 comparisonTestdf(1.0, 1.0f);
64 comparisonTestdf(2.0, 1.0f);
65 }
66
comparisonTestff(float a,float b)67 void comparisonTestff(float a, float b) {
68 printf("%g op %g: < %d <= %d == %d >= %d > %d != %d\n",
69 a, b, a < b, a <= b, a == b, a >= b, a > b, a != b);
70 }
71
comparisonOpsff()72 void comparisonOpsff() {
73 printf("float op float:\n");
74 comparisonTestff(1.0f, 2.0f);
75 comparisonTestff(1.0f, 1.0f);
76 comparisonTestff(2.0f, 1.0f);
77 }
78
comparisonTestid(int a,double b)79 void comparisonTestid(int a, double b) {
80 printf("%d op %g: < %d <= %d == %d >= %d > %d != %d\n",
81 a, b, a < b, a <= b, a == b, a >= b, a > b, a != b);
82 }
83
comparisonOpsid()84 void comparisonOpsid() {
85 printf("int op double:\n");
86 comparisonTestid(1, 2.0);
87 comparisonTestid(1, 1.0);
88 comparisonTestid(2, 1.0);
89 }
comparisonTestdi(double a,int b)90 void comparisonTestdi(double a, int b) {
91 printf("%g op %d: < %d <= %d == %d >= %d > %d != %d\n",
92 a, b, a < b, a <= b, a == b, a >= b, a > b, a != b);
93 }
94
comparisonOpsdi()95 void comparisonOpsdi() {
96 printf("double op int:\n");
97 comparisonTestdi(1.0f, 2);
98 comparisonTestdi(1.0f, 1);
99 comparisonTestdi(2.0f, 1);
100 }
101
comparisonOps()102 void comparisonOps() {
103 comparisonOpsdd();
104 comparisonOpsdf();
105 comparisonOpsff();
106 comparisonOpsid();
107 comparisonOpsdi();
108 }
109
branch(double d)110 int branch(double d) {
111 if (d) {
112 return 1;
113 }
114 return 0;
115 }
116
testBranching()117 void testBranching() {
118 printf("branching: %d %d %d\n", branch(-1.0), branch(0.0), branch(1.0));
119 }
120
testpassi(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l)121 void testpassi(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l) {
122 printf("testpassi: %d %d %d %d %d %d %d %d %d %d %d %d\n", a, b, c, d, e, f, g, h, i, j, k, l);
123 }
124
testpassf(float a,float b,float c,float d,float e,float f,float g,float h,float i,float j,float k,float l)125 void testpassf(float a, float b, float c, float d, float e, float f, float g, float h, float i, float j, float k, float l) {
126 printf("testpassf: %g %g %g %g %g %g %g %g %g %g %g %g\n", a, b, c, d, e, f, g, h, i, j, k, l);
127 }
128
testpassd(double a,double b,double c,double d,double e,double f,double g,double h,double i,double j,double k,double l)129 void testpassd(double a, double b, double c, double d, double e, double f, double g, double h, double i, double j, double k, double l) {
130 printf("testpassd: %g %g %g %g %g %g %g %g %g %g %g %g\n", a, b, c, d, e, f, g, h, i, j, k, l);
131 }
132
testpassidf(int i,double d,float f)133 void testpassidf(int i, double d, float f) {
134 printf("testpassidf: %d %g %g\n", i, d, f);
135 }
136
testParameterPassing()137 void testParameterPassing() {
138 float x;
139 testpassi(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
140 testpassf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
141 testpassd(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
142 testpassi(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f);
143 testpassf(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f);
144 testpassd(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f);
145 testpassi(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0);
146 testpassf(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0);
147 testpassd(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0);
148 testpassidf(1, 2.0, 3.0f);
149 }
150
main()151 int main() {
152 unaryOps();
153 binaryOps();
154 comparisonOps();
155 testBranching();
156 testParameterPassing();
157 return 0;
158 }
159