diff --git a/fx_s2308_longlong.h b/fx_s2308_longlong.h index e8ad94b259d314b9fabfa857610deca8d7c46e01..cce6b747b79afdcccfedaec865c296d47210576f 100644 --- a/fx_s2308_longlong.h +++ b/fx_s2308_longlong.h @@ -2,13 +2,13 @@ #define FX32_180 0x0000B400 #define FX32_360 0x00016800 -#define fx_2308_l_mul(a,b) (int)(((long long)(a)*(b)) >> 8) -#define fx_2308_l_mul2(a,b) (int)(((long long)(a>>4)*(b>>4))) -#define fx_2308_l_mul3(a,b) (int)(((a)*(b)) >> 8) -#define fx_2308_l_mul4(a,b) (int)(((a>>4)*(b>>4))) +#define fx_s2308_l_mul(a,b) (int)(((long long)(a)*(b)) >> 8) +#define fx_s2308_l_mul2(a,b) (int)(((long long)(a>>4)*(b>>4))) +#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 (int)((long long)(a)/(b)) -#define fx_s2308_l_div2 (int)((a<<8)/(b)) +#define fx_s2308_l_div1(a,b) (int)((long long)(a)/(b)) +#define fx_s2308_l_div2(a,b) (int)((a<<8)/(b)) typedef int fx_s2308; typedef long fixed32; diff --git a/ptest.c b/ptest.c new file mode 100644 index 0000000000000000000000000000000000000000..7c84223c9bc2437d222a4478008e3b4d694d5f01 --- /dev/null +++ b/ptest.c @@ -0,0 +1,81 @@ +#include "fx_s2308_double.h" +#include "fx_s2308_longlong.h" +#include <stdio.h> +#define MAX_NUM 1000000 + + + +long long double_mul_test(){ + long long temp = 0; + for(int i = 1; i < MAX_NUM; i++){ + temp += FX_MUL(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + return temp; +} + +long long longlong_mul_1_test(){ + long long temp = 0; + for(int i = 1; i < MAX_NUM; i++){ + temp += fx_s2308_l_mul(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + return temp; +} + + +long long longlong_mul_2_test(){ + long long temp = 0; + for(int i = 1; i < MAX_NUM; i++){ + temp += fx_s2308_l_mul2(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + return temp; +} + +long long longlong_mul_3_test(){ + long long temp = 0; + for(int i = 1; i < MAX_NUM; i++){ + temp += fx_s2308_l_mul3(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + return temp; +} + +long long longlong_mul_4_test(){ + long long temp = 0; + for(int i = 1; i < MAX_NUM; i++){ + temp += fx_s2308_l_mul4(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + return temp; +} + +long long double_div_test(){ + long long temp = 0; + for(int i = 1; i < MAX_NUM; i++){ + temp += FX_MUL(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + return temp; +} + +long long longlong_div_1_test(){ + long long temp = 0; + for(int i = 1; i < MAX_NUM; i++){ + temp += fx_s2308_l_div1(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + return temp; +} + +long long longlong_div_2_test(){ + long long temp = 0; + for(int i = 1; i < MAX_NUM; i++){ + temp += fx_s2308_l_div2(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i)); + } + return temp; +} + +int main(){ + + + printf("%lld %lld %lld %lld %lld\n", double_mul_test(), longlong_mul_1_test(), longlong_mul_2_test(), longlong_mul_3_test(), longlong_mul_4_test()); + + printf("%lld %lld %lld\n", double_div_test(), longlong_div_1_test(), longlong_div_2_test()); + + return 0; +} \ No newline at end of file