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

*To*: Common-Lisp @ SU-AI, Moon @ SCRC-TENEX*Subject*: Gaussian rationals*From*: Alan Bawden <ALAN @ MIT-MC>*Date*: Sat, 04 Jun 1983 06:04:00 -0000*In-reply-to*: Msg of 3 Jun 1983 17:27-EDT from David A. Moon <Moon%SCRC-TENEX%MIT-MC at SU-DSN>

Date: Friday, 3 June 1983, 17:27-EDT From: David A. Moon <Moon%SCRC-TENEX%MIT-MC at SU-DSN> Having Gaussian rationals behave as an extension of the real rationals seems superficially plausible, but I don't consider myself competent to evaluate the implications. Let me ask the $64 question: will the result of any function, other than type-checking functions and transcendental functions, be affected by this change (i.e. are there other functions that treat complex numbers on the real line different from real numbers)? I just carefully checked the Laser manual. I'm fairly certain that the answer to your $64 question is: No. However, I am not 100% convinced we are all talking the same language here. Let me present a small dialog with a Common Lisp interpreter to demonstrate the behavior I think we are proposing here: (= (/ 4 2) 2) T ;whatever (/ 4 2) returns, it must be ;indistinguishable from 2. [Except perhaps by ;using EQ? I guess that doesn't matter.] (integerp (/ 4 2)) T ;Indistinguishable. (eql (/ 4 2) 2) T ;eql is defined to be = for numbers. (= (complex 2 0) 4/2) ;Typing "4/2" should be just like typing "2". T ;Again indistinguishable. (+ #C(2/3 0) 1/3) ;Typing "#C(2/3 0)" is just like typing "2/3". 1 (integerp *) T ;Whatever it is, it acts like an integer. (nth (+ #C(0/69 7/7) (* 3 (complex (/ 4 6) -1/3)) '(zero one two three)) TWO Now there is one issue that can go either way. Currently (according to page 24 of Laser) the complex type and the rational type are DISJOINT. I presume the idea is that the complex type is to consist of only those numbers with non-zero imaginary part. Unfortunately this is a mis-use of the mathematical term "complex", which is normally applied to a set of numbers that INCLUDES the real numbers. The predicate COMPLEXP should correctly be true of ALL Common Lisp number types, and should thus be useless. Better I think, would be to have a type named REAL, then where previously you would have written (COMPLEXP ...), now you would write (NOT (REALP ...)). I understand that there is a tendency in computer languages to mis-use the word "real" to mean "floating point", but it's a shame to introduce a new mis-use to cover for an old one. [ BTW, I just chased all over the Laser manual trying to find where the printed representation of complex numbers is set forth. I found it on page 15, but I looked first in the Numbers chapter, and second in the section of the I/O chapter titled "Printed representation...". All plausible places to find such information...]

- Prev by Date:
**Addendum to my answers on ballot A** - Next by Date:
**Copying a random-state** - Previous by thread:
**pervasiveness of declarations** - Next by thread:
**Re: Gaussian rationals** - Index(es):