Skip to content
Snippets Groups Projects
Commit 51d7c8f0 authored by LEESANGKYEONG's avatar LEESANGKYEONG
Browse files

Merge branch 'HanJungwoo' into 'master'

Han jungwoo

See merge request !2
parents fdf3209e 81a059c1
Branches
No related tags found
1 merge request!2Han jungwoo
...@@ -21,8 +21,8 @@ ...@@ -21,8 +21,8 @@
#define _FX_DOUBLE 10 #define _FX_DOUBLE 10
#define _FX_LONGLONG 11 #define _FX_LONGLONG 11
#define _FX_SYSTEM _FX_S2308 #define _FX_SYSTEM _FX_S3231
#define _FX_CALCULATION_TYPE _FX_DOUBLE #define _FX_CALCULATION_TYPE _FX_LONGLONG
#if _FX_SYSTEM == _FX_S1516 || _FX_SYSTEM == _FX_S1615 || _FX_SYSTEM == _FX_S2308 #if _FX_SYSTEM == _FX_S1516 || _FX_SYSTEM == _FX_S1615 || _FX_SYSTEM == _FX_S2308
#if _FX_CALCULATION_TYPE == _FX_DOUBLE #if _FX_CALCULATION_TYPE == _FX_DOUBLE
...@@ -38,23 +38,14 @@ ...@@ -38,23 +38,14 @@
#endif #endif
#endif #endif
#if FX_SYSTEM == _FX_S1516
#define tmp 0
#elif FX_SYSTEM == _FX_S1615
#define tmp 1
#elif FX_SYSTEM == _FX_S2308
#define tmp 2
#elif FX_SYSTEM == _FX_S3132
#define tmp 3
#elif FX_SYSTEM == _FX_S3231
#define tmp 4
#elif FX_SYSTEM == _FX_S4716
#define tmp 5
#endif
#if _FX_SYSTEM == _FX_S1516 && _FX_CALCULATION_TYPE == _FX_DOUBLE #if _FX_SYSTEM == _FX_S1516 && _FX_CALCULATION_TYPE == _FX_DOUBLE
#define fx_add(a, b) fx_s1516_double_add(a, b)
#define fx_sub(a, b) fx_s1516_double_sub(a, b)
#define fx_mul(a, b) fx_s1516_double_mul(a, b) #define fx_mul(a, b) fx_s1516_double_mul(a, b)
#define fx_div(a, b) fx_s1516_double_div(a, b) #define fx_div(a, b) fx_s1516_double_div(a, b)
#define fx_sqrt(a) fx_s1516_double_sqrt(a)
#define fx_pow(a, b) fx_s1516_double_pow(a, b)
#define fx_log(a, b) fx_s1516_double_log(a, b)
#endif #endif
#if _FX_SYSTEM == _FX_S1516 && _FX_CALCULATION_TYPE == _FX_LONGLONG #if _FX_SYSTEM == _FX_S1516 && _FX_CALCULATION_TYPE == _FX_LONGLONG
...@@ -64,25 +55,38 @@ ...@@ -64,25 +55,38 @@
#define fx_div1(a, b) fx_s1516_longlong_div0(a, b) #define fx_div1(a, b) fx_s1516_longlong_div0(a, b)
#define fx_div2(a, b) fx_s1516_longlong_div1(a, b) #define fx_div2(a, b) fx_s1516_longlong_div1(a, b)
#define fx_div3(a, b) fx_s1516_longlong_div2(a, b) #define fx_div3(a, b) fx_s1516_longlong_div2(a, b)
#define fx_sin(a) fx_s1516_longlong_sin(a, b)
#define fx_sqrt(a) fx_s1516_longlong_sqrt(a, b)
#endif #endif
#if _FX_SYSTEM == _FX_S1615 && _FX_CALCULATION_TYPE == _FX_DOUBLE #if _FX_SYSTEM == _FX_S1615 && _FX_CALCULATION_TYPE == _FX_DOUBLE
#define fx_add(a, b) fx_s1615_double_add(a, b)
#define fx_sub(a, b) fx_s1615_double_sub(a, b)
#define fx_mul(a, b) fx_s1615_double_mul(a, b) #define fx_mul(a, b) fx_s1615_double_mul(a, b)
#define fx_div(a, b) fx_s1615_double_div(a, b) #define fx_div(a, b) fx_s1615_double_div(a, b)
#define fx_sin(a) sine_fx_s1615_int(a)
#define fx_sqrt(a) sqrt_fx_s1615_int(a)
#define fx_pow(a, b) power_fx_s1615_int(a, b)
#endif #endif
#if _FX_SYSTEM == _FX_S1615 && _FX_CALCULATION_TYPE == _FX_LONGLONG #if _FX_SYSTEM == _FX_S1615 && _FX_CALCULATION_TYPE == _FX_LONGLONG
#define fx_mul1(a, b) fx_s1516_longlong_mul1(a, b) #define fx_mul1(a, b) fx_s1615_longlong_mul1(a, b)
#define fx_mul2(a, b) fx_s1516_longlong_mul2(a, b) #define fx_mul2(a, b) fx_s1615_longlong_mul2(a, b)
#define fx_mul3(a, b) fx_s1516_longlong_mul3(a, b) #define fx_mul3(a, b) fx_s1615_longlong_mul3(a, b)
#define fx_div1(a, b) fx_s1516_longlong_div1(a, b) #define fx_div1(a, b) fx_s1615_longlong_div1(a, b)
#define fx_div2(a, b) fx_s1516_longlong_div2(a, b) #define fx_div2(a, b) fx_s1615_longlong_div2(a, b)
#define fx_div3(a, b) fx_s1516_longlong_div3(a, b) #define fx_div3(a, b) fx_s1615_longlong_div3(a, b)
#define fx_sin(a) sine_fx_s1615_longlong(a)
#endif #endif
#if _FX_SYSTEM == _FX_S2308 && _FX_CALCULATION_TYPE == _FX_DOUBLE #if _FX_SYSTEM == _FX_S2308 && _FX_CALCULATION_TYPE == _FX_DOUBLE
#define fx_add(a, b) fx_s2308_double_add(a, b)
#define fx_sub(a, b) fx_s2308_double_sub(a, b)
#define fx_mul(a, b) fx_s2308_double_mul(a, b) #define fx_mul(a, b) fx_s2308_double_mul(a, b)
#define fx_div(a, b) fx_s2308_double_div(a, b) #define fx_div(a, b) fx_s2308_double_div(a, b)
#define fx_sin(a) fx_s2308_double_sine(a)
#define fx_sqrt(a) fx_s2308_double_sqrt(a)
#define fx_pow(a, b) fx_s2308_double_pow(a, b)
#endif #endif
#if _FX_SYSTEM == _FX_S2308 && _FX_CALCULATION_TYPE == _FX_LONGLONG #if _FX_SYSTEM == _FX_S2308 && _FX_CALCULATION_TYPE == _FX_LONGLONG
...@@ -92,11 +96,18 @@ ...@@ -92,11 +96,18 @@
#define fx_mul4(a, b) fx_s2308_longlong_mul4(a, b) #define fx_mul4(a, b) fx_s2308_longlong_mul4(a, b)
#define fx_div1(a, b) fx_s2308_longlong_div1(a, b) #define fx_div1(a, b) fx_s2308_longlong_div1(a, b)
#define fx_div2(a, b) fx_s2308_longlong_div2(a, b) #define fx_div2(a, b) fx_s2308_longlong_div2(a, b)
#define fx_div3(a, b) a
#define fx_sin(a) fx_s2308_sind(a)
#endif #endif
#if _FX_SYSTEM == _FX_S3132 && _FX_CALCULATION_TYPE == _FX_DOUBLE #if _FX_SYSTEM == _FX_S3132 && _FX_CALCULATION_TYPE == _FX_DOUBLE
#define fx_add(a, b) fx_s3132_double_add(a, b)
#define fx_sub(a, b) fx_s3132_double_sub(a, b)
#define fx_mul(a, b) fx_s3132_double_mul(a, b) #define fx_mul(a, b) fx_s3132_double_mul(a, b)
#define fx_div(a, b) fx_s3132_double_div(a, b) #define fx_div(a, b) fx_s3132_double_div(a, b)
#define fx_sin(a) fx_s3132_double_sine(a)
#define fx_sqrt(a) fx_s3132_double_sqrt(a)
#define fx_pow(a, b) fx_s3132_double_power(a, b)
#endif #endif
#if _FX_SYSTEM == _FX_S3132 && _FX_CALCULATION_TYPE == _FX_LONGLONG #if _FX_SYSTEM == _FX_S3132 && _FX_CALCULATION_TYPE == _FX_LONGLONG
...@@ -106,11 +117,17 @@ ...@@ -106,11 +117,17 @@
#define fx_div1(a, b) fx_s3132_longlong_div1(a, b) #define fx_div1(a, b) fx_s3132_longlong_div1(a, b)
#define fx_div2(a, b) fx_s3132_longlong_div2(a, b) #define fx_div2(a, b) fx_s3132_longlong_div2(a, b)
#define fx_div3(a, b) fx_s3132_longlong_div3(a, b) #define fx_div3(a, b) fx_s3132_longlong_div3(a, b)
#define fx_sin(a) fx32_sind(a)
#endif #endif
#if _FX_SYSTEM == _FX_S3231 && _FX_CALCULATION_TYPE == _FX_DOUBLE #if _FX_SYSTEM == _FX_S3231 && _FX_CALCULATION_TYPE == _FX_DOUBLE
#define fx_add(a, b) fx_s3231_double_add(a, b)
#define fx_sub(a, b) fx_s3231_double_sub(a, b)
#define fx_mul(a, b) fx_s3231_double_mul(a, b) #define fx_mul(a, b) fx_s3231_double_mul(a, b)
#define fx_div(a, b) fx_s3231_double_div(a, b) #define fx_div(a, b) fx_s3231_double_div(a, b)
#define fx_sin(a) fx_3231_double_sin(a)
#define fx_sqrt(a) fx_3231_double_sqrt(a)
#define fx_pow(a, b) fx_3231_double_power(a, b)
#endif #endif
#if _FX_SYSTEM == _FX_S3231 && _FX_CALCULATION_TYPE == _FX_LONGLONG #if _FX_SYSTEM == _FX_S3231 && _FX_CALCULATION_TYPE == _FX_LONGLONG
...@@ -120,11 +137,17 @@ ...@@ -120,11 +137,17 @@
#define fx_div1(a, b) fx_s3231_longlong_div1(a, b) #define fx_div1(a, b) fx_s3231_longlong_div1(a, b)
#define fx_div2(a, b) fx_s3231_longlong_div2(a, b) #define fx_div2(a, b) fx_s3231_longlong_div2(a, b)
#define fx_div3(a, b) fx_s3231_longlong_div3(a, b) #define fx_div3(a, b) fx_s3231_longlong_div3(a, b)
#define fx_sin(a) fx_3231_longlong_sin(a)
#endif #endif
#if _FX_SYSTEM == _FX_S4716 && _FX_CALCULATION_TYPE == _FX_DOUBLE #if _FX_SYSTEM == _FX_S4716 && _FX_CALCULATION_TYPE == _FX_DOUBLE
#define fx_add(a, b) fx_s4716_double_add(a, b)
#define fx_sub(a, b) fx_s4716_double_sub(a, b)
#define fx_mul(a, b) fx_s4716_double_mul(a, b) #define fx_mul(a, b) fx_s4716_double_mul(a, b)
#define fx_div(a, b) fx_s4716_double_div(a, b) #define fx_div(a, b) fx_s4716_double_div(a, b)
#define fx_sqrt(a) fx_s4716_double_sqrt(a)
#define fx_pow(a) fx_s4716_double_pow(a)
#define fx_sin(a) fx_s4716_double_sin(a)
#endif #endif
#if _FX_SYSTEM == _FX_S4716 && _FX_CALCULATION_TYPE == _FX_LONGLONG #if _FX_SYSTEM == _FX_S4716 && _FX_CALCULATION_TYPE == _FX_LONGLONG
...@@ -134,4 +157,9 @@ ...@@ -134,4 +157,9 @@
#define fx_div1(a, b) fx_s4716_longlong_div1(a, b) #define fx_div1(a, b) fx_s4716_longlong_div1(a, b)
#define fx_div2(a, b) fx_s4716_longlong_div2(a, b) #define fx_div2(a, b) fx_s4716_longlong_div2(a, b)
#define fx_div3(a, b) fx_s4716_longlong_div3(a, b) #define fx_div3(a, b) fx_s4716_longlong_div3(a, b)
#define fx_sin(a) a
#endif #endif
// #define fx_log(a, b) a
// #define fx_sin(a) a
// #define fx_sqrt(a, b) a
\ No newline at end of file
// fx_s1516_double.c file // fx_s1516_double.c file
#include "fx_s1516_double.h" #include "fx_s1516_double.h"
fx_s1516 double_to_fx(double a) fx_s1516 double_to_fx_s1516(double a)
{ {
return (int)(((a)*P2_16)); return (int)(((a)*P2_16));
} }
double fx_to_double(fx_s1516 a) double fx_s1516_to_double(fx_s1516 a)
{ {
return ((double)(a) / P2_16); return ((double)(a) / P2_16);
} }
......
...@@ -11,8 +11,8 @@ typedef int fx_s1516; ...@@ -11,8 +11,8 @@ typedef int fx_s1516;
#define fx_s1516_PI M_PI #define fx_s1516_PI M_PI
#define fx_s1516_INVERSE_PI 1 / M_PI #define fx_s1516_INVERSE_PI 1 / M_PI
extern fx_s1516 double_to_fx(double a); extern fx_s1516 double_to_fx_s1516(double a);
extern double fx_to_double(fx_s1516 a); extern double fx_s1516_to_double(fx_s1516 a);
extern double baselog(double a, double base); extern double baselog(double a, double base);
extern double fx_s1516_double_add(double a, double b); extern double fx_s1516_double_add(double a, double b);
extern double fx_s1516_double_sub(double a, double b); extern double fx_s1516_double_sub(double a, double b);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#define FX32_360 0x01680000 #define FX32_360 0x01680000
// sin table // sin table
const fixed32 fx32_SinTable[92] = const fixed32 fx32_SinTable1[92] =
{ {
0, 1143, 2287, 3429, 4571, 5711, 6850, 7986, 9120, 10252, 11380, 12504, 13625, 14742, 15854, 16961, 18064, 19160, 20251, 21336, 22414, 23486, 24550, 25606, 26655, 27696, 28729, 29752, 0, 1143, 2287, 3429, 4571, 5711, 6850, 7986, 9120, 10252, 11380, 12504, 13625, 14742, 15854, 16961, 18064, 19160, 20251, 21336, 22414, 23486, 24550, 25606, 26655, 27696, 28729, 29752,
30767, 31772, 32768, 33753, 34728, 35693, 36647, 37589, 38521, 39440, 40347, 41243, 42125, 42995, 43852, 44695, 45525, 46340, 47142, 47929, 48702, 49460, 50203, 50931, 51643, 52339, 30767, 31772, 32768, 33753, 34728, 35693, 36647, 37589, 38521, 39440, 40347, 41243, 42125, 42995, 43852, 44695, 45525, 46340, 47142, 47929, 48702, 49460, 50203, 50931, 51643, 52339,
...@@ -58,12 +58,12 @@ int sqrt_lut[1025] = ...@@ -58,12 +58,12 @@ int sqrt_lut[1025] =
0x1F563DB7, 0x1F5A531E, 0x1F5E67FD, 0x1F627C54, 0x1F669024, 0x1F6AA36C, 0x1F6EB62D, 0x1F72C866, 0x1F76DA19, 0x1F7AEB45, 0x1F7EFBEB, 0x1F830C0B, 0x1F871BA4, 0x1F8B2AB8, 0x1F8F3946, 0x1F93474E, 0x1F9754D1, 0x1F9B61D0, 0x1F9F6E49, 0x1FA37A3E, 0x1FA785AE, 0x1FAB909A, 0x1FAF9B02, 0x1FB3A4E7, 0x1F563DB7, 0x1F5A531E, 0x1F5E67FD, 0x1F627C54, 0x1F669024, 0x1F6AA36C, 0x1F6EB62D, 0x1F72C866, 0x1F76DA19, 0x1F7AEB45, 0x1F7EFBEB, 0x1F830C0B, 0x1F871BA4, 0x1F8B2AB8, 0x1F8F3946, 0x1F93474E, 0x1F9754D1, 0x1F9B61D0, 0x1F9F6E49, 0x1FA37A3E, 0x1FA785AE, 0x1FAB909A, 0x1FAF9B02, 0x1FB3A4E7,
0x1FB7AE47, 0x1FBBB724, 0x1FBFBF7E, 0x1FC3C755, 0x1FC7CEA9, 0x1FCBD57A, 0x1FCFDBC9, 0x1FD3E196, 0x1FD7E6E0, 0x1FDBEBA9, 0x1FDFEFEF, 0x1FE3F3B5, 0x1FE7F6F9, 0x1FEBF9BC, 0x1FEFFBFD, 0x1FF3FDBF, 0x1FF7FEFF, 0x1FFBFFBF, 0x20000000}; 0x1FB7AE47, 0x1FBBB724, 0x1FBFBF7E, 0x1FC3C755, 0x1FC7CEA9, 0x1FCBD57A, 0x1FCFDBC9, 0x1FD3E196, 0x1FD7E6E0, 0x1FDBEBA9, 0x1FDFEFEF, 0x1FE3F3B5, 0x1FE7F6F9, 0x1FEBF9BC, 0x1FEFFBFD, 0x1FF3FDBF, 0x1FF7FEFF, 0x1FFBFFBF, 0x20000000};
fx_s1516 longlong_to_fx(long long a) fx_s1516 longlong_to_fx_s1516(long long a)
{ {
return (int)(((a)*fP2_16)); return (int)(((a)*fP2_16));
} }
long long fx_to_longlong(fx_s1516 a) long long fx_s1516_to_longlong(fx_s1516 a)
{ {
return (a / 65536); return (a / 65536);
} }
...@@ -155,8 +155,8 @@ fx_s1516 fx_s1516_longlong_sin(fx_s1516 fa) ...@@ -155,8 +155,8 @@ fx_s1516 fx_s1516_longlong_sin(fx_s1516 fa)
if (fa > FX32_90) if (fa > FX32_90)
fa = FX32_180 - fa; fa = FX32_180 - fa;
idx = fa >> 16; idx = fa >> 16;
ret0 = fx32_SinTable[idx]; ret0 = fx32_SinTable1[idx];
diff = fx32_SinTable[idx + 1] - ret0; diff = fx32_SinTable1[idx + 1] - ret0;
return (fixed32)(sign * (ret0 + ((diff * (fa & 0xFFFF)) >> 16))); return (fixed32)(sign * (ret0 + ((diff * (fa & 0xFFFF)) >> 16)));
} }
......
...@@ -10,8 +10,8 @@ typedef int fx_s1516; ...@@ -10,8 +10,8 @@ typedef int fx_s1516;
typedef long fixed32; typedef long fixed32;
typedef long long fixed64; typedef long long fixed64;
extern fx_s1516 longlong_to_fx(long long a); extern fx_s1516 longlong_to_fx_s1516(long long a);
extern long long fx_to_longlong(fx_s1516 a); extern long long fx_s1516_to_longlong(fx_s1516 a);
extern fx_s1516 fx_s1516_longlong_mul0(fx_s1516 a, fx_s1516 b); extern fx_s1516 fx_s1516_longlong_mul0(fx_s1516 a, fx_s1516 b);
extern fx_s1516 fx_s1516_longlong_mul1(fx_s1516 a, fx_s1516 b); extern fx_s1516 fx_s1516_longlong_mul1(fx_s1516 a, fx_s1516 b);
extern fx_s1516 fx_s1516_longlong_mul2(fx_s1516 a, fx_s1516 b); extern fx_s1516 fx_s1516_longlong_mul2(fx_s1516 a, fx_s1516 b);
......
...@@ -7,8 +7,8 @@ typedef int fx_s1615; ...@@ -7,8 +7,8 @@ typedef int fx_s1615;
#define FX_S1615_INT_TO_DOUBLE(a) ((a) / P2_15) // right shift #define FX_S1615_INT_TO_DOUBLE(a) ((a) / P2_15) // right shift
#define FX_S1615_DOUBLE_TO_INT(a) (int)((a)*P2_15) // left shift #define FX_S1615_DOUBLE_TO_INT(a) (int)((a)*P2_15) // left shift
#define FX_S1615_ADD(a, b) ((a) + (b)) #define fx_s1615_double_add(a, b) ((a) + (b))
#define FX_S1615_SUB(a, b) ((a) - (b)) #define fx_s1615_double_sub(a, b) ((a) - (b))
#define fx_s1615_double_mul(a, b) FX_S1615_DOUBLE_TO_INT(FX_S1615_INT_TO_DOUBLE(a) * FX_S1615_INT_TO_DOUBLE(b)) #define fx_s1615_double_mul(a, b) FX_S1615_DOUBLE_TO_INT(FX_S1615_INT_TO_DOUBLE(a) * FX_S1615_INT_TO_DOUBLE(b))
#define fx_s1615_double_div(a, b) FX_S1615_DOUBLE_TO_INT(FX_S1615_INT_TO_DOUBLE(a) / FX_S1615_INT_TO_DOUBLE(b)) #define fx_s1615_double_div(a, b) FX_S1615_DOUBLE_TO_INT(FX_S1615_INT_TO_DOUBLE(a) / FX_S1615_INT_TO_DOUBLE(b))
......
...@@ -5,12 +5,12 @@ typedef int fx_s1615; ...@@ -5,12 +5,12 @@ typedef int fx_s1615;
typedef long long fixed64; typedef long long fixed64;
#define fx_s1516_longlong_mul1(a, b) (fx_s1615)(((fixed64)(a) * (b)) >> 15) #define fx_s1615_longlong_mul1(a, b) (fx_s1615)(((fixed64)(a) * (b)) >> 15)
#define fx_s1516_longlong_mul2(a, b) ((a) * (b)) >> 15 #define fx_s1615_longlong_mul2(a, b) ((a) * (b)) >> 15
#define fx_s1516_longlong_mul3(a, b) ((a >> 8) * (b >> 7)) #define fx_s1615_longlong_mul3(a, b) ((a >> 8) * (b >> 7))
#define fx_s1516_longlong_div1(a, b) (fx_s1615)((fixed64)((a >> 15) / (b >> 15)) << 15) #define fx_s1615_longlong_div1(a, b) (fx_s1615)((fixed64)((a >> 15) / (b >> 15)) << 15)
#define fx_s1516_longlong_div2(a, b) (((a << 5) / (b >> 6)) << 4) #define fx_s1615_longlong_div2(a, b) (((a << 5) / (b >> 6)) << 4)
#define fx_s1516_longlong_div3(a, b) (fx_s1615)(((fixed64)(a) << 15) / (b)) #define fx_s1615_longlong_div3(a, b) (fx_s1615)(((fixed64)(a) << 15) / (b))
extern fx_s1615 sine_fx_s1615_longlong(fx_s1615 angle); extern fx_s1615 sine_fx_s1615_longlong(fx_s1615 angle);
......
...@@ -5,8 +5,8 @@ typedef int fx_s2308; ...@@ -5,8 +5,8 @@ typedef int fx_s2308;
#define FX_TO_INT(a) ((int)(a / (256.0))) #define FX_TO_INT(a) ((int)(a / (256.0)))
#define FX_TO_SHORT(a) ((short)(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) (((int)(a * (256.0))))
#define FX_ADD(a, b) ((a) + (b)) #define fx_s2308_double_add(a, b) ((a) + (b))
#define FX_SUB(a, b) ((a) - (b)) #define fx_s2308_double_sub(a, b) ((a) - (b))
#define fx_s2308_double_mul(a, b) DOUBLE_TO_FX(FX_TO_DOUBLE(a) * FX_TO_DOUBLE(b)) #define fx_s2308_double_mul(a, b) DOUBLE_TO_FX(FX_TO_DOUBLE(a) * FX_TO_DOUBLE(b))
#define fx_s2308_double_div(a, b) DOUBLE_TO_FX(FX_TO_DOUBLE(a) / FX_TO_DOUBLE(b)) #define fx_s2308_double_div(a, b) DOUBLE_TO_FX(FX_TO_DOUBLE(a) / FX_TO_DOUBLE(b))
#define PI 3.141592 #define PI 3.141592
......
...@@ -4,14 +4,14 @@ ...@@ -4,14 +4,14 @@
#define PI 3.141592653 #define PI 3.141592653
#define fx_to_double(a) (a / P2_2to32) #define fx_to_double(a) (a / P2_2to32)
#define double_to_fx(a) (long long)(a * P2_2to32) #define double_to_fx(a) (long long)(a * P2_2to32)
#define fx_add(a, b) ((a) + (b)) #define fx_s3132_double_add(a, b) ((a) + (b))
#define fx_sub(a, b) ((a) - (b)) #define fx_s3132_double_sub(a, b) ((a) - (b))
#define fx_s3132_double_mul(a, b) double_to_fx(fx_to_double(a) * fx_to_double(b)) #define fx_s3132_double_mul(a, b) double_to_fx(fx_to_double(a) * fx_to_double(b))
#define fx_s3132_double_div(a, b) (double)a *(double)b / P2_2to32 #define fx_s3132_double_div1(a, b) (double)a *(double)b / P2_2to32
#define fx_div(a, b) double_to_fx(fx_to_double(a) / fx_to_double(b)) #define fx_s3132_double_div(a, b) double_to_fx(fx_to_double(a) / fx_to_double(b))
#define fx_sin(a) double_to_fx(sin(fx_to_double(a))) #define fx_s3132_double_sine(a) double_to_fx(sin(fx_to_double(a)))
#define fx_sqrt(a) double_to_fx(sqrt(fx_to_double(a))) #define fx_s3132_double_sqrt(a) double_to_fx(sqrt(fx_to_double(a)))
#define fx_power(a, b) double_to_fx(pow(fx_to_double(a), fx_to_double(b))) #define fx_s3132_double_power(a, b) double_to_fx(pow(fx_to_double(a), fx_to_double(b)))
#define fx_log10(a) double_to_fx(log10(fx_to_double(a))) #define fx_log10(a) double_to_fx(log10(fx_to_double(a)))
#define fx_ln(a) double_to_fx(log(fx_to_double(a))) #define fx_ln(a) double_to_fx(log(fx_to_double(a)))
#define fx_PI() (double_to_fx(PI)) #define fx_PI() (double_to_fx(PI))
......
...@@ -10,6 +10,6 @@ typedef long long fx_s3231; ...@@ -10,6 +10,6 @@ typedef long long fx_s3231;
#define fx_3231_double_mul(a, b) (doubleToFx(fxToDouble(a) * fxToDouble(b))) #define fx_3231_double_mul(a, b) (doubleToFx(fxToDouble(a) * fxToDouble(b)))
#define fx_3231_double_div(a, b) (doubleToFx(fxToDouble(a) / fxToDouble(b))) #define fx_3231_double_div(a, b) (doubleToFx(fxToDouble(a) / fxToDouble(b)))
extern long long fx_3231_double_sin(); extern long long fx_3231_double_sin(fx_s3231 a);
extern long long fx_3231_double_sqrt(); extern long long fx_3231_double_sqrt(fx_s3231 a);
extern long long fx_3231_double_power(); extern long long fx_3231_double_power(fx_s3231 a, fx_s3231 b);
#define fx_3231_longlong_mul1(a, b) (((a) * (b)) >> 31) #define fx_s3231_longlong_mul1(a, b) (((a) * (b)) >> 31)
#define fx_3231_longlong_mul2(a, b) (((a >> 8) * (b >> 8)) >> 15) #define fx_s3231_longlong_mul2(a, b) (((a >> 8) * (b >> 8)) >> 15)
#define fx_3231_longlong_mul3(a, b) ((a >> 16) * (b >> 15)) #define fx_s3231_longlong_mul3(a, b) ((a >> 16) * (b >> 15))
#define fx_3231_longlong_div1(a, b) (((a << 8) / (b >> 8)) << 15) #define fx_s3231_longlong_div1(a, b) (((a << 8) / (b >> 8)) << 15)
#define fx_3231_longlong_div2(a, b) (((a << 10) / (b >> 10)) << 11) #define fx_s3231_longlong_div2(a, b) (((a << 10) / (b >> 10)) << 11)
#define fx_3231_longlong_div3(a, b) ((a << 16) / (b >> 15)) #define fx_s3231_longlong_div3(a, b) ((a << 16) / (b >> 15))
extern long long fx_3231_longlong_sin(); extern long long fx_3231_longlong_sin(fx_s3231 a);
...@@ -10,16 +10,16 @@ fx_s4716 double_to_fx(double a) ...@@ -10,16 +10,16 @@ fx_s4716 double_to_fx(double a)
fx_s4716 d2f = DOUBLE_TO_FX(a); fx_s4716 d2f = DOUBLE_TO_FX(a);
return d2f; return d2f;
} }
double fx_add(double a, double b) // double fx_add(double a, double b)
{ // {
fx_s4716 add = double_to_fx(FX_S4716_DOUBLE_ADD(a, b)); // fx_s4716 add = double_to_fx(FX_S4716_DOUBLE_ADD(a, b));
return fx_to_double(add); // return fx_to_double(add);
} // }
double fx_sub(double a, double b) // double fx_sub(double a, double b)
{ // {
fx_s4716 sub = double_to_fx(FX_S4716_DOUBLE_SUB(a, b)); // fx_s4716 sub = double_to_fx(FX_S4716_DOUBLE_SUB(a, b));
return fx_to_double(sub); // return fx_to_double(sub);
} // }
// double fx_s4716_double_mul(double a, double b) // double fx_s4716_double_mul(double a, double b)
// { // {
// double mul = FX_S4716_DOUBLE_MUL(a, b); // double mul = FX_S4716_DOUBLE_MUL(a, b);
...@@ -38,18 +38,18 @@ double fx_inv_pi() ...@@ -38,18 +38,18 @@ double fx_inv_pi()
{ {
return fx_to_double(FX_INV_PI); return fx_to_double(FX_INV_PI);
} }
double fx_sqrt(double a) // double fx_sqrt(double a)
{ // {
double square = FX_S4716_DOUBLE_SQRT(a); // double square = FX_S4716_DOUBLE_SQRT(a);
return square; // return square;
} // }
double fx_pow(double a) // double fx_pow(double a)
{ // {
double power = fx_to_double(FX_S4716_DOUBLE_POW(a)); // double power = fx_to_double(FX_S4716_DOUBLE_POW(a));
return power; // return power;
} // }
double fx_sine(fx_s4716 a) // double fx_sine(fx_s4716 a)
{ // {
double sine = double_to_fx(FX_S4716_DOUBLE_SINE(a)); // double sine = double_to_fx(FX_S4716_DOUBLE_SINE(a));
return fx_to_double(sine); // return fx_to_double(sine);
} // }
...@@ -10,13 +10,13 @@ typedef long long fx_s4716; ...@@ -10,13 +10,13 @@ typedef long long fx_s4716;
#define FX_TO_DOUBLE(a) (a) / (F_POWER_2_16) #define FX_TO_DOUBLE(a) (a) / (F_POWER_2_16)
#define DOUBLE_TO_FX(a) ((a) * (F_POWER_2_16)) #define DOUBLE_TO_FX(a) ((a) * (F_POWER_2_16))
#define FX_S4716_DOUBLE_ADD(a, b) ((a) + (b)) #define fx_s4716_double_add(a, b) ((a) + (b))
#define FX_S4716_DOUBLE_SUB(a, b) ((a) - (b)) #define fx_s4716_double_sub(a, b) ((a) - (b))
#define fx_s4716_double_mul(a, b) (DOUBLE_TO_FX((FX_TO_DOUBLE(a)) * (FX_TO_DOUBLE(b)))) #define fx_s4716_double_mul(a, b) (DOUBLE_TO_FX((FX_TO_DOUBLE(a)) * (FX_TO_DOUBLE(b))))
#define fx_s4716_double_div(a, b) (DOUBLE_TO_FX((FX_TO_DOUBLE(a)) / (FX_TO_DOUBLE(b)))) #define fx_s4716_double_div(a, b) (DOUBLE_TO_FX((FX_TO_DOUBLE(a)) / (FX_TO_DOUBLE(b))))
#define FX_PI (DOUBLE_TO_FX(M_PI)) #define FX_PI (DOUBLE_TO_FX(M_PI))
#define FX_INV_PI (DOUBLE_TO_FX(1 / (M_PI))) #define FX_INV_PI (DOUBLE_TO_FX(1 / (M_PI)))
#define FX_S4716_DOUBLE_SQRT(a) ((sqrt(DOUBLE_TO_FX(a))) / (F_POWER_2_8)) #define fx_s4716_double_sqrt(a) ((sqrt(DOUBLE_TO_FX(a))) / (F_POWER_2_8))
#define FX_S4716_DOUBLE_POW(a) ((pow(DOUBLE_TO_FX(a), 2.0)) / (F_POWER_2_16)) #define fx_s4716_double_pow(a) ((pow(DOUBLE_TO_FX(a), 2.0)) / (F_POWER_2_16))
#define FX_S4716_DOUBLE_SINE(a) (sin(a)) #define fx_s4716_double_sin(a) (sin(a))
typedef long long fx_s4716; typedef long long fx_s4716;
#include <math.h> #include <math.h>
#define fx_s4716_longlong_mul1(a, b)(a, b) (((a) * (b)) >> 16) #define fx_s4716_longlong_mul1(a, b) (((a) * (b)) >> 16)
#define fx_s4716_longlong_mul2(a, b)(a, b) ((a >> 8) * (b >> 8)) #define fx_s4716_longlong_mul2(a, b) ((a >> 8) * (b >> 8))
#define fx_s4716_longlong_mul3(a, b)(a, b) (((a >> 4) * (b >> 4)) >> 8) #define fx_s4716_longlong_mul3(a, b) (((a >> 4) * (b >> 4)) >> 8)
#define fx_s4716_longlong_div1(a, b)(a, b) ((a << 16) / (b)) #define fx_s4716_longlong_div1(a, b) ((a << 16) / (b))
#define fx_s4716_longlong_div2(a, b) (((a << 8) / (b)) << 8) #define fx_s4716_longlong_div2(a, b) (((a << 8) / (b)) << 8)
#define fx_s4716_longlong_div3(a, b) (((a << 12) / (b)) << 4) #define fx_s4716_longlong_div3(a, b) (((a << 12) / (b)) << 4)
#include <stdio.h> #include <stdio.h>
#include "combination.h" #include "combination.h"
int tmp;
#if _FX_SYSTEM == 1
tmp = 0;
#elif _FX_SYSTEM == 2
tmp = 1;
#elif _FX_SYSTEM == 3
tmp = 2;
#elif _FX_SYSTEM == 4
tmp = 3;
#elif _FX_SYSTEM == 5
tmp = 4;
#elif _FX_SYSTEM == 6
tmp = 5;
#endif
int main(){ int main(){
int a; int a;
char* str; char* str;
if(fx_type == 0){ if(tmp==0) str = "fx_1516";
printf("1. Mul 2.Div\n"); else if(tmp==1) str = "fx_1615";
else if(tmp==2) str = "fx_2308";
else if(tmp==3) str = "fx_3132";
else if(tmp==4) str = "fx_3231";
else if(tmp==5) str = "fx_4716";
printf("\n=====%s fixed point=====\n", str);
if(fx_type == 0 && tmp == 0){
printf("1.Add 2.Sub 3.Mul 4.Div 5.Sqrt 6.Power 7.Log\n");
fflush(stdout); fflush(stdout);
scanf("%d", &a); scanf("%d", &a);
...@@ -19,16 +45,120 @@ int main(){ ...@@ -19,16 +45,120 @@ int main(){
if(a==1){ if(a==1){
printf("\n=====Result=====\n"); printf("\n=====Result=====\n");
printf("Result: %d\n", fx_mul(num1, num2)); printf("Add: %d\n", fx_add(num1, num2));
} }
if(a==2){ if(a==2){
printf("\n=====Result=====\n"); printf("\n=====Result=====\n");
printf("Result: %d\n", fx_div(num1, num2)); printf("Sub: %d\n", fx_sub(num1, num2));
}
if(a==3){
printf("\n=====Result=====\n");
printf("Mul: %d\n", fx_mul(num1, num2));
}
if(a==4){
printf("\n=====Result=====\n");
printf("Div: %d\n", fx_div(num1, num2));
}
if(a==5){
printf("\n=====Result=====\n");
printf("Sqrt: %d\n", fx_sqrt(num1));
}
if(a==6){
printf("\n=====Result=====\n");
printf("Pow: %d\n", fx_pow(num1, num2));
} }
// if(a==7){
// printf("\n=====Result=====\n");
// printf("Log: %d\n", fx_log(num1, num2));
// }
} }
else if(fx_type == 1){ else if(fx_type == 0 && tmp == 1){
printf("1. Mul 2.Div\n"); printf("1.Add 2.Sub 3.Mul 4.Div 5.Sin 6.Sqrt 7.Power\n");
fflush(stdout);
scanf("%d", &a);
int num1, num2;
printf("Input 2 numbers : \n");
fflush(stdout);
scanf("%d", &num1);
scanf("%d", &num2);
if(a==1){
printf("\n=====Result=====\n");
printf("Add: %d\n", fx_add(num1, num2));
}
if(a==2){
printf("\n=====Result=====\n");
printf("Sub: %d\n", fx_sub(num1, num2));
}
if(a==3){
printf("\n=====Result=====\n");
printf("Mul: %d\n", fx_mul(num1, num2));
}
if(a==4){
printf("\n=====Result=====\n");
printf("Div: %d\n", fx_div(num1, num2));
}
if(a==5){
printf("\n=====Result=====\n");
printf("Sin: %d\n", fx_sin(num1));
}
if(a==6){
printf("\n=====Result=====\n");
printf("Sqrt: %d\n", fx_sqrt(num1));
}
if(a==7){
printf("\n=====Result=====\n");
printf("Pow: %d\n", fx_pow(num1, num2));
}
}
else if(fx_type == 0 && tmp == 2){
printf("1.Add 2.Sub 3.Mul 4.Div 5.Sin 6.Sqrt 7.Power\n");
fflush(stdout);
scanf("%d", &a);
int num1, num2;
printf("Input 2 numbers : \n");
fflush(stdout);
scanf("%d", &num1);
scanf("%d", &num2);
if(a==1){
printf("\n=====Result=====\n");
printf("Add: %d\n", fx_add(num1, num2));
}
if(a==2){
printf("\n=====Result=====\n");
printf("Sub: %d\n", fx_sub(num1, num2));
}
if(a==3){
printf("\n=====Result=====\n");
printf("Mul: %d\n", fx_mul(num1, num2));
}
if(a==4){
printf("\n=====Result=====\n");
printf("Div: %d\n", fx_div(num1, num2));
}
if(a==5){
printf("\n=====Result=====\n");
printf("Sin: %d\n", fx_sin(num1));
}
if(a==6){
printf("\n=====Result=====\n");
printf("Sqrt: %d\n", fx_sqrt(num1));
}
if(a==7){
printf("\n=====Result=====\n");
printf("Pow: %d\n", fx_pow(num1, num2));
}
}
else if(fx_type == 1 && tmp == 0){
printf("1. Mul 2.Div 3.Sin 4.Sqrt\n");
fflush(stdout); fflush(stdout);
scanf("%d", &a); scanf("%d", &a);
...@@ -45,16 +175,84 @@ int main(){ ...@@ -45,16 +175,84 @@ int main(){
printf("MUL2: %d\n", fx_mul2(num1, num2)); printf("MUL2: %d\n", fx_mul2(num1, num2));
printf("MUL3: %d\n", fx_mul3(num1, num2)); printf("MUL3: %d\n", fx_mul3(num1, num2));
} }
if(a==2){ else if(a==2){
printf("\n=====Result=====\n");
printf("Div1: %d\n", fx_div1(num1, num2));
printf("Div2: %d\n", fx_div2(num1, num2));
printf("Div3: %d\n", fx_div3(num1, num2));
}
else if(a==3){
printf("\n=====Result=====\n");
printf("Sin: %d\n", fx_sin(num1));
}
// else if(a==4){
// printf("\n=====Result=====\n");
// printf("Sqrt: %d\n", fx_sqrt(num1));
// }
}
else if(fx_type == 1 && tmp == 1){
printf("1. Mul 2.Div 3.Sin\n");
fflush(stdout);
scanf("%d", &a);
int num1, num2;
printf("Input 2 numbers : \n");
fflush(stdout);
scanf("%d", &num1);
scanf("%d", &num2);
if(a==1){
printf("\n=====Result=====\n"); printf("\n=====Result=====\n");
printf("MUL1: %d\n", fx_mul1(num1, num2)); printf("MUL1: %d\n", fx_mul1(num1, num2));
printf("MUL2: %d\n", fx_mul2(num1, num2)); printf("MUL2: %d\n", fx_mul2(num1, num2));
printf("MUL3: %d\n", fx_mul3(num1, num2)); printf("MUL3: %d\n", fx_mul3(num1, num2));
} }
else if(a==2){
printf("\n=====Result=====\n");
printf("Div1: %d\n", fx_div1(num1, num2));
printf("Div2: %d\n", fx_div2(num1, num2));
printf("Div3: %d\n", fx_div3(num1, num2));
}
else if(a==3){
printf("\n=====Result=====\n");
printf("Sin: %d\n", fx_sin(num1));
}
} }
if(fx_type == 2){ else if(fx_type == 1 && tmp == 2){
printf("1. Mul 2.Div\n"); printf("1. Mul 2.Div 3.Sin 4.Sqrt\n");
fflush(stdout);
scanf("%d", &a);
int num1, num2;
printf("Input 2 numbers : \n");
fflush(stdout);
scanf("%d", &num1);
scanf("%d", &num2);
if(a==1){
printf("\n=====Result=====\n");
printf("MUL1: %d\n", fx_mul1(num1, num2));
printf("MUL2: %d\n", fx_mul2(num1, num2));
printf("MUL3: %d\n", fx_mul3(num1, num2));
//printf("MUL4: %d\n", fx_mul4(num1, num2));
}
else if(a==2){
printf("\n=====Result=====\n");
printf("Div1: %d\n", fx_div1(num1, num2));
printf("Div2: %d\n", fx_div2(num1, num2));
}
else if(a==3){
printf("\n=====Result=====\n");
printf("Sin: %d\n", fx_sin(num1));
}
}
else if(fx_type == 2 && tmp == 3){
printf("1.Add 2.Sub 3.Mul 4.Div 5.Sin 6.Sqrt 7.Power\n");
fflush(stdout); fflush(stdout);
scanf("%d", &a); scanf("%d", &a);
...@@ -62,21 +260,83 @@ int main(){ ...@@ -62,21 +260,83 @@ int main(){
printf("Input 2 numbers : \n"); printf("Input 2 numbers : \n");
fflush(stdout); fflush(stdout);
scanf("%ld", &num1); scanf("%d", &num1);
scanf("%ld", &num2); scanf("%d", &num2);
if(a==1){ if(a==1){
printf("\n=====Result=====\n"); printf("\n=====Result=====\n");
printf("Result: %ld\n", fx_mul(num1, num2)); printf("Add: %lld\n", fx_add(num1, num2));
} }
if(a==2){ if(a==2){
printf("\n=====Result=====\n"); printf("\n=====Result=====\n");
printf("Result: %ld\n", fx_div(num1, num2)); printf("Sub: %lld\n", fx_sub(num1, num2));
}
if(a==3){
printf("\n=====Result=====\n");
printf("Mul: %lld\n", fx_mul(num1, num2));
}
if(a==4){
printf("\n=====Result=====\n");
printf("Div: %lld\n", fx_div(num1, num2));
}
if(a==5){
printf("\n=====Result=====\n");
printf("Sin: %lld\n", fx_sin(num1));
}
if(a==6){
printf("\n=====Result=====\n");
printf("Sqrt: %lld\n", fx_sqrt(num1));
}
if(a==7){
printf("\n=====Result=====\n");
printf("Pow: %lld\n", fx_pow(num1, num2));
} }
} }
else if(fx_type==3){ else if(fx_type == 2 && tmp == 4){
printf("1. Mul 2.Div\n"); printf("1.Add 2.Sub 3.Mul 4.Div 5.Sin 6.Sqrt 7.Power\n");
fflush(stdout);
scanf("%d", &a);
long long num1, num2;
printf("Input 2 numbers : \n");
fflush(stdout);
scanf("%d", &num1);
scanf("%d", &num2);
if(a==1){
printf("\n=====Result=====\n");
printf("Add: %lld\n", fx_add(num1, num2));
}
if(a==2){
printf("\n=====Result=====\n");
printf("Sub: %lld\n", fx_sub(num1, num2));
}
if(a==3){
printf("\n=====Result=====\n");
printf("Mul: %lld\n", fx_mul(num1, num2));
}
if(a==4){
printf("\n=====Result=====\n");
printf("Div: %lld\n", fx_div(num1, num2));
}
if(a==5){
printf("\n=====Result=====\n");
printf("Sin: %lld\n", fx_sin(num1));
}
if(a==6){
printf("\n=====Result=====\n");
printf("Sqrt: %lld\n", fx_sqrt(num1));
}
if(a==7){
printf("\n=====Result=====\n");
printf("Pow: %lld\n", fx_pow(num1, num2));
}
}
else if(fx_type == 2 && tmp == 5){
printf("1.Add 2.Sub 3.Mul 4.Div 5.Sqrt 6.Power 7.Sin\n");
fflush(stdout); fflush(stdout);
scanf("%d", &a); scanf("%d", &a);
...@@ -84,20 +344,122 @@ int main(){ ...@@ -84,20 +344,122 @@ int main(){
printf("Input 2 numbers : \n"); printf("Input 2 numbers : \n");
fflush(stdout); fflush(stdout);
scanf("%ld", &num1); scanf("%lld", &num1);
scanf("%ld", &num2); scanf("%lld", &num2);
if(a==1){ if(a==1){
printf("\n=====Result=====\n"); printf("\n=====Result=====\n");
printf("MUL1: %ld\n", fx_mul1(num1, num2)); printf("Add: %lld\n", fx_add(num1, num2));
printf("MUL2: %ld\n", fx_mul2(num1, num2));
printf("MUL3: %ld\n", fx_mul3(num1, num2));
} }
if(a==2){ if(a==2){
printf("\n=====Result=====\n"); printf("\n=====Result=====\n");
printf("MUL1: %ld\n", fx_mul1(num1, num2)); printf("Sub: %lld\n", fx_sub(num1, num2));
printf("MUL2: %ld\n", fx_mul2(num1, num2)); }
printf("MUL3: %ld\n", fx_mul3(num1, num2)); if(a==3){
printf("\n=====Result=====\n");
printf("Mul: %lld\n", fx_mul(num1, num2));
}
if(a==4){
printf("\n=====Result=====\n");
printf("Div: %lld\n", fx_div(num1, num2));
}
if(a==5){
printf("\n=====Result=====\n");
printf("Sqrt: %lld\n", fx_sqrt(num1));
}
if(a==6){
printf("\n=====Result=====\n");
printf("Pow: %lld\n", fx_pow(num1, num2));
}
if(a==7){
printf("\n=====Result=====\n");
printf("Sin: %lld\n", fx_sin(num1));
}
}
else if(fx_type == 3 && tmp == 3){
printf("1. Mul 2.Div 3.Sin\n");
fflush(stdout);
scanf("%d", &a);
long long num1, num2;
printf("Input 2 numbers : \n");
fflush(stdout);
scanf("%lld", &num1);
scanf("%lld", &num2);
if(a==1){
printf("\n=====Result=====\n");
printf("MUL1: %lld\n", fx_mul1(num1, num2));
printf("MUL2: %lld\n", fx_mul2(num1, num2));
printf("MUL3: %lld\n", fx_mul3(num1, num2));
}
else if(a==2){
printf("\n=====Result=====\n");
printf("Div1: %lld\n", fx_div1(num1, num2));
printf("Div2: %lld\n", fx_div2(num1, num2));
printf("Div3: %lld\n", fx_div3(num1, num2));
}
else if(a==3){
printf("\n=====Result=====\n");
printf("Sin: %lld\n", fx_sin(num1));
}
}
else if(fx_type == 3 && tmp == 4){
printf("1. Mul 2.Div 3.Sin\n");
fflush(stdout);
scanf("%d", &a);
long long num1, num2;
printf("Input 2 numbers : \n");
fflush(stdout);
scanf("%lld", &num1);
scanf("%lld", &num2);
if(a==1){
printf("\n=====Result=====\n");
printf("MUL1: %lld\n", fx_mul1(num1, num2));
printf("MUL2: %lld\n", fx_mul2(num1, num2));
printf("MUL3: %lld\n", fx_mul3(num1, num2));
}
else if(a==2){
printf("\n=====Result=====\n");
printf("Div1: %lld\n", fx_div1(num1, num2));
printf("Div2: %lld\n", fx_div2(num1, num2));
printf("Div3: %lld\n", fx_div3(num1, num2));
}
else if(a==3){
printf("\n=====Result=====\n");
printf("Sin: %lld\n", fx_sin(num1));
}
}
else if(fx_type == 3 && tmp == 5){
printf("1. Mul 2.Div\n");
fflush(stdout);
scanf("%d", &a);
long long num1, num2;
printf("Input 2 numbers : \n");
fflush(stdout);
scanf("%lld", &num1);
scanf("%lld", &num2);
if(a==1){
printf("\n=====Result=====\n");
printf("MUL1: %lld\n", fx_mul1(num1, num2));
printf("MUL2: %lld\n", fx_mul2(num1, num2));
printf("MUL3: %lld\n", fx_mul3(num1, num2));
}
else if(a==2){
printf("\n=====Result=====\n");
printf("Div1: %lld\n", fx_div1(num1, num2));
printf("Div2: %lld\n", fx_div2(num1, num2));
printf("Div3: %lld\n", fx_div3(num1, num2));
} }
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment