diff --git a/fx_s2308_double.c b/fx_s2308_double.c index d5f5b475b96a9b21c7808488f4fd355b2b691135..e757dafeee14403b3c70b3aa7aa62b2a71f4f816 100644 --- a/fx_s2308_double.c +++ b/fx_s2308_double.c @@ -1,19 +1,18 @@ #include "fx_s2308_double.h" #include <math.h> -#define PI 3.1415926535897 #define TO_RADIAN(a) (a*(PI/180)) -fx_s2308 fx_sine(fx_s2308 a){ +fx_s2308 fx_s2308_double_sine(fx_s2308 a){ double f_a=FX_TO_DOUBLE(a); f_a=TO_RADIAN(f_a); return DOUBLE_TO_FX(sin(f_a)); } -fx_s2308 fx_sqrt(fx_s2308 a){ +fx_s2308 fx_s2308_double_sqrt(fx_s2308 a){ double f_a=FX_TO_DOUBLE(a); return DOUBLE_TO_FX(sqrt(f_a)); } -fx_s2308 fx_pow(fx_s2308 a, double n){ +fx_s2308 fx_s2308_double_pow(fx_s2308 a, double n){ double f_a=FX_TO_DOUBLE(a); return DOUBLE_TO_FX(pow(f_a,n)); } diff --git a/fx_s2308_double.h b/fx_s2308_double.h index 237238460d3ebad233e829d25f6e9a9ded98637a..175a54098f480f7f07e9233398b6f94839f5cf49 100644 --- a/fx_s2308_double.h +++ b/fx_s2308_double.h @@ -4,15 +4,16 @@ typedef double fx_s2308; #define FX_TO_FLOAT(a) ((float) (a/(256.0))) #define FX_TO_INT(a) ((int) (a/(256.0))) #define FX_TO_SHORT(a) ((short) (a/(256.0))) -#define DOUBLE_TO_FX(a) (((int)(a*(256.0)))) +#define DOUBLE_TO_FX(a) (((double)(a*(256.0)))) #define FX_ADD(a,b) ((a)+(b)) #define FX_SUB(a,b) ((a)-(b)) #define FX_MUL(a,b) DOUBLE_TO_FX(FX_TO_DOUBLE(a)*FX_TO_DOUBLE(b)) #define FX_DIV(a,b) DOUBLE_TO_FX(FX_TO_DOUBLE(a)/FX_TO_DOUBLE(b)) #define PI 3.141592 -#define FX_PI (INT_TO_FX(PI)) +#define FX_PI (DOUBLE_TO_FX(PI)) +#define FX_INV_PI (DOUBLE_TO_FX(1/PI)) -fx_s2308 fx_sine(fx_s2308 a); -fx_s2308 fx_sqrt(fx_s2308 a); -fx_s2308 fx_pow(fx_s2308 a, double n); +fx_s2308 fx_s2308_double_sine(fx_s2308 a); +fx_s2308 fx_s2308_double_sqrt(fx_s2308 a); +fx_s2308 fx_s2308_double_pow(fx_s2308 a, double n); \ No newline at end of file diff --git a/test.c b/test.c index 8fdf999aa16921aeec9159edc557021cb1fa73a6..04b053c8372dde4e2f69aa62c1c44ad7da1b9e04 100644 --- a/test.c +++ b/test.c @@ -7,25 +7,45 @@ int main() { fx_s2308 output = FX_MUL(a, b); printf("%lf\n",output); - printf("===sine test===\n"); + printf("\n===Calculation: Addition===\n"); + printf("%f + %f = %f\n",a,b,FX_ADD(a,b)); + printf("\n===Calculation: Subtraction===\n"); + printf("%f - %lf = %f\n",a,b,FX_SUB(a,b)); + printf("\n===Calculation: Multiplication===\n"); + printf("%f * %lf = %f\n",a,b,FX_MUL(a,b)); + printf("\n===Calculation: Division===\n"); + printf("%f / %lf = %f\n",a,b,FX_DIV(a,b)); + + printf("\n===Function: Sine===\n"); double a1=30.0; fx_s2308 f_a1=DOUBLE_TO_FX(a1); - fx_s2308 sine_a1=fx_sine(f_a1); - printf("%lf %lf %lf\n",a1,f_a1,FX_TO_DOUBLE(sine_a1)); + fx_s2308 sine_a1=fx_s2308_double_sine(f_a1); + printf("sine(%lf)의 fx_2308 값: %lf, Double로 변환: %lf\n",a1,f_a1,FX_TO_DOUBLE(sine_a1)); - printf("===sqrt test===\n"); + printf("\n===Function: Sqrt===\n"); double a2=100.0; fx_s2308 f_a2=DOUBLE_TO_FX(a2); - fx_s2308 sqrt_a2=fx_sqrt(f_a2); - printf("%lf %lf %lf\n",a2,f_a2,FX_TO_DOUBLE(sqrt_a2)); - - printf("===power test===\n"); + fx_s2308 sqrt_a2=fx_s2308_double_sqrt(f_a2); + printf("sqrt(%lf)의 fx_2308 값: %lf, Double로 변환: %lf\n",a2,f_a2,FX_TO_DOUBLE(sqrt_a2)); + printf("\n===Function: Power===\n"); double a3=64.0; fx_s2308 f_a3=DOUBLE_TO_FX(a3); - fx_s2308 pow_a3=fx_pow(f_a3,2.0); - printf("%lf %lf %lf\n",a3,f_a3,FX_TO_DOUBLE(pow_a3)); - + fx_s2308 pow_a3=fx_s2308_double_pow(f_a3,2.0); + printf("%lf의 2.0 제곱의 fx_2308 값: %lf, Double로 변환: %lf\n",a3,f_a3,FX_TO_DOUBLE(pow_a3)); + + printf("\n===Conversion: fx to double===\n"); + printf("fx_s2308 %lf is changed into double %lf\n", a, FX_TO_DOUBLE(a)); + printf("\n===Conversion: fx to float===\n"); + printf("fx_s2308 %lf is changed into float %f\n", a, FX_TO_FLOAT(a)); + printf("\n===Conversion: fx to int===\n"); + printf("fx_s2308 %lf is changed into double %d\n", a, FX_TO_INT(a)); + printf("\n===Conversion: fx to short===\n"); + printf("fx_s2308 %lf is changed into double %d\n", a, FX_TO_SHORT(a)); + printf("\n===Constant: PI===\n"); + printf("PI의 fx_2308 값: %lf\n",FX_PI); + printf("\n===Constant: Inverse PI===\n"); + printf("1/PI의 fx_2308 값: %lf\n",FX_INV_PI); return 0; }