From c5db17e9ea816920f327b326e81b718794d8fa8f Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauldmccarthy@gmail.com>
Date: Fri, 6 Sep 2024 15:19:07 +0100
Subject: [PATCH] BF: Fix bug in code that controls which adjacent spline
 coefficients to include when interpolating

---
 splinterpolator.h | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/splinterpolator.h b/splinterpolator.h
index 3936189..7978800 100644
--- a/splinterpolator.h
+++ b/splinterpolator.h
@@ -812,18 +812,10 @@ unsigned int Splinterpolator<T>::get_start_indicies(const double *coord, int *si
 {
   unsigned int ni = _order+1;
 
-  if (odd(ni)) {
-    for (unsigned int i=0; i<_ndim; i++) {
-      sinds[i] = static_cast<int>(coord[i]+0.5) - ni/2;
-    }
-  }
-  else {
-    for (unsigned int i=0; i<_ndim; i++) {
-      int ix = static_cast<int>(coord[i]+0.5);
-      if (ix < coord[i]) sinds[i] = ix - (ni-1)/2;
-      else sinds[i] = ix -ni/2;
-    }
+  for (unsigned int i=0; i<_ndim; i++) {
+    sinds[i] = std::ceil(coord[i]) - ni/2;
   }
+
   for (unsigned int i=_ndim; i<5; i++) sinds[i] = 0;
 
   return(ni);
-- 
GitLab