<div class="gmail_quote">On Mon, Dec 19, 2011 at 7:00 PM, Waldek Hebisch <span dir="ltr"><<a href="mailto:hebisch@math.uni.wroc.pl">hebisch@math.uni.wroc.pl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Put the the following line in a file:<br>
<br>
(DEFUN |nangenericcomplex| () (PROG () (RETURN (/ 1.0 (COMPLEX 0.0)))))<br>
<br>
And then try to compile-file it:<br>
<br>
> (compile-file "sfsfun.clisp")<br>
<br>
;;; Loading #P"/var/tmp/hebisch/usr/lib/ecl-11.1.1/cmp.fas"<br>
;;;<br>
;;; Compiling sfsfun.clisp.<br>
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0<br>
;;;<br>
;;; Compiling (DEFUN |nangenericcomplex| ...).<br>
;;; End of Pass 1.<br>
;;; Emitting code for |nangenericcomplex|.<br>
;;; Internal error:<br>
;;;   ** Cannot print object #<single-float quiet NaN> readably.<br>
NIL<br>
NIL<br>
NIL<br>
<br>
FriCAS uses such a function to raise floating point errors<br>
when appropriate.  In principle I could divide by "runtime"<br>
zero (I have one at hand as just before call to |nangenericcomplex|<br>
I have test which checks that number to be used as divisor is zero).<br>
But having separate function seems clearer.  And some day compiler<br>
may be smart enough to realize that "runtime" zero is a zero and<br>
try to constant fold it...</blockquote><div><br></div><div>Actually this is the time in which ECL is already clever enough to constant-fold the #'/ and detect that the output of that function can not be saved. Changing the function to </div>

<div><br></div><div><div>(DEFUN foo () (PROG () (locally (declare (notinline /)) (RETURN (/ 1.0 (COMPLEX 0.0))))))</div></div><div><br></div><div>fixes the problem, because ECL no longer tries to precompute the quotient.</div>

<div><br></div><div>I am unsure about how to fix this, or even whether this needs to be fixed...</div><div><br></div><div>Juanjo</div></div><div><br></div>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br>

<a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>