У меня есть горячие точки в моем коде, где я делаю pow()
, занимая около 10-20% времени выполнения.
Мой вклад в pow(x,y)
очень специфичен, поэтому мне интересно, есть ли способ перевернуть два приближения pow()
(по одному для каждого показателя) с более высокой производительностью:
- У меня есть два константных показателя: 2.4 и 1/2.4.
- Когда показатель экспоненты равен 2,4, x будет находиться в диапазоне (0.090473935, 1.0].
- Когда показатель экспоненты равен 1/2,4, x будет находиться в диапазоне (0.0031308, 1.0).
- Я использую векторы SSE/AVX
float
. Если особенности платформы можно использовать, прямо на!
Максимальная частота ошибок около 0,01% является идеальной, хотя меня также интересуют алгоритмы полной точности (для float
).
Я уже использую быстрое приближение pow()
но оно не учитывает эти ограничения. Можно ли сделать лучше?