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

fx_s2308_longlong.c

Blame
  • fx_s2308_longlong.c 1020 B
    #include "fx_s2308_longlong.h"
    
    typedef int fx_s2308 ;
    
    const fx_s2308 fx_s2308_SinTable[92] =  
        {     
            0,4,8,13,17,22,26,31,35,40,
            44,48,53,57,61,66,70,74,79,83,
            87,91,95,100,104,108,112,116,120,124,
            128,131,135,139,143,146,150,154,157,161,
            164,167,171,174,177,181,184,187,190,193,
            196,198,201,204,207,209,212,214,217,219,
            221,223,226,228,230,232,233,235,237,238,
            240,242,243,244,246,247,248,249,250,251,
            252,252,253,254,254,255,255,255,255,255,256,255
        };
    
    
    fx_s2308 fx_s2308_sind(fx_s2308 fa)
    {
        int sign = 1;   
        fixed32 ret0, diff;
        int idx; 
        if ( fa < 0 ) 
        {
            sign = -1;
            fa *= -1; 
        }
        fa = fa % FX32_360; 
        if ( fa >= FX32_180 ) 
        {
            sign *= -1;
            fa -= FX32_180;
        }
        if ( fa > FX32_90 ) 
            fa = FX32_180 - fa;
        idx = fa>>8; 
        ret0 = fx_s2308_SinTable[idx]; 
        diff = fx_s2308_SinTable[idx+1]-ret0;
        return ( sign *( ret0 + ((diff*(fa&0x00FF))>>8))); 
    }