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

У меня есть горячие точки в моем коде, где я делаю 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 векторы с плавающей запятой . Если особенности платформы могут быть использованы, то сразу!

Максимальный уровень ошибок около 0,01% является идеальным, хотя меня интересует полная точность (для float ).

Я уже использую быстрое приближение pow () , но оно не работает Эти ограничения следует учитывать. Можно ли сделать лучше?

60
задан Cory Nelson 27 June 2011 в 12:11
поделиться