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

*To*: CL-Cleanup@SAIL.Stanford.EDU*Subject*: Issue: EXPT-ZERO-ZERO (Version 1)*From*: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>*Date*: Mon, 27 Feb 89 19:37 EST*Cc*: Cyphers@JASPER.SCRC.Symbolics.COM*References*: <19890228000733.1.CYPHERS@SEAR.SCRC.Symbolics.COM>

Issue: EXPT-ZERO-ZERO Forum: Cleanup References: EXPT (pp203-204) Category: CHANGE Edit history: 27-Feb-89, Version 1 by Scott Cyphers (Cyphers@Symbolics.COM), 27-Feb-89, Version 2 by Pitman (signals->is an error, misc edits) Status: For Internal Discussion Problem Description: (expt 0 0) is mathematically undefined, but CLtL defines it as being 1 in most cases. Proposal (EXPT-ZERO-ZERO:MAKE-UNDEFINED): Make (expt 0 0) an error for zeros of all types. That is, it has ``undefined effect.'' Test Case: (EXPT 0 0) => 1 ;according to CLtL (EXPT 0 0) is undefined ;proposed Rationale: 0 For some examples of the behavior of 0 , consider: X 1) Lim 0 = 0 X->0 ln k 2) Y(X) = -------- c + ln X Lim Y(X) = 0 X->0 but Y(X) Lim X = k x->0 Current Practice: Symbolics Genera returns 1 for the test case. Cost to Implementors: Technically, there is no cost to implementors because this would become an ``is an error'' situation, and all implementations that already conform would continue to conform. In practice, most implementations would want to detect the error in high safety situations. In most cases, this is a straightforward change to one or two functions, and including perhaps some compiler optimizers. If any implementations have microcoded this operation, the change may be more complicated. Cost to Users: Even though some implementations might not change, users would not be able to depend on this feature in portable code. Given the mathematical questionableness of the behavior, however, some of the affected users may treat a trend toward error detection as a `bug fix.' Cost of Non-Adoption: Some mathematical errors will not be detected because CL supplies a value which is not always appropriate. Benefits: In implementations which choose to reliably signal an error in this case, condition handling can be used to customize the behavior of (expt 0 0) in a manner appropriate to the application. Aesthetics: Cleaner mathematically. Discussion: We'd really prefer one of ``must signal'' or ``should signal,'' but since non-integer 0 powers are already ``is an error'' this is most consistent. Cyphers, Pitman, and several other Lisp developers at Symbolics think this is a good idea.

**Follow-Ups**:**Issue: EXPT-ZERO-ZERO (Version 1)***From:*Guy Steele <gls@Think.COM>

- Prev by Date:
**[Dave.Touretzky@B.GP.CS.CMU.EDU: pluralization: two proposals]** - Next by Date:
**Re: Issue: EXPT-ZERO-ZERO (Version 1)** - Previous by thread:
**[Dave.Touretzky@B.GP.CS.CMU.EDU: pluralization: two proposals]** - Next by thread:
**Issue: EXPT-ZERO-ZERO (Version 1)** - Index(es):