diff options
Diffstat (limited to 'src/financial.c')
-rw-r--r-- | src/financial.c | 51 |
1 files changed, 20 insertions, 31 deletions
diff --git a/src/financial.c b/src/financial.c index 337ff93..8bb208d 100644 --- a/src/financial.c +++ b/src/financial.c @@ -15,7 +15,7 @@ #include "mp.h" static void -calc_ctrm(MathEquation *equation, MPNumber *t, MPNumber *pint, MPNumber *fv, MPNumber *pv) +calc_ctrm(MPNumber *t, MPNumber *pint, MPNumber *fv, MPNumber *pv) { /* Cterm - pint (periodic interest rate). @@ -41,7 +41,6 @@ calc_ctrm(MathEquation *equation, MPNumber *t, MPNumber *pint, MPNumber *fv, MPN mp_clear(&MP4); } - static void calc_ddb(MathEquation *equation, MPNumber *t, MPNumber *cost, MPNumber *life, MPNumber *period) { @@ -60,15 +59,14 @@ calc_ddb(MathEquation *equation, MPNumber *t, MPNumber *cost, MPNumber *life, MP * */ - int i; - int len; + long len; MPNumber MPbv = mp_new(); MPNumber MP1 = mp_new(); MPNumber MP2 = mp_new(); mp_set_from_integer(0, &MPbv); len = mp_to_integer(period); - for (i = 0; i < len; i++) { + for (long i = 0; i < len; i++) { mp_subtract(cost, &MPbv, &MP1); mp_multiply_integer(&MP1, 2, &MP2); mp_divide(&MP2, life, t); @@ -86,9 +84,8 @@ calc_ddb(MathEquation *equation, MPNumber *t, MPNumber *cost, MPNumber *life, MP mp_clear(&MP2); } - static void -calc_fv(MathEquation *equation, MPNumber *t, MPNumber *pmt, MPNumber *pint, MPNumber *n) +calc_fv(MPNumber *t, MPNumber *pmt, MPNumber *pint, MPNumber *n) { /* Fv - pmt (periodic payment). @@ -115,9 +112,8 @@ calc_fv(MathEquation *equation, MPNumber *t, MPNumber *pmt, MPNumber *pint, MPNu mp_clear(&MP4); } - static void -calc_gpm(MathEquation *equation, MPNumber *t, MPNumber *cost, MPNumber *margin) +calc_gpm(MPNumber *t, MPNumber *cost, MPNumber *margin) { /* Gpm - cost (cost of sale). @@ -137,9 +133,8 @@ calc_gpm(MathEquation *equation, MPNumber *t, MPNumber *cost, MPNumber *margin) mp_clear(&MP2); } - static void -calc_pmt(MathEquation *equation, MPNumber *t, MPNumber *prin, MPNumber *pint, MPNumber *n) +calc_pmt(MPNumber *t, MPNumber *prin, MPNumber *pint, MPNumber *n) { /* Pmt - prin (principal). @@ -168,9 +163,8 @@ calc_pmt(MathEquation *equation, MPNumber *t, MPNumber *prin, MPNumber *pint, MP mp_clear(&MP4); } - static void -calc_pv(MathEquation *equation, MPNumber *t, MPNumber *pmt, MPNumber *pint, MPNumber *n) +calc_pv(MPNumber *t, MPNumber *pmt, MPNumber *pint, MPNumber *n) { /* Pv - pmt (periodic payment). @@ -199,9 +193,8 @@ calc_pv(MathEquation *equation, MPNumber *t, MPNumber *pmt, MPNumber *pint, MPNu mp_clear(&MP4); } - static void -calc_rate(MathEquation *equation, MPNumber *t, MPNumber *fv, MPNumber *pv, MPNumber *n) +calc_rate(MPNumber *t, MPNumber *fv, MPNumber *pv, MPNumber *n) { /* Rate - fv (future value). @@ -228,9 +221,8 @@ calc_rate(MathEquation *equation, MPNumber *t, MPNumber *fv, MPNumber *pv, MPNum mp_clear(&MP4); } - static void -calc_sln(MathEquation *equation, MPNumber *t, MPNumber *cost, MPNumber *salvage, MPNumber *life) +calc_sln(MPNumber *t, MPNumber *cost, MPNumber *salvage, MPNumber *life) { /* Sln - cost (cost of the asset). @@ -246,9 +238,8 @@ calc_sln(MathEquation *equation, MPNumber *t, MPNumber *cost, MPNumber *salvage, mp_clear(&MP1); } - static void -calc_syd(MathEquation *equation, MPNumber *t, MPNumber *cost, MPNumber *salvage, MPNumber *life, MPNumber *period) +calc_syd(MPNumber *t, MPNumber *cost, MPNumber *salvage, MPNumber *life, MPNumber *period) { /* Syd - cost (cost of the asset). @@ -281,9 +272,8 @@ calc_syd(MathEquation *equation, MPNumber *t, MPNumber *cost, MPNumber *salvage, mp_clear(&MP4); } - static void -calc_term(MathEquation *equation, MPNumber *t, MPNumber *pmt, MPNumber *fv, MPNumber *pint) +calc_term(MPNumber *t, MPNumber *pmt, MPNumber *fv, MPNumber *pint) { /* Term - pmt (periodic payment). @@ -312,41 +302,40 @@ calc_term(MathEquation *equation, MPNumber *t, MPNumber *pmt, MPNumber *fv, MPNu mp_clear(&MP4); } - void do_finc_expression(MathEquation *equation, int function, MPNumber *arg1, MPNumber *arg2, MPNumber *arg3, MPNumber *arg4) { MPNumber result = mp_new(); switch (function) { case FINC_CTRM_DIALOG: - calc_ctrm(equation, &result, arg1, arg2, arg3); + calc_ctrm(&result, arg1, arg2, arg3); break; case FINC_DDB_DIALOG: calc_ddb(equation, &result, arg1, arg2, arg3); break; case FINC_FV_DIALOG: - calc_fv(equation, &result, arg1, arg2, arg3); + calc_fv(&result, arg1, arg2, arg3); break; case FINC_GPM_DIALOG: - calc_gpm(equation, &result, arg1, arg2); + calc_gpm(&result, arg1, arg2); break; case FINC_PMT_DIALOG: - calc_pmt(equation, &result, arg1, arg2, arg3); + calc_pmt(&result, arg1, arg2, arg3); break; case FINC_PV_DIALOG: - calc_pv(equation, &result, arg1, arg2, arg3); + calc_pv(&result, arg1, arg2, arg3); break; case FINC_RATE_DIALOG: - calc_rate(equation, &result, arg1, arg2, arg3); + calc_rate(&result, arg1, arg2, arg3); break; case FINC_SLN_DIALOG: - calc_sln(equation, &result, arg1, arg2, arg3); + calc_sln(&result, arg1, arg2, arg3); break; case FINC_SYD_DIALOG: - calc_syd(equation, &result, arg1, arg2, arg3, arg4); + calc_syd(&result, arg1, arg2, arg3, arg4); break; case FINC_TERM_DIALOG: - calc_term(equation, &result, arg1, arg2, arg3); + calc_term(&result, arg1, arg2, arg3); break; } math_equation_set_number(equation, &result); |