The original test case still conses
(defun test (number) (declare (type (or fixnum double-float single-float) number)) (cond ((typep number 'double-float) number) ((typep number 'single-float) (coerce number 'double-float)) ((typep number 'fixnum) (coerce number 'double-float))))
The original test case still conses
(defun test (number)
(declare (type (or fixnum double-float single-float) number))
(cond ((typep number 'double-float)
number)
((typep number 'single-float)
(coerce number 'double-float))
((typep number 'fixnum)
(coerce number 'double-float))))