From 9d3da81247c5de80260a3757ec78e988be340907 Mon Sep 17 00:00:00 2001
From: Rahil Doshi <rahil.doshi@fau.de>
Date: Fri, 28 Feb 2025 17:47:39 +0100
Subject: [PATCH] Enhance check_equidistant with configurable tolerance
 parameters

---
 src/pymatlib/core/data_handler.py | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/pymatlib/core/data_handler.py b/src/pymatlib/core/data_handler.py
index 5c4232e..5cc1152 100644
--- a/src/pymatlib/core/data_handler.py
+++ b/src/pymatlib/core/data_handler.py
@@ -258,18 +258,20 @@ def thousand_times(q: Union[float, np.ndarray]) -> Union[float, np.ndarray]:
 
 
 # Moved from interpolators.py to data_handler.py
-def check_equidistant(temp: np.ndarray) -> float:
+def check_equidistant(temp: np.ndarray, rtol: float = 1e-5, atol: float = 1e-10) -> float:
     """
     Tests if the temperature values are equidistant.
 
     :param temp: Array of temperature values.
+    :param rtol: Relative tolerance for comparison.
+    :param atol: Absolute tolerance for comparison.
     :return: The common difference if equidistant, otherwise 0.
     """
     if len(temp) < 2:
-        raise ValueError(f"{temp} array has length < 2")
+        raise ValueError(f"Array has length < 2")
 
     temperature_diffs = np.diff(temp)
-    if np.allclose(temperature_diffs, temperature_diffs[0], atol=1e-10):
+    if np.allclose(temperature_diffs, temperature_diffs[0], rtol=rtol, atol=atol):
         return float(temperature_diffs[0])
     return 0.0
 
-- 
GitLab