Войти
ПрограммированиеФорумОбщее

Быстрые и точные тригонометрические функции (6 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4 5 6
#75
10:06, 15 фев. 2013

RPE
> А случайно нет еще функции синуса
Для Sin:
0.9999997192673006 x - 0.1666657564532464 x^3 +
0.008332803647181511 x^5 - 0.00019830197237204295 x^7 +
2.7444305061093514*10^-6 x^9 - 2.442176561869478*10^-8 x^11 +
1.407555708887347*10^-10 x^13 - 4.240664814288337*10^-13 x^15


#76
12:35, 15 фев. 2013

RPE
по моему там есть пдфка где описаны ряды.

#77
1:16, 19 фев. 2013

RPE
Примеры полином и графики погрешностей Примеры

#78
10:05, 19 фев. 2013

asvp

А ты не пробовал делать первое приближение при помощи нескольких итераций CORDIC, а потом уточнять рядами?

#79
11:28, 19 фев. 2013

Ghost2
> А ты не пробовал делать первое приближение при помощи нескольких итераций
> CORDIC, а потом уточнять рядами?
Нет не пробовал. Смысл? Ведь нужно не точно, а быстро получить достаточно точные значения.

#80
5:51, 20 фев. 2013

asvp

> Ведь нужно не точно, а быстро получить достаточно точные значения.
У тебя показатель степени раза в три может стать меньше. Правда придется применять всякую int2float магию.
А вообще так в ПЛИС делают именно для уменьшения латентности. Я сам не делал - меня устраивал простой CORDIC.

#81
9:01, 20 фев. 2013

Ghost2
> меня устраивал простой CORDIC
Меня не устраивает:
1. CORDIC - это итерационный метод сведения прямых вычислений сложных функций к выполнению простых операций сложения и сдвига.
Цикл сожрет всё.
2. В данном методе нужно держать таблицу коэффициентов.
3. Для этого метода применяется операция сдвига, что не работают с форматом вещественных чисел.

Да и суть этого метода одна и та же.


Добавление:
Не нравится не применяй. В чём проблема?

#82
11:44, 20 фев. 2013

Пацаны, два вопроса к вам:
1. Какие-то особые int2float и float2int приёмчики сейчас актуальны или нынешние компиляторы и простое приведение как надо заоптимизируют? Если актуальны и вы пользуетесь, поделитесь.
2. Есть ли что-то быстрее стандартных sinf/cosf с такой же или с меньшей точностью?

#83
14:39, 20 фев. 2013

asvp

> Меня не устраивает:
У тебя и не ПЛИС.

> Цикл сожрет всё.
Циклы разворачиваются, туда-же идет таблица. Смотри свой код )

> Для этого метода применяется операция сдвига, что не работают с форматом вещественных чисел.
Деление на два в плавающей точке? Это элементарно.

> Не нравится не применяй. В чём проблема?
Болит где-то? Проблем нет, я просто спросил.

#84
15:18, 20 фев. 2013

jabberx
> 1. Какие-то особые int2float и float2int приёмчики сейчас актуальны или
> нынешние компиляторы и простое приведение как надо заоптимизируют? Если
> актуальны и вы пользуетесь, поделитесь.
Не актуально (для ПК). Преобразование в 2 машинные команды (загрузка в FPU/выгрузка из FPU).

> Есть ли что-то быстрее стандартных sinf/cosf с такой же или с меньшей точностью?
А здесь что думаешь обсуждается?

#85
15:33, 20 фев. 2013

>А здесь что думаешь обсуждается?
Как мне показалось, здесь обсуждается что-то сверхточное, чего не дают стандартные функции, при этом очевидно более медленное чем эти стандартные функции, но достаточно быстрое для практического применения. В первом посте темы функции - с кучей умножений, 64битный результат. А меня интересует простая формула дающая обычную или даже уменьшенную точность для float32 ну и более высокую скорость.

Вот одна из моих попыток, считает от 0 до pi:

inline float my_cos(float x)
{
    x -= 1.57079632f;
    return -0.865f*x+x*x*x*0.095959f;
}

#86
15:43, 20 фев. 2013

jabberx
> Как мне показалось, здесь обсуждается что-то сверхточное, чего не дают стандартные функции, при этом очевидно более медленное чем эти стандартные
> функции, но достаточно быстрое для практического применения.
Тебе кажется. Здесь обсуждается:
1. Неточные , чем стандартные функции.
2. Более быстрые, чем стандартные функции.
jabberx
В посте №77 есть ссылка на файл с примерами. Там разные полиномы. Есть примеры и для float32. Точность можно понизить хоть до +-0.5.

Страницы: 1 2 3 4 5 6
ПрограммированиеФорумОбщее

Тема в архиве.