code for implementing trigonometric calculation

HI Can anyone help me to implement trigonometric function in lpc2148 ?

Thanks

Parents
  • from the link, do you mean arctan, then

    
    //*****************************************************/
    // Fast arctan2
    //*****************************************************/
    float CHC_atan(float q, float i)
    {
        float angle, abs_q, r, extra;
    
        abs_q = fabs(q);
        if (i >= 0)
        {
            r = CHC_iMoreThan(abs_q, i);
            extra = 0.7853982f;
        }
        else
        {
            r = CHC_iLessThan(abs_q, i);
            extra = 2.3561945f;
        }
        angle = CHC_fast_atan_calc(r) + extra;
        if (q < 0) angle *= -1;
    
        return angle;
    }
    //-----------------------------------------------------
    
    //-----------------------------------------------------
    // allocated in hardware
    static inline float CHC_iMoreThan(float abs_q, float i)
    {
            return ((i - abs_q) / (i + abs_q));
    }
    //-----------------------------------------------------
    
    //-----------------------------------------------------
    // allocated in hardware
    static inline float CHC_iLessThan(float abs_q, float i)
    {
            return ((i + abs_q) / (abs_q - i));
    }
    //-----------------------------------------------------
    
    //-----------------------------------------------------
    // allocated in hardware
    static inline float CHC_fast_atan_calc(float r)
    {
            return (0.1963f * r * r * r - 0.9817f * r);
    }
    //*****************************************************/
    
    

Reply
  • from the link, do you mean arctan, then

    
    //*****************************************************/
    // Fast arctan2
    //*****************************************************/
    float CHC_atan(float q, float i)
    {
        float angle, abs_q, r, extra;
    
        abs_q = fabs(q);
        if (i >= 0)
        {
            r = CHC_iMoreThan(abs_q, i);
            extra = 0.7853982f;
        }
        else
        {
            r = CHC_iLessThan(abs_q, i);
            extra = 2.3561945f;
        }
        angle = CHC_fast_atan_calc(r) + extra;
        if (q < 0) angle *= -1;
    
        return angle;
    }
    //-----------------------------------------------------
    
    //-----------------------------------------------------
    // allocated in hardware
    static inline float CHC_iMoreThan(float abs_q, float i)
    {
            return ((i - abs_q) / (i + abs_q));
    }
    //-----------------------------------------------------
    
    //-----------------------------------------------------
    // allocated in hardware
    static inline float CHC_iLessThan(float abs_q, float i)
    {
            return ((i + abs_q) / (abs_q - i));
    }
    //-----------------------------------------------------
    
    //-----------------------------------------------------
    // allocated in hardware
    static inline float CHC_fast_atan_calc(float r)
    {
            return (0.1963f * r * r * r - 0.9817f * r);
    }
    //*****************************************************/
    
    

Children
More questions in this forum