Dennis Clarke <[email protected]> writes:
> gcd_1.c:187:13: runtime error: shift exponent 32 is too large for
> 32-bit type 'long unsigned int'
> FAIL t-cmp_ui (exit status: 1)
And code is essentially
count_trailing_zeros (c, t);
ulimb >>= (c + 1);
The intention is to shift right to get rid of both trailing zero bits,
and the redundant least significant one bit.
That fails with undefined behavior if by chance t == 2^31, so that c ==
31.
I don't see how that can happen, though, since ulimb, vlimb < 2^31
through out the loop, and t = (ulimb - vlimb) mod 2^32.
And I also wonder why USE_ZEROTAB is set to 0 here.
Regards,
/Niels
--
Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677.
Internet email is subject to wholesale government surveillance.
_______________________________________________
gmp-bugs mailing list
[email protected]
https://gmplib.org/mailman/listinfo/gmp-bugs