Оптимизации для pow () с const нецелым показателем?


у меня есть горячие точки в моем коде, где я делаю 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()приближение, но он не учитывает эти ограничения. Можно ли это сделать лучше?

10 57

10 ответов: