diff --git a/src/pymatlib/core/cpp/include/pymatlib_interpolators/interpolate_binary_search_cpp.h b/src/pymatlib/core/cpp/include/pymatlib_interpolators/interpolate_binary_search_cpp.h index 49fb0d6474cb11b5ff72b27fd2fd078d9860ff5a..1e1361d2ed2c800b5c6cb9183f07aea662f2f732 100644 --- a/src/pymatlib/core/cpp/include/pymatlib_interpolators/interpolate_binary_search_cpp.h +++ b/src/pymatlib/core/cpp/include/pymatlib_interpolators/interpolate_binary_search_cpp.h @@ -33,12 +33,13 @@ double interpolate_binary_search_cpp( } } - // Linear interpolation - const double x1 = arrs.y_bs[right]; - const double x2 = arrs.y_bs[left]; - const double y1 = arrs.x_bs[right]; - const double y2 = arrs.x_bs[left]; + // Get interpolation points + const double x1 = arrs.x_bs[left]; + const double x2 = arrs.x_bs[right]; + const double y1 = arrs.y_bs[left]; + const double y2 = arrs.y_bs[right]; - const double slope = (y2 - y1) / (x2 - x1); - return y1 + slope * (y_target - x1); + // Linear interpolation + const double inv_slope = (x2 - x1) / (y2 - y1); + return x1 + inv_slope * (y_target - y1); }