[patch] std::experimental::gcd and std::experimental::lcd
Marc Glisse
marc.glisse@inria.fr
Sat May 2 17:07:00 GMT 2015
On Sat, 2 May 2015, Jonathan Wakely wrote:
> On 02/05/15 18:27 +0200, Marc Glisse wrote:
>> On Sat, 2 May 2015, Jonathan Wakely wrote:
>>
>>> These where simple to implement (almost too simple ... I probably
>>> got something wrong!)
>>
>> I didn't remember that std::abs works for unsigned. It will need more work
>> for performance, but that can certainly be done later (I didn't look at the
>> code beyond checking what you meant by "simple").
>
> std::abs seems to work fine for unsigned, the overload in <cmath> for
> integral types just uses __builtin_fabs.
That's bad! You don't want to go through floating point, that cannot even
represent int64_t accurately.
> Maybe it would be better for
> gcd() to just use that directly instead of including <cmath> (as
> attached, which also removes the qualification on the call to gcd
> because the functions only work for integral types which have no
> associated namespaces anyway).
Actually you use __builtin_abs (no 'f') in the patch, which apparently
casts to int, that's even worse...
> <ratio> was added to libstdc++ in 2008 so I think the constexpr
> support was not good enough at the time.
Yes, but we modified a few pieces with Paolo in 2011, and those could have
used constexpr I guess.
--
Marc Glisse
More information about the Libstdc++
mailing list