From 2c380f8df666fcebd979511f33e7d72291b389cd Mon Sep 17 00:00:00 2001 From: gonzo Date: Fri, 19 May 2023 22:28:10 +0200 Subject: moved from floats to doubles for added precision --- mortgage_loan.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'mortgage_loan.c') diff --git a/mortgage_loan.c b/mortgage_loan.c index 2959214..a9ab28b 100644 --- a/mortgage_loan.c +++ b/mortgage_loan.c @@ -1,6 +1,6 @@ #include "loans.h" -contract *mort_init(int n, int d, float r, float P) { +contract *mort_init(int n, int d, double r, double P) { if ((n < 0)) return NULL; if ((d >= n)||(d < 0)) return NULL; contract *c = (contract *)calloc(1, sizeof(contract)); @@ -12,13 +12,13 @@ contract *mort_init(int n, int d, float r, float P) { return c; } -float mort_update(contract *c) { +double mort_update(contract *c) { if (c->k > c->n) - return 0.0f; + return 0.0; if (c->k == c->d) { - c->A = - (c->P * c->r * powf(1.0f + c->r, (float)(c->n - c->k))); - c->A = c->A / (1.0f - powf(1.0f + c->r, (float)(c->n - c->k))); + c->A = - (c->P * c->r * pow(1.0 + c->r, (double)(c->n - c->k))); + c->A = c->A / (1.0 - pow(1.0 + c->r, (double)(c->n - c->k))); } c->k++; c->I = c->r * c->P; -- cgit v1.2.3