Re: [eigen] fix double-promotion in 3.3 Core/SpecialFunctions.h |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
On Thu, 5 May 2016, Christoph Hertzberg wrote:
I (wrongfully) expected pow(x, 2) to be evaluated to x*x, at least if
the exponent is known at compile time and small. That could work, if
pow(float, int) got evaluated to some __builtin_pow function and the
compiler decides depending on the size of the exponent how to evaluate
it.
That is the case. Gcc has __builtin_pow (takes 2 double) and expands it
when the second argument is a small integer (though in this case it
produces (float)((double)x*(double)x)). More relevant builtins are
__builtin_powf (takes 2 floats) and __builtin_powif (takes a float and an
int).
However, writing pow(x,2) should really be avoided...
--
Marc Glisse