std::norm improvement

Marc Glisse marc.glisse@normalesup.org
Wed Mar 4 10:21:00 GMT 2009


On Wed, 4 Mar 2009, Andrew Pinski wrote:

> " Still, I think
> gcc is pointlessly (is that an English word?) decreasing performance
> if ffast-math is not on (it's not on even with -O3).
> "
>
> No it is not, this is the problem here. That is from the thread you
> wrote in.  You did not test every single input to figure out if your
> implementation is better or worse.  I think it might be best if you
> tested every input include NaNs and infs.  That is where some problems
> come into play also I think.
>
> Remember that a NaN input should result in a NaN result.

For NaN, it is probably enough to call min(x,y) and max(y,x) in his code 
in order to be sure that at least one is still a NaN (unless you want 
norm(NaN,Inf) to be +Inf, but the current implementation doesn't do it 
either, and I am not sure it is even legal).

For infs, the current implementation (when there is no C99 complex 
function) uses a inf/inf division and should thus return a NaN whereas we 
would expect a +Inf. (an implementation that uses 1 instead of (max/max)^2 
would get this right except when both the real and imaginary parts are 
infinite, as does his implementation I believe)

The case that seems to have justified the current implementation (and his 
seems to be doing ok there) instead of the trivial one is when x^2 and y^2 
are both small enough to be computed as 0 but their sum is not.

-- 
Marc Glisse



More information about the Libstdc++ mailing list