Small toom43 cleanup
Torbjorn Granlund
tg at gmplib.org
Tue Oct 20 21:47:14 CEST 2009
bodrato at mail.dm.unipi.it writes:
Ciao!
> Marco, Torbjörn, does this look ok?
Perfect.
But I have a question:
> +mpn_toom43_mul_itch (mp_size_t an, mp_size_t bn)
> +{
> + mp_size_t n = 1 + (3 * an >= 4 * bn ? (an - 1) >> 2 : (bn - 1) /
> (unsigned long) 3);
> +static inline mp_size_t
> mpn_toom53_mul_itch (mp_size_t an, mp_size_t bn)
> {
> mp_size_t n = 1 + (3 * an >= 5 * bn ? (an - 1) / (size_t) 5 : (bn - 1)
> / (size_t) 3);
You cast the divisor in toom43_itch to (unsigned long); toom53_itch cast
divisors do (size_t). It my last code I used a cast to (mp_size_t)...
The question is, do we really need a cast for a single digit?
It is an efficiency thing.
mp_size_t is a signed type, for various reasons. size_t is an unsigned
type. Unsigned division by constants is a few cycles faster.
Casting to "unsigned long" is not correct, it is not always large
enough. But size_t is safe.
--
Torbjörn
More information about the gmp-devel
mailing list