From d9fbb29676b98459fae98aa8299b86a85b4051e2 Mon Sep 17 00:00:00 2001 From: Henry Garner Date: Fri, 4 Oct 2024 13:15:55 +0100 Subject: [PATCH] Make tolerance proportional to input magnitude --- test/kixi/stats/math_test.cljc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/test/kixi/stats/math_test.cljc b/test/kixi/stats/math_test.cljc index de8de03..8768019 100644 --- a/test/kixi/stats/math_test.cljc +++ b/test/kixi/stats/math_test.cljc @@ -4,7 +4,7 @@ [kixi.stats.math :as sut :refer [abs]])) (defn approx= [a b tol] - (< (abs (- a b)) tol)) + (< (/ (abs (- a b)) (abs (/ (+ a b) 2.0))) tol)) (def gamma-point-values [3.99121704344051E-26 -1.01776034607733E-24 2.4935128478894578E-23 @@ -37,12 +37,15 @@ (is (= 120.0 (sut/gamma 6))) (is (= 720.0 (sut/gamma 7))) (is (= 5040.0 (sut/gamma 8))) - (is (= (mapv sut/gamma (range -25.5 25)) - gamma-point-values))) + (is (every? (fn [[x y]] + (approx= (sut/gamma x) y 1e-15)) + (map vector + (mapv sut/gamma (range -25.5 25)) + gamma-point-values)))) (deftest log-gamma-returns-correct-point-values (is (->> (map vector (range 0.5 25) log-gamma-point-values) - (every? (fn [[x y]] (approx= (sut/log-gamma x) y 1e-12)))))) + (every? (fn [[x y]] (approx= (sut/log-gamma x) y 1e-15)))))) (deftest gamma-pinv-returns-reference-value (is (= 0.02223223690217228 (sut/gamma-pinv 1E-8 4))))