mpn_invert implementing ApproximateReciprocal.

bodrato at mail.dm.unipi.it bodrato at mail.dm.unipi.it
Tue Dec 15 19:52:44 CET 2009


Ciao,

> "Exact approximation" is a bit odd.  The value computed is an
> approximation (B^{2n}-1)/D, but is exactly floor((B^{2n}-1)/D).
> I.e. no approximation compared to the ideal value.

Does "Exact truncation" sound better?

>   The measured BINV_NEWTON_THRESHOLD is probably too high because of this.
>
> You're right.  Swapping the measurement order is also not right, as the
> code is written.  I don't see how to do this easily, unless we assume
> mpn_mul will never be relevant here.  I think I'll do that for now.
>
> For mpn_binvert's usage if mul vs mulmod_bmn1 I think we could actually
> use a more generally aiming parameter MUL_TO_MULMOD_BNM1_2NXN_THRESHOLD.
> (The sub_1 used in binvert will not matter.)  I'll leave that for later.

I guess MUL_TO_MULMOD_BNM1_2NXN_THRESHOLD will have a value similar to
INV_MULMOD_BNM1_THRESHOLD.
On all machines running daily test we have
INV_MULMOD_BNM1_THRESHOLD < BINV_NEWTON_THRESHOLD.

Probably mpn_binvert does not actually need a threshold for mulmod_bnm1.

Regards,
Marco

-- 
http://bodrato.it/papers/



More information about the gmp-devel mailing list