>   +        if ( (any < 0) || (neg && (val > acc || (val -= c) > acc))

Isn't that one of those short-circuits that causes bad side-effects
under different circumstances? I have a feeling that it is not
well defined if the -= operation is always performed or not, but
I could be wrong. Assuming I can understand what's going on here,
I'll take a shot at trying to make the logic more clear (while
keeping as much of the constant-folding/short-circuiting as possible.)

-aaron

Reply via email to