[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