• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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