remove extra division in mpq/aors.c
Marc Glisse
marc.glisse at inria.fr
Sun Feb 20 23:07:50 CET 2011
On Sun, 20 Feb 2011, Torbjorn Granlund wrote:
> I have attached a patch to modernise a related function. Does it look
> correct to you?
It looks correct (I was confused by the interface of the bdiv_dbm1
function but it makes sense).
If the gcd is 7, it looks like it lets tdiv copy the number into the
result and then performs the division by 7 in place. Is that wanted? I
guess I would have replaced:
mpz_tdiv_q_2exp (q, a, twos);
with:
if(twos>0){
mpz_tdiv_q_2exp (q, a, twos);
a=q;
}
and kept using 'a' afterwards.
And then it might be possible to move the power-of-2 thing before the test
for 1 and write the tests for 1-3-5 only once (note that mpq (the main
consumer?) already tests for 1 so this test doesn't need to be too early).
If the gcd is 14, is it better to divide by 2 before calling the generic
division function with 7? It looks like the other functions also proceed
in 2 steps, although it seems possible to do both at once.
Would it make sense to replace the tests for 3 and 5 by a single test that
GMP_NUMB_MASK%d==0?
Wow, I have started ranting... sorry for that.
--
Marc Glisse
More information about the gmp-discuss
mailing list