小编典典

快速Arc Cos算法?

algorithm

我有自己的非常快速的cos函数:

float sine(float x)
{
    const float B = 4/pi;
    const float C = -4/(pi*pi);

    float y = B * x + C * x * abs(x);

    //  const float Q = 0.775;
    const float P = 0.225;

    y = P * (y * abs(y) - y) + y;   // Q * y + P * y * abs(y)


    return y;
}

float cosine(float x)
{
    return sine(x + (pi / 2));
}

但是现在,当我进行概要分析时,我看到acos()正在杀死处理器。我不需要很高的精度。什么是计算acos(x)的快速方法谢谢。


阅读 407

收藏
2020-07-28

共1个答案

小编典典

一个简单的三次近似,x∈{-1,-½,0,½,1}的拉格朗日多项式为:

double acos(x) {
   return (-0.69813170079773212 * x * x - 0.87266462599716477) * x + 1.5707963267948966;
}

它的最大误差约为0.18弧度。

2020-07-28