[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