round-off error in std::pow(std::complex<T>, double) in C++11

Paolo Carlini paolo.carlini@oracle.com
Fri Jan 25 15:16:00 GMT 2013


On 01/25/2013 03:03 PM, Jordi Gutiérrez Hermoso wrote:
> error here, that this can reasonably be considered a bug in libstdc++.
I don't have a strong opinion about this issue - whatever Gaby and Marc 
agree to do is fine with me - but I disagree that this is a plain 
libstdc++ bug, because: 1- We are following the letter of the Standard 
in terms of overloads (adding back the C++03 (..., int) overload has 
implications which go beyond performance and accuracy, eg, the return 
type for (float, int) becomes float instead of double, and that can be 
easily detected); 2- We are otherwise simply forwarding to the front-end 
builtins / underlying libc.

In my opinion - but, as I said already, I'm certainly not going to 
insist - real progress while remaining conforming would be either adding 
a more sophisticated set of overloads, in particular preserving the 
return type and in any case conforming or alternately improving the 
front-end code handling the builtins or the underlying libc; or maybe 
even re-open the ISO issue which led to the removal of the overload in 
the first place.

Paolo.



More information about the Libstdc++ mailing list