Opened 11 years ago
Closed 11 years ago
#92 closed defect (invalid)
Type-derivation for log is inconsistent
Reported by: | Raymond Toy | Owned by: | somebody |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | Core | Version: | 2014-02 |
Keywords: | Cc: |
Description
Consider
(defun foo (x) (declare (type (double-float 0d0) x)) (log x))
When compiled, the compiler says the return type for foo
is
(OR DOUBLE-FLOAT (COMPLEX DOUBLE-FLOAT))
. This is inconsistent with the return value of (log 0d0)
and (log -0d0)
which is EXT:DOUBLE-FLOAT-NEGATIVE-INFINITY
(when the :DIVIDE-BY-ZERO
trap is disabled).
The correct derived type should be just DOUBLE-FLOAT
.
Change History (3)
comment:1 Changed 11 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:2 Changed 11 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
This is actually incorrect. We really want log(-0)
to return -inf + i*pi
so that the branch cuts of special functions can be computed correctly from the definition.
comment:3 Changed 11 years ago by
Resolution: | → invalid |
---|---|
Status: | reopened → closed |
Note: See
TracTickets for help on using
tickets.
commit 8970ad11b03f863b40a9ee352d3aced52b783cce Author: Raymond Toy <toy.raymond@…> Date: Sun Feb 9 09:53:11 2014 -0800
LOG-DERIVE-TYPE-AUX-1
to compute the correct type.