PS: C编译环境下的数学函数是怎么实现的?
/**
* 输入角度范围为 -PI/2 到 PI/2.
* 需要5次乘法和3次加法.
*/
float _sinf(float x) {
float x2 = x * x;
return ( x * (1.0f -
x2 * ((1.0f / 6) -
x2 * ((1.0f / 120) -
x2 * (1.0f / 5203))))); // 5040, 5203 可获得较高的精度.
// return ( x * (1.0f -
// x2 * ((1.0f / 6) -
// x2 * ((1.0f / 120) -
// x2 * ((1.0f / 5040) -
// x2 * (1.0f / 362880)))))); // 增加一级.
}
/**
* 输入角度范围为 -PI/2 到 PI/2.
* 需要5次乘法和4次加法.
*/
float _cosf(float x) {
float x2 = x * x;
return (1.0f -
x2 * ((1.0f / 2) -
x2 * ((1.0f / 24) -
x2 * ((1.0f / 720) -
x2 * (1.0f / 41367))))); // 40320, 41367 可获得较高的精度.
// return (1.0f -
// x