aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-06-21 00:32:24 +0000
committerdos-reis <gdr@axiomatics.org>2011-06-21 00:32:24 +0000
commitb529872b2c3aeca9f9994b94c392383baea2c84a (patch)
treed69119cbfb471d49b926a555f9a68a6624df37ae /src/interp
parente4656a0388e8fa12594788b216b42bb04680d9d5 (diff)
downloadopen-axiom-b529872b2c3aeca9f9994b94c392383baea2c84a.tar.gz
* lisp/core.lisp.in (%fNaN?): New.
* interp/spaderror.lisp (trapNumericErrors): Handle ARITHMETIC-ERROR too. * interp/g-opt.boot ($VMsideEffectFreeOperators): Include %fNaN?. * algebra/clip.spad.pamphlet (TwoDimensionalPlotClipping): Use it. * algebra/plot.spad.pamphlet (Plot): Likewise.
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/g-opt.boot2
-rw-r--r--src/interp/spaderror.lisp5
2 files changed, 3 insertions, 4 deletions
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot
index 39223218..f1dd8d2e 100644
--- a/src/interp/g-opt.boot
+++ b/src/interp/g-opt.boot
@@ -405,7 +405,7 @@ $VMsideEffectFreeOperators ==
%irem %iquo %idivide %idec %irandom
%feq %flt %fle %fgt %fge %fmul %fadd %fsub %fexp %fmin %fmax %float?
%fpowi %fdiv %fneg %i2f %fminval %fmaxval %fbase %fprec %ftrunc
- %fsqrt %fpowf %flog %flog2 %flog10 %fmanexp
+ %fsqrt %fpowf %flog %flog2 %flog10 %fmanexp %fNaN?
%fsin %fcos %ftan %fcot
%fasin %facos %fatan %facot
%fsinh %fcosh %ftanh
diff --git a/src/interp/spaderror.lisp b/src/interp/spaderror.lisp
index 7d65b506..2967dc27 100644
--- a/src/interp/spaderror.lisp
+++ b/src/interp/spaderror.lisp
@@ -60,9 +60,8 @@
#-:gcl
(defmacro |trapNumericErrors| (form)
- `(handler-bind ((division-by-zero
- #'(lambda (c) (declare (ignore c)) |%nothing|)))
- ,form))
+ `(handler-case ,form
+ (arithmetic-error () |%nothing|)))
;; the following form embeds around the akcl error handler
#+:gcl