[cmucl] #92: Type-derivation for log is inconsistent

#92: Type-derivation for log is inconsistent --------------------+------------------------------------------------------- Reporter: rtoy | Owner: somebody Type: defect | Status: new Priority: major | Milestone: Component: Core | Version: 2014-02 Keywords: | --------------------+------------------------------------------------------- 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}}}. -- Ticket URL: <http://trac.common-lisp.net/cmucl/ticket/92> cmucl <http://common-lisp.net/project/cmucl> Cmucl is a high-performance, free Common Lisp implementation.

#92: Type-derivation for log is inconsistent ---------------------+------------------------------------------------------ Reporter: rtoy | Owner: somebody Type: defect | Status: closed Priority: major | Milestone: Component: Core | Version: 2014-02 Resolution: fixed | Keywords: ---------------------+------------------------------------------------------ Changes (by toy.raymond@…): * status: new => closed * resolution: => fixed Comment: commit 8970ad11b03f863b40a9ee352d3aced52b783cce Author: Raymond Toy <toy.raymond@gmail.com> Date: Sun Feb 9 09:53:11 2014 -0800 Fix ticket:92 Type derivation for log fixed to be consistent with the actual returned values. * src/compiler/float-tran.lisp: * Update {{{LOG-DERIVE-TYPE-AUX-1}}} to compute the correct type. * tests/trac.lisp: * Add test for trac ticket:92 -- Ticket URL: <http://trac.common-lisp.net/cmucl/ticket/92#comment:1> cmucl <http://common-lisp.net/project/cmucl> Cmucl is a high-performance, free Common Lisp implementation.

#92: Type-derivation for log is inconsistent ---------------------+------------------------------------------------------ Reporter: rtoy | Owner: somebody Type: defect | Status: reopened Priority: major | Milestone: Component: Core | Version: 2014-02 Resolution: | Keywords: ---------------------+------------------------------------------------------ Changes (by rtoy): * status: closed => reopened * resolution: fixed => Comment: 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. -- Ticket URL: <http://trac.common-lisp.net/cmucl/ticket/92#comment:2> cmucl <http://common-lisp.net/project/cmucl> Cmucl is a high-performance, free Common Lisp implementation.
participants (1)
-
cmucl