
On Aug 2, 2008, at 7:47 AM, Beman Dawes wrote:
Isaac Dupree wrote:
Is there interested in a library to check for overflow in (primarily) the built-in integers?
Yes. This has been on my personal wish-list for a long time.
I've been interested in something related. I don't need to know of the existence of overflow, but what exactly the overflow is. I want functions like: 1. + lhs, rhs: word -> wrapped_sum: word, carry: Boolean 2. - lhs, rhs: word -> wrapped_difference: word, borrow: Boolean 3. * lhs, rhs: word -> product: word[2] 4. /% lhs: word[2], rhs: word -> quotient, remainder: word (4) assumes that the dividend is small enough to only need a single- word quotient, i.e. lhs[1] < rhs. The general case could divide lhs [1] by rhs first then compose the answer: function 4_full( lhs: word[2], rhs: word ) {lq, lr} = lhs[1] FULL_DIV rhs; lhs[1] = lr; {result.quotient, result.remainder} = 4( lhs, rhs ); // now lhs meets preconditions result.extended_quotient = lq; return result; The key is that, AFAIK, processors for the past few decades have these functions built-in. It's just that C, C++, etc. have not given us access to these optimized routines. The only access is either assembly language or compiler optimizations. -- Daryle Walker Mac, Internet, and Video Game Junkie darylew AT hotmail DOT com