diff --git a/src/numpy_pandas/numerical_methods.py b/src/numpy_pandas/numerical_methods.py index ff90bb9..aad5fce 100644 --- a/src/numpy_pandas/numerical_methods.py +++ b/src/numpy_pandas/numerical_methods.py @@ -146,15 +146,19 @@ def bisection_method( epsilon: float = 1e-10, max_iter: int = 100, ) -> float: - if f(a) * f(b) > 0: + fa = f(a) + fb = f(b) + if fa * fb > 0: raise ValueError("Function must have opposite signs at endpoints") for _ in range(max_iter): c = (a + b) / 2 fc = f(c) if abs(fc) < epsilon: return c - if f(a) * fc < 0: + if fa * fc < 0: b = c + fb = fc # Only recalculate f(b) else: a = c + fa = fc # Only recalculate f(a) return (a + b) / 2