比较flonum

时间:2015-09-17 12:43:41

标签: racket flonum

我想定义一个具有以下属性的函数:

(almost-equal? (cos (/ pi 2)) 0.0)   ; --> #t

为此,我认为我应该以下列方式使用flulp

(define (almost-equal? a b)
  (let [[epsilon (max (abs (flulp (* 10.0 a))) (abs (flulp (* 10.0 b))))]]
    (<= (absolute-error a b) epsilon)))

但它没能通过我的测试。我们是否有规范的方式进行这种比较?欢迎任何建议。

1 个答案:

答案 0 :(得分:3)

使用relative-errordocumentation

我可以推荐这篇关于如何调试数值函数的文章:

Practically Accurate Floating-Point Math 作者:Neil Toronto和Jay McCarthy