[cmucl-ticket] [cmucl] #71: NOT-MORE-CONTAGIOUS broken for double-double-floats
cmucl
cmucl-devel at common-lisp.net
Fri Jan 25 04:22:56 UTC 2013
#71: NOT-MORE-CONTAGIOUS broken for double-double-floats
--------------------+-------------------------------------------------------
Reporter: rtoy | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone:
Component: Core | Version: 2013-01
Keywords: |
--------------------+-------------------------------------------------------
Here is an example of the brokenness:
{{{
(defun foo (x)
(declare (type double-float x))
(expt x 2w0))
(compile 'foo)
(foo 2d0)
Invalid number of arguments: 1
[Condition of type KERNEL:SIMPLE-PROGRAM-ERROR]
}}}
This is a bug in {{{NOT-MORE-CONTAGIOUS}}} returning the wrong value. The
power should cause result of {{{EXPT}}} to be a double-double-float, but
the the deftransform just converts the call to a multiplication of two
double-floats. This mismatch of the actual type and the derived type
confuses the compiler and causes the weird error.
--
Ticket URL: <http://trac.common-lisp.net/cmucl/ticket/71>
cmucl <http://common-lisp.net/project/cmucl>
Cmucl is a high-performance, free Common Lisp implementation.
More information about the cmucl-ticket
mailing list