From 898bafbbfb67dea8652adf5d665023b366c02afa Mon Sep 17 00:00:00 2001
From: Matthieu Schaller <schaller@strw.leidenuniv.nl>
Date: Tue, 12 May 2020 11:35:17 +0200
Subject: [PATCH] Document the accuracy achieved by the new approximation

---
 src/kernel_long_gravity.h  | 5 ++++-
 tests/testKernelLongGrav.c | 8 +++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/kernel_long_gravity.h b/src/kernel_long_gravity.h
index e6f454b588..f525d89f8c 100644
--- a/src/kernel_long_gravity.h
+++ b/src/kernel_long_gravity.h
@@ -86,7 +86,10 @@ kernel_long_grav_derivatives(const float r, const float r_s_inv,
   const float e = expf(-u2);
 
   /* Compute erfcf(u) using eq. 7.1.25 of
-     Abramowitz & Stegun, 1972. */
+   * Abramowitz & Stegun, 1972.
+   *
+   * This has a *relative* error of less than 4e-3 over
+   * the range of interest (0 < u <  5) */
 
   const float t = 1.f / (1.f + 0.47047f * u);
 
diff --git a/tests/testKernelLongGrav.c b/tests/testKernelLongGrav.c
index 7de3f00e97..e305e1944e 100644
--- a/tests/testKernelLongGrav.c
+++ b/tests/testKernelLongGrav.c
@@ -37,8 +37,10 @@ const int num_tests = 1 << 10;
 void check_value(double a, double b, const char* s, const double tol,
                  const double r, const double r_s) {
   if (fabs(a - b) / fabs(a + b) > tol)
-    error("Values are inconsistent: %12.15e %12.15e rel=%e (%s for r_s=%e r/r_s=%e)!",
-          a, b, fabs(a - b) / fabs(a + b), s, r_s, r / r_s);
+    error(
+        "Values are inconsistent: %12.15e %12.15e rel=%e (%s for r_s=%e "
+        "r/r_s=%e)!",
+        a, b, fabs(a - b) / fabs(a + b), s, r_s, r / r_s);
 }
 
 int main(int argc, char* argv[]) {
@@ -92,7 +94,7 @@ int main(int argc, char* argv[]) {
           (12. * pow(r_s, 4.) - 12. * r_s * r_s * r * r + pow(r, 4.)) *
           pow(r_s, -9.);
 
-      check_value(chi_swift.chi_0, chi_0, "chi_0", 4e-3, r, r_s);
+      check_value(chi_swift.chi_0, chi_0, "chi_0", 3.4e-3, r, r_s);
       check_value(chi_swift.chi_1, chi_1, "chi_1", 1e-5, r, r_s);
       check_value(chi_swift.chi_2, chi_2, "chi_2", 1e-5, r, r_s);
       check_value(chi_swift.chi_3, chi_3, "chi_3", 1e-4, r, r_s);
-- 
GitLab