Skip to content
Snippets Groups Projects
Select Git revision
  • 5b1c3f51931fd179c12be2ba2978c76e7ba2b86f
  • master default protected
  • test
  • function
4 results

div_perf.c

Blame
  • 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;
    }