Перегруженная функция float pow(float base, int iexp )
была удалена в С++ 11, и теперь pow
возвращает a double
. В моей программе я вычисляю много таких (в одной точности), и меня интересует наиболее эффективный способ его выполнения.
Есть ли какая-либо специальная функция (в стандартных библиотеках или любой другой) с указанной сигнатурой?
Если нет, лучше ли (с точки зрения производительности в одинарной точности) явно приводить результат pow
в float
перед любыми другими операциями (которые будут отдавать все остальное в double
) или лить iexp
в float
и использовать перегруженную функцию float pow(float base, float exp)
?
EDIT: зачем мне нужно float
и не использовать double
?
В первую очередь это ОЗУ - мне нужны десятки или сотни ГБ, поэтому это сокращение является огромным преимуществом. Поэтому мне нужно от float
получить float
. И теперь мне нужен самый эффективный способ добиться этого (меньше прикладов, используйте уже оптимизирующие алгоритмы и т.д.).