From c2d72fa9108461eb8f299621e771c94e792fd581 Mon Sep 17 00:00:00 2001 From: Neil Williams Date: Mon, 13 Feb 2006 11:22:36 +0000 Subject: [PATCH] make it clearer that the return value of 0.0 is an error by using g_return_val_if_fail - cannot use assert as return value needs to be modified. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13254 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/calculation/fin.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/calculation/fin.c b/src/calculation/fin.c index 830e78e2ce..4c388c0025 100644 --- a/src/calculation/fin.c +++ b/src/calculation/fin.c @@ -1199,6 +1199,7 @@ #include #include #include +#include #define FIN_STATICS #include "finvar.h" @@ -1245,7 +1246,7 @@ _B (double eint, unsigned beg) { /* if eint == 0.0, all processing _must_ stop or a recursive loop will start. */ - if (eint == 0.0) { return 0.0; } + g_return_val_if_fail(eint == 0.0, 0.0); return (1.0 + eint * (double) beg) / eint; } /* _B */ @@ -1254,10 +1255,8 @@ _B (double eint, unsigned beg) static double _C (double eint, double pmt, unsigned beg) { - double temp = _B (eint, beg); - unsigned check = (int)temp; - if(check) return pmt * temp; - return 0.0; + g_return_val_if_fail(eint == 0.0, 0.0); + return pmt * _B (eint, beg); } /* _C */ /* compute Number of Periods from preset data */ @@ -1427,11 +1426,12 @@ _fi_calc_payment (unsigned per, /* number of periods */ unsigned disc,/* discrete/continuous compounding */ unsigned bep) /* beginning/end of period payment */ { - double eint = eff_int (nint / 100.0, CF, PF, disc); - double AA = _A (eint, per); - double BB = _B (eint, bep); - if(BB == 0.0) return 0.0; + double eint, AA, BB; + eint = eff_int (nint / 100.0, CF, PF, disc); + g_return_val_if_fail(eint == 0.0, 0.0); + AA = _A (eint, per); + BB = _B (eint, bep); return -(fv + pv * (AA + 1.0)) / (AA * BB); } /* _fi_calc_payment */