The instruction sequence we had was not very good, e.g. (exp -708)
was off by far more than 1ulp. It can be done that way, but we need
to use 64-bit precision for it, and setting the i387 precision here
is getting a bit far afield from open-coding.
;; <= pi/4. Correct argument reduction requires a
;; better approximation of pi than the i387 has.
FLONUM-SIN FLONUM-COS FLONUM-TAN
+ ;; Disabled: exp is too much trouble to get right in
+ ;; i387; need 64-bit precision. Let libm do it.
+ FLONUM-EXP
VECTOR-CONS STRING-ALLOCATE FLOATING-VECTOR-CONS
FLONUM-IS-LESS? FLONUM-IS-LESS-OR-EQUAL?
FLONUM-IS-GREATER? FLONUM-IS-GREATER-OR-EQUAL?
(LAP (FLDL2E)
(FMULP (ST 1) (ST 0))
(F2XM1)))))
+\f
+;; XXX This is disabled because it is inadequate in 53-bit precision.
+#;
(define-arithmetic-method 'FLONUM-EXP flonum-methods/1-arg
(flonum-unary-operation/stack-top
(lambda ()