diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..de74700bc749ec2a39100bd2943c7039e84f237c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.out +*.o diff --git a/.gitignores b/.gitignores new file mode 100644 index 0000000000000000000000000000000000000000..de74700bc749ec2a39100bd2943c7039e84f237c --- /dev/null +++ b/.gitignores @@ -0,0 +1,2 @@ +*.out +*.o diff --git a/a.out b/a.out index 3eb90320f3e858f4ef44298b106b3bb4f6159aba..7773056280c215274a39b767b51689bd94a7ac56 100755 Binary files a/a.out and b/a.out differ diff --git a/result.out b/result.out new file mode 100644 index 0000000000000000000000000000000000000000..c7e2c4762824f4505461adfde95ce21dc4ad3172 Binary files /dev/null and b/result.out differ diff --git a/test.c b/test.c index 0c387088ec2fb563a53cb79fa85ce7ebc827df57..dbfec7b9835a93608e89a377ca1052453e7faf18 100644 --- a/test.c +++ b/test.c @@ -1,17 +1,48 @@ #include <stdio.h> -#include <math.h> -// #### #### #### #### #### #### #### #### +// #### #### #### #### . #### #### #### #### // S 15 . 16 #define FX_Q_NUM 16 -#define FX_2_MINUS_16 1.52587890625e-05 +#define FX_2_MINUS_16 1.52587890625e-05F +#define FX_2_PLUS_16 (1<<16) +#define FX_S_15_16 11516 +#define FX_SYSTEM FX_S_15_16 + +typedef int fixed32; + +fixed32 fromFloat(float fa) +{ + return (fixed32) (fa * FX_2_PLUS_16); +} + +float toFloat(fixed32 xa) +{ + return ((float) (xa)) * FX_2_MINUS_16; +} + +fixed32 fxAdd(fixed32 a, fixed32 b) +{ + return fromFloat(toFloat(a)+toFloat(b)); +} + + +fixed32 fxAdd2(fixed32 a, fixed32 b) +{ + return a+b; +} int main() { - int ia; + int i = 0; + int ia, ib, ic, ic2; float fa; - fscanf(stdin, "%d", &ia); - fprintf(stdout, "%d : %f %f \n", ia, (float) ia, (float) ia * powf(2.0f, -16)); - - fscanf(stdin, "%f", &fa); - fprintf(stdout, "%f : %d %d \n", fa, (int) fa, (int) (fa * powf(2.0f, 16))); + // fscanf(stdin, "%d %d", &ia, &ib); + for (i = 0; i < 5000000; i++){ + ic = fxAdd(i, i); + ic2 = fxAdd2(i, i); + fprintf(stdout, "%f + %f : %f, %f diff = %d \n", toFloat(i), toFloat(i), toFloat(ic), toFloat(ic2), ic-ic2); + } + + // fprintf(stdout, "%d + %d : %d \n", ia, ib, ic); + // fprintf(stdout, "%f + %f : %f \n", toFloat(ia), toFloat(ib), toFloat(ic)); + // fprintf(stdout, "%d + %d : %d \n", ia, ib, ic); }