diff --git a/fx_s2308_longlong.h b/fx_s2308_longlong.h index 39ae85a41a61653aea72286a3ce4ea17bb112f92..0a10dcbc6aae357af90c8ae794d855f8e7931150 100644 --- a/fx_s2308_longlong.h +++ b/fx_s2308_longlong.h @@ -7,7 +7,7 @@ #define fx_s2308_l_mul3(a,b) (int)(((a)*(b)) >> 8) #define fx_s2308_l_mul4(a,b) (int)(((a>>4)*(b>>4))) -#define fx_s2308_l_div1(a,b) (int)((long long)(a)/(b)) +#define fx_s2308_l_div1(a,b) (int)(((long long)(a)/(b))<<8) #define fx_s2308_l_div2(a,b) (int)((a<<8)/(b)) typedef int fx_s2308; diff --git a/test.c b/test.c index 7c48c39ff74f0553e08b719cdaeab8ad4068c730..5a2477a5c5a698143a57facc9115eb092cceff17 100644 --- a/test.c +++ b/test.c @@ -37,11 +37,11 @@ int main() { printf("\n======STEP 2: fx_s2308 long long Test=======\n"); printf("Please enter two double: "); - getchar(); + // getchar(); double da; double db; scanf("%lf %lf", &da, &db); - + fx_s2308 fa,fb,fc; fa=DOUBLE_TO_FX(da); @@ -59,12 +59,17 @@ int main() { printf("\n\t====== Division =======\n"); fc=fx_s2308_l_div1(fa,fb); - printf("\n\t\tdiv1: Exact answer = %f func result = %f, error = %f\n",da/db, FX_TO_DOUBLE(fc), da/db-FX_TO_DOUBLE(fc)); + printf("\n\tdiv1: Exact answer = %f func result = %f, error = %f\n",da/db, FX_TO_DOUBLE(fc), da/db-FX_TO_DOUBLE(fc)); fc=fx_s2308_l_div2(fa,fb); printf("\n\tdiv2: Exact answer = %f func result = %f, error = %f\n",da/db, FX_TO_DOUBLE(fc), da/db-FX_TO_DOUBLE(fc)); printf("\n\t====== Sine =======\n"); - printf("\n\t fx_s2308 long long sine 30 = %lf", FX_TO_DOUBLE(fx_s2308_sind(DOUBLE_TO_FX(30)))); + printf("\n\t fx_s2308 long long sine 30 = %lf\n", FX_TO_DOUBLE(fx_s2308_sind(DOUBLE_TO_FX(30)))); + printf("\n\t fx_s2308 long long sine -30 = %lf\n", FX_TO_DOUBLE(fx_s2308_sind(DOUBLE_TO_FX(-30)))); + printf("\n\t fx_s2308 long long sine 190 = %lf\n", FX_TO_DOUBLE(fx_s2308_sind(DOUBLE_TO_FX(210)))); + + +