177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// Test floating point operations. 277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid unaryOps() { 477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao // Unary ops 577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("-%g = %g\n", 1.1, -1.1); 677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("!%g = %d\n", 1.2, !1.2); 777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("!%g = %d\n", 0.0, !0.0); 877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid binaryOps() { 1177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("double op double:\n"); 1277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g + %g = %g\n", 1.0, 2.0, 1.0 + 2.0); 1377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g - %g = %g\n", 1.0, 2.0, 1.0 - 2.0); 1477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g * %g = %g\n", 1.0, 2.0, 1.0 * 2.0); 1577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g / %g = %g\n", 1.0, 2.0, 1.0 / 2.0); 1677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("float op float:\n"); 1877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g + %g = %g\n", 1.0f, 2.0f, 1.0f + 2.0f); 1977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g - %g = %g\n", 1.0f, 2.0f, 1.0f - 2.0f); 2077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g * %g = %g\n", 1.0f, 2.0f, 1.0f * 2.0f); 2177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g / %g = %g\n", 1.0f, 2.0f, 1.0f / 2.0f); 2277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("double op float:\n"); 2477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g + %g = %g\n", 1.0, 2.0f, 1.0 + 2.0f); 2577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g - %g = %g\n", 1.0, 2.0f, 1.0 - 2.0f); 2677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g * %g = %g\n", 1.0, 2.0f, 1.0 * 2.0f); 2777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g / %g = %g\n", 1.0, 2.0f, 1.0 / 2.0f); 2877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("double op int:\n"); 3077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g + %d = %g\n", 1.0, 2, 1.0 + 2); 3177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g - %d = %g\n", 1.0, 2, 1.0 - 2); 3277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g * %d = %g\n", 1.0, 2, 1.0 * 2); 3377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g / %d = %g\n", 1.0, 2, 1.0 / 2); 3477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 3577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("int op double:\n"); 3677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%d + %g = %g\n", 1, 2.0, 1 + 2.0); 3777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%d - %g = %g\n", 1, 2.0, 1 - 2.0); 3877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%d * %g = %g\n", 1, 2.0, 1 * 2.0); 3977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%d / %g = %g\n", 1, 2.0, 1 / 2.0); 4077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 4177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 4277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonTestdd(double a, double b) { 4377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g op %g: < %d <= %d == %d >= %d > %d != %d\n", 4477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao a, b, a < b, a <= b, a == b, a >= b, a > b, a != b); 4577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 4677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 4777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonOpsdd() { 4877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("double op double:\n"); 4977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestdd(1.0, 2.0); 5077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestdd(1.0, 1.0); 5177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestdd(2.0, 1.0); 5277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 5377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 5477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 5577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonTestdf(double a, float b) { 5677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g op %g: < %d <= %d == %d >= %d > %d != %d\n", 5777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao a, b, a < b, a <= b, a == b, a >= b, a > b, a != b); 5877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 5977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 6077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonOpsdf() { 6177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("double op float:\n"); 6277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestdf(1.0, 2.0f); 6377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestdf(1.0, 1.0f); 6477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestdf(2.0, 1.0f); 6577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 6677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 6777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonTestff(float a, float b) { 6877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g op %g: < %d <= %d == %d >= %d > %d != %d\n", 6977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao a, b, a < b, a <= b, a == b, a >= b, a > b, a != b); 7077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 7177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 7277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonOpsff() { 7377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("float op float:\n"); 7477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestff(1.0f, 2.0f); 7577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestff(1.0f, 1.0f); 7677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestff(2.0f, 1.0f); 7777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 7877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 7977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonTestid(int a, double b) { 8077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%d op %g: < %d <= %d == %d >= %d > %d != %d\n", 8177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao a, b, a < b, a <= b, a == b, a >= b, a > b, a != b); 8277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 8377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 8477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonOpsid() { 8577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("int op double:\n"); 8677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestid(1, 2.0); 8777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestid(1, 1.0); 8877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestid(2, 1.0); 8977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 9077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonTestdi(double a, int b) { 9177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("%g op %d: < %d <= %d == %d >= %d > %d != %d\n", 9277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao a, b, a < b, a <= b, a == b, a >= b, a > b, a != b); 9377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 9477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 9577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonOpsdi() { 9677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("double op int:\n"); 9777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestdi(1.0f, 2); 9877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestdi(1.0f, 1); 9977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonTestdi(2.0f, 1); 10077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 10177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 10277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid comparisonOps() { 10377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonOpsdd(); 10477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonOpsdf(); 10577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonOpsff(); 10677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonOpsid(); 10777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonOpsdi(); 10877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 10977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 11077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoint branch(double d) { 11177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (d) { 11277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 11377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao } 11477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 0; 11577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 11677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 11777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid testBranching() { 11877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("branching: %d %d %d\n", branch(-1.0), branch(0.0), branch(1.0)); 11977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 12077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 12177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid 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) { 12277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 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); 12377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 12477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 12577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid 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) { 12677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 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); 12777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 12877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 12977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid 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) { 13077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 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); 13177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 13277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 13377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid testpassidf(int i, double d, float f) { 13477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("testpassidf: %d %g %g\n", i, d, f); 13577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 13677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 13777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid testParameterPassing() { 13877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao float x; 13977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao testpassi(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); 14077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao testpassf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); 14177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao testpassd(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); 14277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 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); 14377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 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); 14477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 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); 14577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 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); 14677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 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); 14777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 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); 14877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao testpassidf(1, 2.0, 3.0f); 14977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 15077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 15177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoint main() { 15277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao unaryOps(); 15377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao binaryOps(); 15477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao comparisonOps(); 15577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao testBranching(); 15677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao testParameterPassing(); 15777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 0; 15877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 159