From 33699e142fcf6558493908edcf46bf622c1b3ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kochma=C5=84ski?= Date: Tue, 6 Sep 2016 18:27:18 +0200 Subject: [PATCH] numlib: trap-fpe on inf constant definitions --- src/lsp/numlib.lsp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/lsp/numlib.lsp b/src/lsp/numlib.lsp index b96e20cf4..1bd7c9d84 100644 --- a/src/lsp/numlib.lsp +++ b/src/lsp/numlib.lsp @@ -74,15 +74,19 @@ )) #+ieee-floating-point -(let ((inf (si::infinity))) - (defconstant short-float-positive-infinity (coerce inf 'short-float)) - (defconstant short-float-negative-infinity (coerce (- inf) 'short-float)) - (defconstant single-float-positive-infinity (coerce inf 'single-float)) - (defconstant single-float-negative-infinity (coerce (- inf) 'single-float)) - (defconstant double-float-positive-infinity (coerce inf 'double-float)) - (defconstant double-float-negative-infinity (coerce (- inf) 'double-float)) - (defconstant long-float-positive-infinity (coerce inf 'long-float)) - (defconstant long-float-negative-infinity (coerce (- inf) 'long-float))) +(let ((bits (si:trap-fpe 'last nil))) + (unwind-protect + (locally (declare (notinline -)) + (let ((inf (si:infinity))) + (defconstant short-float-positive-infinity (coerce inf 'short-float)) + (defconstant short-float-negative-infinity (coerce (- inf) 'short-float)) + (defconstant single-float-positive-infinity (coerce inf 'single-float)) + (defconstant single-float-negative-infinity (coerce (- inf) 'single-float)) + (defconstant double-float-positive-infinity (coerce inf 'double-float)) + (defconstant double-float-negative-infinity (coerce (- inf) 'double-float)) + (defconstant long-float-positive-infinity (coerce inf 'long-float)) + (defconstant long-float-negative-infinity (coerce (- inf) 'long-float)))) + (si:trap-fpe bits t))) (defconstant imag-one #C(0.0 1.0))