Select Git revision
-
WooNaYoung authoredWooNaYoung authored
div_perf.c 1.23 KiB
#define TEST_NUM 10000000
#include <stdio.h>
typedef int fx_s2308;
typedef long fixed32;
#define FX_TO_DOUBLE(a) ((double) (a/(256.0)))
#define DOUBLE_TO_FX(a) (((int)(a*(256.0))))
#define FX_DIV(a,b) DOUBLE_TO_FX(FX_TO_DOUBLE(a)/FX_TO_DOUBLE(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))
long long div_sum_double_test()
{
long long sum = 0;
for(int i=1;i<TEST_NUM;i++)
{
sum += FX_DIV(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i));
}
return sum;
}
long long div1_sum_longlong_test()
{
long long sum = 0;
for(int i=1;i<TEST_NUM;i++)
{
sum += FX_S2308_L_DIV1(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i));
}
return sum;
}
long long div2_sum_longlong_test()
{
long long sum = 0;
for(int i=1;i<TEST_NUM;i++)
{
sum += FX_S2308_L_DIV2(DOUBLE_TO_FX(i), DOUBLE_TO_FX(i));
}
return sum;
}
int main()
{
printf("double div - sum : %lld\n", div_sum_double_test());
printf("long long div1 - sum : %lld\n", div1_sum_longlong_test());
printf("long long div2 - sum : %lld\n", div2_sum_longlong_test());
return 0;
}