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

*To*: Paul_Gleichauf@B.GP.CS.CMU.EDU*Subject*: One bug in CMUCL (version 15a?)*From*: "Jonathan H. Young" <young@icad.COM>*Date*: Thu, 23 Apr 92 18:33:00 EDT*Cc*: cmucl-bugs@cs.cmu.edu*In-reply-to*: <16492.704059946@B.GP.CS.CMU.EDU> "Paul_Gleichauf@B.GP.CS.CMU.EDU"

Paul - Thanks for your prompt response. I think that this is a hard problem, but I do think it is soluble, and that the current CMU CL implementation doesn't have it yet. More below. From: Paul_Gleichauf@B.GP.CS.CMU.EDU Date: Thu, 23 Apr 92 16:12:26 -0400 Jonathan, I have examined the format behavior that you have reported as a bug: > * (format nil "~16,9,2E" -9.9999999999d0) > "-10.000000000e+00" > * (length *) > 17 As you have noted the rounding up of the 10 9's to the right of the decimal point causes 9 0's in the returned printed representation. There are 9 places reserved in the format directive. Pus one for the decimal point. There are two places reserved for the the digits of the exponent, one for its sign, another for the E. That's 14 so far. Now the leading minus sign requires 1 place and the rounded 10 two more. That is 17 required by the format directive. There's nothing that requires that you print "the rounded 10". Why not print the following: "-1.000000000e+01" ---9-----++4+ 9 after the decimal point, 4 for the exponent, one for the sign and one for the decimal point makes only 15. I'd be happy to look at the source code if you could point me to it. (I haven't untarred the source yet...) I will refer you to Steele CLtL2 p.590. Thanks for the reference. My reading is that the definition is somewhat ambiguous, but I'm confident that the above value can be computed relatively easily, by rounding the original value to s significant digits, where s = w - ( (if negative then 1 else 0) + 1 + (e+2) ) (width of everything except the sign, decimal point, and exponent). In any case, the value output is not valid, because you're only allowed to strech d or e to output the value. Consider the following examples: * (format nil "~16,9,2,0E" -9.9999999999d0) "-1.000000000d+01" ;; should be " -.100000000d+02" * (length *) 16 * (format nil "~17,9,2,0E" -9.9999999999d0) " -1.000000000d+01" ;; should be " -.100000000d+02" * (length *) 17 In general bug reports should be sent to the address on the banner when you start up CMU CL, i.e. cmucl-bugs@cs.cmu.edu and not through our slisp-group internal mailing list. You're right, the address is printed out when I start up the lisp. My apologies. --- Jonathan P.S. Is a CLTL2 release planned soon?

**Follow-Ups**:**Re: One bug in CMUCL (version 15a?)***From:*Paul_Gleichauf@B.GP.CS.CMU.EDU

**References**:**Re: One bug in CMUCL (version 15a?)***From:*Paul_Gleichauf@B.GP.CS.CMU.EDU

- Prev by Date:
**Re: One bug in CMUCL (version 15a?)** - Next by Date:
**CLOS** - Previous by thread:
**Re: One bug in CMUCL (version 15a?)** - Next by thread:
**Re: One bug in CMUCL (version 15a?)** - Index(es):