11706 vs ([lno] Canonical iv creation)

Richard Guenther rguenth@tat.physik.uni-tuebingen.de
Sat Mar 13 14:31:00 GMT 2004


Roger Sayle wrote:
> On Sat, 13 Mar 2004, Richard Guenther wrote:
> 
>>>Really interesting issue...
>>>
>>>Anyway, from a practical point of view I'm not really worried, since:
>>>
>>>1- Glibc uses internally the very same algorithm, at least on x86 (just
>>>   checked).
>>>
>>>2- Which requires O(log n) multiplications and is discussed by Knuth in
>>>   Sec. 4.6.3 of the second volume. You can find it almost *everywhere*,
>>>   for instance also in SGI's power.
>>
>>So there is no point in not optimizing ::pow(x, 4) without -ffast-math?
> 
> There is a potential accuracy problem, which is why GCC doesn't inline
> ::pow(x,4) without -ffast-math.

[snip]

> Whether libstdc++-v3 can be more pragmatic than GCC about system library
> accuracy, and even whether -ffast-math is a reasonable default for the
> compiler (as its is with several commercial compilers), are larger
> arguments.  I doubt anyone would practically use a method more accurate
> than two multiplications to implement pow(x,4).  So I agree with Paolo's
> disclaimer "from a practical point of view I'm not really worried.." :>
> 
> I hope this helps,

I'm aware of the rouding problems and am not worried about these.  But I 
am worried about having ::pow() and std::pow() produce different results 
for same arguments.  So the question is, does the standard say anything 
about this?  Also, as ::pow() with -ffast-math optimizes better than 
std::pow() for constant exponent, the question is again why we don't use 
::pow() for std::pow() ... which would also be faster in compilation speed.

We might even use SIMD operations (if available) to speed up -ffast-math 
::pow()?

Thanks for the explanations,

Richard.



More information about the Libstdc++ mailing list