[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*To*: TOURETZKY at CMU-10A*Subject*: Shifted-0, Modular arithmetic*From*: JONL at MIT-MC (Jon L White)*Date*: Tue, 28 Oct 80 11:25:00 GMT*Cc*: (BUG LISP) at MIT-MC, GOLDBERG at CMU-10A*Original-date*: 28 OCT 1980 0725-EDT

Date: 28 October 1980 0556-EST From: Dave Touretzky at CMU-10A Subject: is it SUPPOSED to do this? (setq a (^ 2 34.)) => 17179869184. (+ a a) => -34359738368. ;arithmetic overflow (* 2 a) => 0 ;huh??? doesn't 2*a = a+a? (times 2 a) => 34359738368. ;correct answer, as a bignum The intended compiled-code target for the "+" function is the PDP-10 ADD instruction, and for "*" it is the MUL instruction; this isn't nearly as bad as it seems, since there are interesting theoretical properties of 36.-bit, 2's-complement, mid-point zero arithmetic. The pratical application of this weirdo "ring" is that except near the "endpoints", it is almost like integer arithmetic; when the endpoints are disturbing, then you must use PLUS and TIMES in order to insure faithfulness to the standard mathematical arithmetic. You'll only take two orders of magnitude longer time, but sometimes the price is worth it.

- Prev by Date:
**is it SUPPOSED to do this?** - Next by Date:
**[no subject]** - Previous by thread:
**is it SUPPOSED to do this?** - Next by thread:
**Re: Shifted-0, Modular arithmetic** - Index(es):