Ticket #71 (closed defect: fixed)
NOT-MORE-CONTAGIOUS broken for double-double-floats
|Reported by:||rtoy||Owned by:||somebody|
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.