mp_bases

Torbjorn Granlund tege@swox.com
28 Apr 2003 02:19:56 +0200


It would be nice to get the mp_bases overhaul designed and
implemented.

For all hosts that have efficient umul_ppmm, we should provide
log(base)/log(2) and log(2)/log(base) with two limb values per
base.  umul_ppmm(result, dummy, mp_bases[base].X, inval) then
gives the result.

For other hosts (most notably those providing UltraComputing(tm))
we might want to stay with floating point constants.  But we'd
want to provide log(base)/log(2) there too, not just
log(2)/log(base) as we do now.  That will save the current
expensive floating-point divisions.

Then we need a nice set of gmp-impl.h macros hiding if we have
floating-point or integer based mp_bases.  And the current usage
of chars_per_bit_exactly isn't too nice, which also motivates new
macros.

Would you want to implement this?

--
Torbjörn