0.9.2.31:
[sbcl.git] / src / code / irrat.lisp
index e7131b0..25a5f8b 100644 (file)
 
 ) ; EVAL-WHEN
 \f
+#!+x86 ;; for constant folding
+(macrolet ((def (name ll)
+            `(defun ,name ,ll (,name ,@ll))))
+  (def %atan2 (x y))
+  (def %atan (x))
+  (def %tan-quick (x))
+  (def %cos-quick (x))
+  (def %sin-quick (x))
+  (def %sqrt (x))
+  (def %log (x))
+  (def %exp (x)))
+
 ;;;; stubs for the Unix math library
 ;;;;
 ;;;; Many of these are unnecessary on the X86 because they're built
   #!+sb-doc
   "Return BASE raised to the POWER."
   (if (zerop power)
-      (1+ (* base power))
+      (let ((result (1+ (* base power))))
+       (if (and (floatp result) (float-nan-p result))
+           (float 1 result)
+           result))
     (labels (;; determine if the double float is an integer.
             ;;  0 - not an integer
             ;;  1 - an odd int