Учитывая double x
, известно, что более эффективно использовать x*x
вместо pow(x,2)
.Представьте для простоты, что мы должны вычислить квадратный корень из x
: поскольку это унарная операция, для этого у нас есть sqrt(x)
.Теперь также повышение x
до второй степени - унарная операция, но у нас нет ничего похожего (насколько я знаю) pow2(x)
.
Я реализовал свой собственный pow2
как:
inline double pow2(double a){return a*a;}
, который должен быть еще лучше, чем pow(a,2)
, но он основан на не * унарном операторе *
.Как реализовать подлинную унарную реализацию pow2
?Будет ли это наиболее эффективным способом получения второй степени double
?
ПРИМЕЧАНИЕ. Мне известно о том факте, что каждая действительная сила положительного действительного числа является унарной операцией и что это чепуха дляопределить бесконечное число pow2
, pow3
, pow3.14
... с практической точки зрения я очень доволен pow(double, double)
.