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

*To*: ELIOT%cs.umass.edu@RELAY.CS.NET, common-lisp@SU-AI.ARPA*Subject*: Rational Infinity*From*: Robert A. Cassels <Cassels@STONY-BROOK.SCRC.Symbolics.COM>*Date*: Wed, 4 Feb 87 09:27 EST*In-reply-to*: The message of 3 Feb 87 12:42 EST from ELIOT%cs.umass.edu@RELAY.CS.NET

Date: Tue, 3 Feb 87 13:42 EDT From: ELIOT%cs.umass.edu@RELAY.CS.NET Division by zero should signal an error whenever possible. Defining it to silently return something would make debugging numerical code more difficult. I have found some very obscure bugs as a result of division by zero traps. The existence of infinite rational objects and how they come about are two separate issues. If there were a Common Lisp error system, you would want something like: - Division by zero signals an error. (Note that 0/0 is different from non-zero/0.) - The user has an option when the error is signalled (in the non-zero/0 case) to use an "infinite" result. - There is a form which turns off such error signalling within its body, so that infinities are produced for division by zero, without user intervention. - There is a way for the programmer or user to explicitly enter an infinite object into the system (by typing it). - When an infinite object appears in a computation, the "mathematically correct" thing happens. [The IEEE floating-point rules are one possible definition of "correct".] So infinities only appear under explicit programmer or user control. Thus you get the best of both trapping and non-trapping worlds. The Symbolics system handles IEEE floating-point divide-by-zero this way. [Hard-core IEEE standards fanatics will point out that the default is supposed to be that division doesn't trap, but just quietly returns an infinity. We chose to make trapping be the default for all exceptions except inexact-result.] Note that it depends on what sort of calculation you're doing whether infinity is an appropriate answer or not. One of the reasons that rational infinities aren't in Common Lisp yet is that there is some debate about whether rational infinity is affine (signed) or projective (unsigned).

- Prev by Date:
**Binding terminology** - Next by Date:
**Rational Infinity** - Previous by thread:
**Re: Rational Infinity** - Next by thread:
**Rational Infinity** - Index(es):