Внедрение FAST / приближение головы () функционирует в C/C++

Я ищу быстрое внедрение или хороший приближение функций, обеспеченных cmath.

Я должен ускорить следующие функции

  1. pow(x,y)
  2. exp(z*pow(x,y))

где z<0. x от (-1.0 1.0) и y от (0.0, 5.0)

9
задан zoli2k 27 February 2010 в 11:47
поделиться

3 ответа

Вот несколько приближений:

Если приведенное выше приближение для pow недостаточно хорошо, вы все равно можете попробовать заменить его экспоненциальными функциями, в зависимости от вашей машины и компилятора это может быть быстрее:

  1. x ^ y = e ^ (y * ln ( x))
  2. И результат: e ^ (z * x ^ y) = e ^ (z * e ^ (y * ln (x)))

Еще одна уловка - когда некоторые параметры формулы не меняют часто. Итак, если, например, x и y в основном постоянны, вы можете предварительно вычислить x ^ y и использовать его повторно.

6
ответ дан 4 December 2019 в 20:23
поделиться

Я рекомендую подпрограммы из книги «Math Toolkit for Real-Time Programming» Джека В. Креншоу.

Вы также можете опубликовать часть своего кода, чтобы показать, как вы вызываете эти функции, поскольку могут быть некоторые другие возможности оптимизации более высокого уровня, которые не очевидны из приведенного описания.

1
ответ дан 4 December 2019 в 20:23
поделиться

Каковы возможные значения x и y? Если они находятся в разумных пределах, может помочь создание некоторых таблиц поиска.

4
ответ дан 4 December 2019 в 20:23
поделиться
Другие вопросы по тегам:

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