Opened 12 years ago
Closed 12 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 12 years ago by
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
comment:2 Changed 12 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 12 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-1to compute the correct type.