diff --git a/code/irrat.lisp b/code/irrat.lisp index b7e63f59956f4f1469e518917dfd40f152f4805e..be51d17e2a1baa234c215934cb10711332e8b518 100644 --- a/code/irrat.lisp +++ b/code/irrat.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/irrat.lisp,v 1.41 2004/10/19 15:07:30 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/irrat.lisp,v 1.42 2005/08/25 21:21:32 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -531,11 +531,12 @@ (complex-asin number) (coerce (%asin (coerce number 'double-float)) 'single-float))) (((foreach single-float double-float)) - (if (or (> number (coerce 1 '(dispatch-type number))) - (< number (coerce -1 '(dispatch-type number)))) - (complex-asin number) + (if (or (float-nan-p number) + (and (<= number (coerce 1 '(dispatch-type number))) + (>= number (coerce -1 '(dispatch-type number))))) (coerce (%asin (coerce number 'double-float)) - '(dispatch-type number)))) + '(dispatch-type number)) + (complex-asin number))) ((complex) (complex-asin number)))) @@ -547,11 +548,12 @@ (complex-acos number) (coerce (%acos (coerce number 'double-float)) 'single-float))) (((foreach single-float double-float)) - (if (or (> number (coerce 1 '(dispatch-type number))) - (< number (coerce -1 '(dispatch-type number)))) - (complex-acos number) + (if (or (float-nan-p number) + (and (<= number (coerce 1 '(dispatch-type number))) + (>= number (coerce -1 '(dispatch-type number))))) (coerce (%acos (coerce number 'double-float)) - '(dispatch-type number)))) + '(dispatch-type number)) + (complex-acos number))) ((complex) (complex-acos number))))