about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--include/utils.h1
-rw-r--r--src/utils.sc5
2 files changed, 6 insertions, 0 deletions
diff --git a/include/utils.h b/include/utils.h
index 03a8e2e..bc2952c 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -38,6 +38,7 @@ double gaussian_pdf (double x);
 double gaussian_cdf (double x);
 
 double rerror (double approx, double exact);
+int rtol_p (double approx, double exact, double rtol);
 
 double bisection (gsl_function* f, double a, double b);
 double bisection_rlimit (gsl_function* f, double a, double b);
diff --git a/src/utils.sc b/src/utils.sc
index 20452b0..94b7dcd 100644
--- a/src/utils.sc
+++ b/src/utils.sc
@@ -89,6 +89,11 @@ the range [0,pi]."
 exact value EXACT."
   (return (fabs (- 1 (/ approx exact)))))
 
+(define (rtol? approx exact rtol) (int double double double)
+  "Return 1 if the approximate value APPROX is within RTOL relative
+tolerance of the exact value EXACT. Else, return 0."
+  (return (< (rerror approx exact) rtol)))
+
 (sc-define-syntax (with-root-fsolver solver solver-type function a b body ...)
   (with-alloc solver gsl-root-fsolver*
               (gsl-root-fsolver-alloc solver-type)