[Aldor-l] Using GMP and extending the biging protocol

Stephen Watt watt at scl.csd.uwo.ca
Sat Aug 16 04:08:26 EDT 2008


Aha.  It could be that this has also broken the Aldor bigint package.
 Thanks Gaby. -- Stephen

On Sat, Aug 16, 2008 at 2:24 AM, Gabriel Dos Reis
<gdr at integrable-solutions.net> wrote:
> On Fri, Aug 15, 2008 at 11:02 PM, Stephen Watt <watt at scl.csd.uwo.ca> wrote:
>> Thanks for looking into this stuff Pippijn.
>>
>> The bigint macros are supposed to use the 2's complement overflows for
>> the purposes of good, not evil :).
>>
>> That is, there are places where they are supposed to happen and we
>> count on the overflows wrapping around. This is used, for example, in
>> testing for carries.   It allows us to use full word arithmetic from
>> C.
>>
>> It is probably the case that you have spotted a case where this is
>> going wrong -- I haven't looked into it in detail.
>>
>> -- Stephen
>
> If the C integer types used are signed (as opposed to unsigned), then
> the C standard defines overflow in that case as undefined behaviour.
> Some compilers (including GCC recently) have been taking advantage
> of that `stuck reduction' to generate codes that may perform `not as
> expected in case of 2's complement'.  Some public or open source
> software have been reported to be broken by that (aggressive) optimization,
> and it is a battle I've lost after a much long debate about where to strike the
> balance -- anybody curious may look into the GCC archives for the various
> arguments on both sides of the issue.
>
> So, I would suggest to count safely on wrapped overflow only if you're
> using unsigned integer type.
>
> -- Gaby
>




More information about the Aldor-l mailing list