From 5b134ac31419fea11db1dda25315d1bd192d8430 Mon Sep 17 00:00:00 2001 From: Kai Striega Date: Thu, 4 Apr 2024 13:05:36 +1100 Subject: [PATCH] ENH: Perform C division where appropriate This PR performs C division where we know that we cannot encounter a division by zero. --- numpy_financial/_cfinancial.pyx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/numpy_financial/_cfinancial.pyx b/numpy_financial/_cfinancial.pyx index f095f5c..0956910 100644 --- a/numpy_financial/_cfinancial.pyx +++ b/numpy_financial/_cfinancial.pyx @@ -13,12 +13,16 @@ cdef double nper_inner_loop( return INFINITY if rate_ == 0.0: - return -(fv_ + pv_) / pmt_ + with cython.cdivision(True): + # We know that pmt_ != 0, we don't need to check for division by 0 + return -(fv_ + pv_) / pmt_ if rate_ <= -1.0: return NAN - z = pmt_ * (1.0 + rate_ * when_) / rate_ + with cython.cdivision(True): + # We know that rate_ != 0, we don't need to check for division by 0 + z = pmt_ * (1.0 + rate_ * when_) / rate_ return log((-fv_ + z) / (pv_ + z)) / log(1.0 + rate_)