Быстрая Дуга алгоритм 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) Спасибо.

22
задан jmasterx 4 April 2016 в 20:44
поделиться

2 ответа

Простая кубическая аппроксимация, полином Лагранжа для x ∈ {-1, -½, 0, ½, 1}, такова:

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

Она имеет максимальную ошибку около 0,18 рад.

39
ответ дан 29 November 2019 в 03:19
поделиться

Есть свободная память? Справочная таблица (с интерполяцией, если требуется) будет самой быстрой.

22
ответ дан 29 November 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: