#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Compound Interest";

double f_if(float i, float n) {
        float r20464 = 100.0f;
        float r20465 = 1.0f;
        float r20466 = i;
        float r20467 = n;
        float r20468 = r20466 / r20467;
        float r20469 = r20465 + r20468;
        float r20470 = pow(r20469, r20467);
        float r20471 = r20470 - r20465;
        float r20472 = r20471 / r20468;
        float r20473 = r20464 * r20472;
        return r20473;
}

double f_id(double i, double n) {
        double r20474 = 100.0;
        double r20475 = 1.0;
        double r20476 = i;
        double r20477 = n;
        double r20478 = r20476 / r20477;
        double r20479 = r20475 + r20478;
        double r20480 = pow(r20479, r20477);
        double r20481 = r20480 - r20475;
        double r20482 = r20481 / r20478;
        double r20483 = r20474 * r20482;
        return r20483;
}


double f_of(float i, float n) {
        float r20484 = i;
        float r20485 = -0.058764479831025576f;
        bool r20486 = r20484 <= r20485;
        float r20487 = 100.0f;
        float r20488 = 1.0f;
        float r20489 = n;
        float r20490 = r20484 / r20489;
        float r20491 = r20488 + r20490;
        float r20492 = pow(r20491, r20489);
        float r20493 = r20492 * (r20492 * r20492);
        float r20494 = r20493 - r20488;
        float r20495 = r20492 + r20488;
        float r20496 = r20492 * r20492;
        float r20497 = r20495 + r20496;
        float r20498 = r20494 / r20497;
        float r20499 = r20498 / r20490;
        float r20500 = r20487 * r20499;
        float r20501 = 4.370354623930509e-12f;
        bool r20502 = r20484 <= r20501;
        float r20503 = 50.0f;
        float r20504 = r20503 * r20484;
        float r20505 = r20487 + r20504;
        float r20506 = 16.666666666666668f;
        float r20507 = r20484 * r20484;
        float r20508 = r20506 * r20507;
        float r20509 = log(r20508);
        float r20510 = exp(r20509);
        float r20511 = r20505 + r20510;
        float r20512 = r20489 * r20511;
        float r20513 = r20492 / r20490;
        float r20514 = r20489 / r20484;
        float r20515 = r20513 - r20514;
        float r20516 = r20487 * r20515;
        float r20517 = r20502 ? r20512 : r20516;
        float r20518 = r20486 ? r20500 : r20517;
        return r20518;
}

double f_od(double i, double n) {
        double r20519 = i;
        double r20520 = -0.058764479831025576;
        bool r20521 = r20519 <= r20520;
        double r20522 = 100.0;
        double r20523 = 1.0;
        double r20524 = n;
        double r20525 = r20519 / r20524;
        double r20526 = r20523 + r20525;
        double r20527 = pow(r20526, r20524);
        double r20528 = r20527 * (r20527 * r20527);
        double r20529 = r20528 - r20523;
        double r20530 = r20527 + r20523;
        double r20531 = r20527 * r20527;
        double r20532 = r20530 + r20531;
        double r20533 = r20529 / r20532;
        double r20534 = r20533 / r20525;
        double r20535 = r20522 * r20534;
        double r20536 = 4.370354623930509e-12;
        bool r20537 = r20519 <= r20536;
        double r20538 = 50.0;
        double r20539 = r20538 * r20519;
        double r20540 = r20522 + r20539;
        double r20541 = 16.666666666666668;
        double r20542 = r20519 * r20519;
        double r20543 = r20541 * r20542;
        double r20544 = log(r20543);
        double r20545 = exp(r20544);
        double r20546 = r20540 + r20545;
        double r20547 = r20524 * r20546;
        double r20548 = r20527 / r20525;
        double r20549 = r20524 / r20519;
        double r20550 = r20548 - r20549;
        double r20551 = r20522 * r20550;
        double r20552 = r20537 ? r20547 : r20551;
        double r20553 = r20521 ? r20535 : r20552;
        return r20553;
}

void mpfr_fmod2(mpfr_t r, mpfr_t n, mpfr_t d, mpfr_rnd_t rmd) {
        mpfr_fmod(r, n, d, rmd);
        if (mpfr_cmp_ui(r, 0) < 0) mpfr_add(r, r, d, rmd);
}


static mpfr_t r20554, r20555, r20556, r20557, r20558, r20559, r20560, r20561, r20562, r20563;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r20554, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r20555, "1", 10, MPFR_RNDN);
        mpfr_init(r20556);
        mpfr_init(r20557);
        mpfr_init(r20558);
        mpfr_init(r20559);
        mpfr_init(r20560);
        mpfr_init(r20561);
        mpfr_init(r20562);
        mpfr_init(r20563);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r20556, i, MPFR_RNDN);
        mpfr_set_d(r20557, n, MPFR_RNDN);
        mpfr_div(r20558, r20556, r20557, MPFR_RNDN);
        mpfr_add(r20559, r20555, r20558, MPFR_RNDN);
        mpfr_pow(r20560, r20559, r20557, MPFR_RNDN);
        mpfr_sub(r20561, r20560, r20555, MPFR_RNDN);
        mpfr_div(r20562, r20561, r20558, MPFR_RNDN);
        mpfr_mul(r20563, r20554, r20562, MPFR_RNDN);
        return mpfr_get_d(r20563, MPFR_RNDN);
}

static mpfr_t r20564, r20565, r20566, r20567, r20568, r20569, r20570, r20571, r20572, r20573, r20574, r20575, r20576, r20577, r20578, r20579, r20580, r20581, r20582, r20583, r20584, r20585, r20586, r20587, r20588, r20589, r20590, r20591, r20592, r20593, r20594, r20595, r20596, r20597, r20598;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r20564);
        mpfr_init_set_str(r20565, "-0.058764479831025576", 10, MPFR_RNDN);
        mpfr_init(r20566);
        mpfr_init_set_str(r20567, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r20568, "1", 10, MPFR_RNDN);
        mpfr_init(r20569);
        mpfr_init(r20570);
        mpfr_init(r20571);
        mpfr_init(r20572);
        mpfr_init(r20573);
        mpfr_init(r20574);
        mpfr_init(r20575);
        mpfr_init(r20576);
        mpfr_init(r20577);
        mpfr_init(r20578);
        mpfr_init(r20579);
        mpfr_init(r20580);
        mpfr_init_set_str(r20581, "4.370354623930509e-12", 10, MPFR_RNDN);
        mpfr_init(r20582);
        mpfr_init_set_str(r20583, "50", 10, MPFR_RNDN);
        mpfr_init(r20584);
        mpfr_init(r20585);
        mpfr_init_set_str(r20586, "50/3", 10, MPFR_RNDN);
        mpfr_init(r20587);
        mpfr_init(r20588);
        mpfr_init(r20589);
        mpfr_init(r20590);
        mpfr_init(r20591);
        mpfr_init(r20592);
        mpfr_init(r20593);
        mpfr_init(r20594);
        mpfr_init(r20595);
        mpfr_init(r20596);
        mpfr_init(r20597);
        mpfr_init(r20598);
}

double f_fm(double i, double n) {
        mpfr_set_d(r20564, i, MPFR_RNDN);
        ;
        mpfr_set_si(r20566, mpfr_cmp(r20564, r20565) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r20569, n, MPFR_RNDN);
        mpfr_div(r20570, r20564, r20569, MPFR_RNDN);
        mpfr_add(r20571, r20568, r20570, MPFR_RNDN);
        mpfr_pow(r20572, r20571, r20569, MPFR_RNDN);
        mpfr_mul(r20573, r20572, r20572, MPFR_RNDN); mpfr_mul(r20573, r20573, r20572, MPFR_RNDN);
        mpfr_sub(r20574, r20573, r20568, MPFR_RNDN);
        mpfr_add(r20575, r20572, r20568, MPFR_RNDN);
        mpfr_sqr(r20576, r20572, MPFR_RNDN);
        mpfr_add(r20577, r20575, r20576, MPFR_RNDN);
        mpfr_div(r20578, r20574, r20577, MPFR_RNDN);
        mpfr_div(r20579, r20578, r20570, MPFR_RNDN);
        mpfr_mul(r20580, r20567, r20579, MPFR_RNDN);
        ;
        mpfr_set_si(r20582, mpfr_cmp(r20564, r20581) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r20584, r20583, r20564, MPFR_RNDN);
        mpfr_add(r20585, r20567, r20584, MPFR_RNDN);
        ;
        mpfr_sqr(r20587, r20564, MPFR_RNDN);
        mpfr_mul(r20588, r20586, r20587, MPFR_RNDN);
        mpfr_log(r20589, r20588, MPFR_RNDN);
        mpfr_exp(r20590, r20589, MPFR_RNDN);
        mpfr_add(r20591, r20585, r20590, MPFR_RNDN);
        mpfr_mul(r20592, r20569, r20591, MPFR_RNDN);
        mpfr_div(r20593, r20572, r20570, MPFR_RNDN);
        mpfr_div(r20594, r20569, r20564, MPFR_RNDN);
        mpfr_sub(r20595, r20593, r20594, MPFR_RNDN);
        mpfr_mul(r20596, r20567, r20595, MPFR_RNDN);
        if (mpfr_get_si(r20582, MPFR_RNDN)) { mpfr_set(r20597, r20592, MPFR_RNDN); } else { mpfr_set(r20597, r20596, MPFR_RNDN); };
        if (mpfr_get_si(r20566, MPFR_RNDN)) { mpfr_set(r20598, r20580, MPFR_RNDN); } else { mpfr_set(r20598, r20597, MPFR_RNDN); };
        return mpfr_get_d(r20598, MPFR_RNDN);
}

static mpfr_t r20599, r20600, r20601, r20602, r20603, r20604, r20605, r20606, r20607, r20608, r20609, r20610, r20611, r20612, r20613, r20614, r20615, r20616, r20617, r20618, r20619, r20620, r20621, r20622, r20623, r20624, r20625, r20626, r20627, r20628, r20629, r20630, r20631, r20632, r20633;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r20599);
        mpfr_init_set_str(r20600, "-0.058764479831025576", 10, MPFR_RNDN);
        mpfr_init(r20601);
        mpfr_init_set_str(r20602, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r20603, "1", 10, MPFR_RNDN);
        mpfr_init(r20604);
        mpfr_init(r20605);
        mpfr_init(r20606);
        mpfr_init(r20607);
        mpfr_init(r20608);
        mpfr_init(r20609);
        mpfr_init(r20610);
        mpfr_init(r20611);
        mpfr_init(r20612);
        mpfr_init(r20613);
        mpfr_init(r20614);
        mpfr_init(r20615);
        mpfr_init_set_str(r20616, "4.370354623930509e-12", 10, MPFR_RNDN);
        mpfr_init(r20617);
        mpfr_init_set_str(r20618, "50", 10, MPFR_RNDN);
        mpfr_init(r20619);
        mpfr_init(r20620);
        mpfr_init_set_str(r20621, "50/3", 10, MPFR_RNDN);
        mpfr_init(r20622);
        mpfr_init(r20623);
        mpfr_init(r20624);
        mpfr_init(r20625);
        mpfr_init(r20626);
        mpfr_init(r20627);
        mpfr_init(r20628);
        mpfr_init(r20629);
        mpfr_init(r20630);
        mpfr_init(r20631);
        mpfr_init(r20632);
        mpfr_init(r20633);
}

double f_dm(double i, double n) {
        mpfr_set_d(r20599, i, MPFR_RNDN);
        ;
        mpfr_set_si(r20601, mpfr_cmp(r20599, r20600) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r20604, n, MPFR_RNDN);
        mpfr_div(r20605, r20599, r20604, MPFR_RNDN);
        mpfr_add(r20606, r20603, r20605, MPFR_RNDN);
        mpfr_pow(r20607, r20606, r20604, MPFR_RNDN);
        mpfr_mul(r20608, r20607, r20607, MPFR_RNDN); mpfr_mul(r20608, r20608, r20607, MPFR_RNDN);
        mpfr_sub(r20609, r20608, r20603, MPFR_RNDN);
        mpfr_add(r20610, r20607, r20603, MPFR_RNDN);
        mpfr_sqr(r20611, r20607, MPFR_RNDN);
        mpfr_add(r20612, r20610, r20611, MPFR_RNDN);
        mpfr_div(r20613, r20609, r20612, MPFR_RNDN);
        mpfr_div(r20614, r20613, r20605, MPFR_RNDN);
        mpfr_mul(r20615, r20602, r20614, MPFR_RNDN);
        ;
        mpfr_set_si(r20617, mpfr_cmp(r20599, r20616) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r20619, r20618, r20599, MPFR_RNDN);
        mpfr_add(r20620, r20602, r20619, MPFR_RNDN);
        ;
        mpfr_sqr(r20622, r20599, MPFR_RNDN);
        mpfr_mul(r20623, r20621, r20622, MPFR_RNDN);
        mpfr_log(r20624, r20623, MPFR_RNDN);
        mpfr_exp(r20625, r20624, MPFR_RNDN);
        mpfr_add(r20626, r20620, r20625, MPFR_RNDN);
        mpfr_mul(r20627, r20604, r20626, MPFR_RNDN);
        mpfr_div(r20628, r20607, r20605, MPFR_RNDN);
        mpfr_div(r20629, r20604, r20599, MPFR_RNDN);
        mpfr_sub(r20630, r20628, r20629, MPFR_RNDN);
        mpfr_mul(r20631, r20602, r20630, MPFR_RNDN);
        if (mpfr_get_si(r20617, MPFR_RNDN)) { mpfr_set(r20632, r20627, MPFR_RNDN); } else { mpfr_set(r20632, r20631, MPFR_RNDN); };
        if (mpfr_get_si(r20601, MPFR_RNDN)) { mpfr_set(r20633, r20615, MPFR_RNDN); } else { mpfr_set(r20633, r20632, MPFR_RNDN); };
        return mpfr_get_d(r20633, MPFR_RNDN);
}

