[Gnucash-changes] r13255 - gnucash/trunk/src/calculation -
correcting the logic in the error state
Neil Williams
codehelp at cvs.gnucash.org
Mon Feb 13 09:06:49 EST 2006
Author: codehelp
Date: 2006-02-13 09:06:48 -0500 (Mon, 13 Feb 2006)
New Revision: 13255
Trac: http://svn.gnucash.org/trac/changeset/13255
Modified:
gnucash/trunk/src/calculation/fin.c
Log:
correcting the logic in the error state
Modified: gnucash/trunk/src/calculation/fin.c
===================================================================
--- gnucash/trunk/src/calculation/fin.c 2006-02-13 11:22:36 UTC (rev 13254)
+++ gnucash/trunk/src/calculation/fin.c 2006-02-13 14:06:48 UTC (rev 13255)
@@ -1246,8 +1246,7 @@
{
/* if eint == 0.0, all processing _must_ stop or
a recursive loop will start. */
- g_return_val_if_fail(eint == 0.0, 0.0);
-
+ g_return_val_if_fail(eint != 0.0, 0.0);
return (1.0 + eint * (double) beg) / eint;
} /* _B */
@@ -1255,8 +1254,8 @@
static double
_C (double eint, double pmt, unsigned beg)
{
- g_return_val_if_fail(eint == 0.0, 0.0);
- return pmt * _B (eint, beg);
+ g_return_val_if_fail(eint != 0.0, 0.0);
+ return pmt * _B(eint, beg);
} /* _C */
/* compute Number of Periods from preset data */
@@ -1288,7 +1287,7 @@
{
double eint = eff_int (nint / 100.0, CF, PF, disc);
double CC = _C (eint, pmt, bep);
- if(CC) CC = (CC - fv) / (CC + pv);
+ CC = (CC - fv) / (CC + pv);
return (CC > 0.0) ? log (CC) / log (1.0 + eint) : 0.0;
} /* _fi_calc_num_payments */
@@ -1426,12 +1425,11 @@
unsigned disc,/* discrete/continuous compounding */
unsigned bep) /* beginning/end of period payment */
{
- double eint, AA, BB;
+ double eint = eff_int (nint / 100.0, CF, PF, disc);
+ double AA = _A (eint, per);
+ double BB = _B (eint, bep);
+ g_return_val_if_fail(BB != 0.0, 0.0);
- 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 */
@@ -1530,7 +1528,7 @@
double AA = _A (eint, per);
double CC = _C (eint, pmt, bep);
double D = (AA + 1.0) / (1.0 + eint);
- if(CC == 0.0) return 0.0;
+ g_return_val_if_fail(CC != 0.0, 0.0);
return (double) per *(pv + CC) * D - (AA * CC) / eint;
} /* fip */
More information about the gnucash-changes
mailing list