HI Can anyone help me to implement trigonometric function in lpc2148 ?
Thanks
What "help", exactly, do you need?
Can you just use the standard library functions? If you can't, you need to explain why - otherwise it's impossible to know which alternatives may be appropriate.
Is this for your accelerometer: http://www.keil.com/forum/21787 ?
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); } //*****************************************************/
actually
//*****************************************************/ // Fast arctan2 software implementation //*****************************************************/ //float SW_atan(float q, float i) //{ // float angle, abs_q, r; // // abs_q = fabs(q) + 1e-10; // kludge to prevent 0/0 condition // if (i >= 0) // { // r = (i - abs_q) / (i + abs_q); // angle = 0.1963f * r * r * r - 0.9817f * r + 0.7853982f; // } // else // { // r = (i + abs_q) / (abs_q - i); // angle = 0.1963f * r * r * r - 0.9817f * r + 2.3561945f; // } // if (q < 0) angle *= -1; // // return angle; //} //*****************************************************/