bodrato at mail.dm.unipi.it
Tue Dec 11 02:55:53 UTC 2018
Il Lun, 10 Dicembre 2018 10:07 pm, Niels Möller ha scritto:
> I recommend adding -p to the diff flags.
Ok, I attach it again, with -p, and slightly improved.
> First, how would this be configured? Adding an
> #ifndef GMP_LIMB_BITS
> around the mp_limb_t typedef in mini-gmp.h, and around the related
> defines in mini-gmp.c? Then one could do
> #define GMP_LIMB_BITS 8
> typedef uint8_t mp_limb_t;
> #include "mini-gmp.c"
Sounds like a good idea.
> One could aim to support any GMP_LIMB_BITS between, say, 3 and the size
> of unsigned long long. For unusual sizes one would need to combine with
> asl.h or something similar.
Supporting very small sizes, and odd sizes might not be easy. And
currently Paul reported failures for 32-bit limbs on 64-bit machines...
asl.h is more interesting for GMP than for mini-.
> And we obviously need test coverage for it.
Well, that's not difficult, we just need some configuration hack as the
one you proposed, and a check-mini-gmp-8 target.
> BTW, please use parentheses in expressions like
> assert ((r0 & GMP_LIMB_MAX >> GMP_LIMB_BITS - shift) == 0);
assert ((r0 & GMP_LIMB_MAX >> (GMP_LIMB_BITS - shift)) == 0);
> And I think we should always require that arithmetic on mp_limb_t is mod
> (GMP_LIMB_MAX + 1), so that & GMP_LIMB_MAX usually is redundant (with
Do you mean I should have pushed the line with even more parentheses?
assert ((r0 & (GMP_LIMB_MAX >> (GMP_LIMB_BITS - shift))) == 0);
More information about the gmp-devel