#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 r20452 = 100.0f;
        float r20453 = 1.0f;
        float r20454 = i;
        float r20455 = n;
        float r20456 = r20454 / r20455;
        float r20457 = r20453 + r20456;
        float r20458 = pow(r20457, r20455);
        float r20459 = r20458 - r20453;
        float r20460 = r20459 / r20456;
        float r20461 = r20452 * r20460;
        return r20461;
}

double f_id(double i, double n) {
        double r20462 = 100.0;
        double r20463 = 1.0;
        double r20464 = i;
        double r20465 = n;
        double r20466 = r20464 / r20465;
        double r20467 = r20463 + r20466;
        double r20468 = pow(r20467, r20465);
        double r20469 = r20468 - r20463;
        double r20470 = r20469 / r20466;
        double r20471 = r20462 * r20470;
        return r20471;
}


double f_of(float i, float n) {
        float r20472 = i;
        float r20473 = -0.058764479831025576f;
        bool r20474 = r20472 <= r20473;
        float r20475 = 100.0f;
        float r20476 = 1.0f;
        float r20477 = n;
        float r20478 = r20472 / r20477;
        float r20479 = r20476 + r20478;
        float r20480 = pow(r20479, r20477);
        float r20481 = r20480 * (r20480 * r20480);
        float r20482 = r20481 - r20476;
        float r20483 = r20480 + r20476;
        float r20484 = r20480 * r20480;
        float r20485 = r20483 + r20484;
        float r20486 = r20482 / r20485;
        float r20487 = r20486 / r20478;
        float r20488 = r20475 * r20487;
        float r20489 = 4.370354623930509e-12f;
        bool r20490 = r20472 <= r20489;
        float r20491 = 50.0f;
        float r20492 = r20491 * r20472;
        float r20493 = r20475 + r20492;
        float r20494 = 16.666666666666668f;
        float r20495 = r20472 * r20472;
        float r20496 = r20494 * r20495;
        float r20497 = log(r20496);
        float r20498 = exp(r20497);
        float r20499 = r20493 + r20498;
        float r20500 = r20477 * r20499;
        float r20501 = r20480 / r20478;
        float r20502 = r20477 / r20472;
        float r20503 = r20501 - r20502;
        float r20504 = r20475 * r20503;
        float r20505 = r20490 ? r20500 : r20504;
        float r20506 = r20474 ? r20488 : r20505;
        return r20506;
}

double f_od(double i, double n) {
        double r20507 = i;
        double r20508 = -0.058764479831025576;
        bool r20509 = r20507 <= r20508;
        double r20510 = 100.0;
        double r20511 = 1.0;
        double r20512 = n;
        double r20513 = r20507 / r20512;
        double r20514 = r20511 + r20513;
        double r20515 = pow(r20514, r20512);
        double r20516 = r20515 * (r20515 * r20515);
        double r20517 = r20516 - r20511;
        double r20518 = r20515 + r20511;
        double r20519 = r20515 * r20515;
        double r20520 = r20518 + r20519;
        double r20521 = r20517 / r20520;
        double r20522 = r20521 / r20513;
        double r20523 = r20510 * r20522;
        double r20524 = 4.370354623930509e-12;
        bool r20525 = r20507 <= r20524;
        double r20526 = 50.0;
        double r20527 = r20526 * r20507;
        double r20528 = r20510 + r20527;
        double r20529 = 16.666666666666668;
        double r20530 = r20507 * r20507;
        double r20531 = r20529 * r20530;
        double r20532 = log(r20531);
        double r20533 = exp(r20532);
        double r20534 = r20528 + r20533;
        double r20535 = r20512 * r20534;
        double r20536 = r20515 / r20513;
        double r20537 = r20512 / r20507;
        double r20538 = r20536 - r20537;
        double r20539 = r20510 * r20538;
        double r20540 = r20525 ? r20535 : r20539;
        double r20541 = r20509 ? r20523 : r20540;
        return r20541;
}

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 r20542, r20543, r20544, r20545, r20546, r20547, r20548, r20549, r20550, r20551;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r20542, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r20543, "1", 10, MPFR_RNDN);
        mpfr_init(r20544);
        mpfr_init(r20545);
        mpfr_init(r20546);
        mpfr_init(r20547);
        mpfr_init(r20548);
        mpfr_init(r20549);
        mpfr_init(r20550);
        mpfr_init(r20551);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r20544, i, MPFR_RNDN);
        mpfr_set_d(r20545, n, MPFR_RNDN);
        mpfr_div(r20546, r20544, r20545, MPFR_RNDN);
        mpfr_add(r20547, r20543, r20546, MPFR_RNDN);
        mpfr_pow(r20548, r20547, r20545, MPFR_RNDN);
        mpfr_sub(r20549, r20548, r20543, MPFR_RNDN);
        mpfr_div(r20550, r20549, r20546, MPFR_RNDN);
        mpfr_mul(r20551, r20542, r20550, MPFR_RNDN);
        return mpfr_get_d(r20551, MPFR_RNDN);
}

static mpfr_t r20552, r20553, r20554, r20555, r20556, r20557, r20558, r20559, r20560, r20561, r20562, r20563, r20564, r20565, r20566, r20567, r20568, r20569, r20570, r20571, r20572, r20573, r20574, r20575, r20576, r20577, r20578, r20579, r20580, r20581, r20582, r20583, r20584, r20585, r20586;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r20552);
        mpfr_init_set_str(r20553, "-0.058764479831025576", 10, MPFR_RNDN);
        mpfr_init(r20554);
        mpfr_init_set_str(r20555, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r20556, "1", 10, MPFR_RNDN);
        mpfr_init(r20557);
        mpfr_init(r20558);
        mpfr_init(r20559);
        mpfr_init(r20560);
        mpfr_init(r20561);
        mpfr_init(r20562);
        mpfr_init(r20563);
        mpfr_init(r20564);
        mpfr_init(r20565);
        mpfr_init(r20566);
        mpfr_init(r20567);
        mpfr_init(r20568);
        mpfr_init_set_str(r20569, "4.370354623930509e-12", 10, MPFR_RNDN);
        mpfr_init(r20570);
        mpfr_init_set_str(r20571, "50", 10, MPFR_RNDN);
        mpfr_init(r20572);
        mpfr_init(r20573);
        mpfr_init_set_str(r20574, "50/3", 10, MPFR_RNDN);
        mpfr_init(r20575);
        mpfr_init(r20576);
        mpfr_init(r20577);
        mpfr_init(r20578);
        mpfr_init(r20579);
        mpfr_init(r20580);
        mpfr_init(r20581);
        mpfr_init(r20582);
        mpfr_init(r20583);
        mpfr_init(r20584);
        mpfr_init(r20585);
        mpfr_init(r20586);
}

double f_fm(double i, double n) {
        mpfr_set_d(r20552, i, MPFR_RNDN);
        ;
        mpfr_set_si(r20554, mpfr_cmp(r20552, r20553) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r20557, n, MPFR_RNDN);
        mpfr_div(r20558, r20552, r20557, MPFR_RNDN);
        mpfr_add(r20559, r20556, r20558, MPFR_RNDN);
        mpfr_pow(r20560, r20559, r20557, MPFR_RNDN);
        mpfr_mul(r20561, r20560, r20560, MPFR_RNDN); mpfr_mul(r20561, r20561, r20560, MPFR_RNDN);
        mpfr_sub(r20562, r20561, r20556, MPFR_RNDN);
        mpfr_add(r20563, r20560, r20556, MPFR_RNDN);
        mpfr_sqr(r20564, r20560, MPFR_RNDN);
        mpfr_add(r20565, r20563, r20564, MPFR_RNDN);
        mpfr_div(r20566, r20562, r20565, MPFR_RNDN);
        mpfr_div(r20567, r20566, r20558, MPFR_RNDN);
        mpfr_mul(r20568, r20555, r20567, MPFR_RNDN);
        ;
        mpfr_set_si(r20570, mpfr_cmp(r20552, r20569) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r20572, r20571, r20552, MPFR_RNDN);
        mpfr_add(r20573, r20555, r20572, MPFR_RNDN);
        ;
        mpfr_sqr(r20575, r20552, MPFR_RNDN);
        mpfr_mul(r20576, r20574, r20575, MPFR_RNDN);
        mpfr_log(r20577, r20576, MPFR_RNDN);
        mpfr_exp(r20578, r20577, MPFR_RNDN);
        mpfr_add(r20579, r20573, r20578, MPFR_RNDN);
        mpfr_mul(r20580, r20557, r20579, MPFR_RNDN);
        mpfr_div(r20581, r20560, r20558, MPFR_RNDN);
        mpfr_div(r20582, r20557, r20552, MPFR_RNDN);
        mpfr_sub(r20583, r20581, r20582, MPFR_RNDN);
        mpfr_mul(r20584, r20555, r20583, MPFR_RNDN);
        if (mpfr_get_si(r20570, MPFR_RNDN)) { mpfr_set(r20585, r20580, MPFR_RNDN); } else { mpfr_set(r20585, r20584, MPFR_RNDN); };
        if (mpfr_get_si(r20554, MPFR_RNDN)) { mpfr_set(r20586, r20568, MPFR_RNDN); } else { mpfr_set(r20586, r20585, MPFR_RNDN); };
        return mpfr_get_d(r20586, MPFR_RNDN);
}

static mpfr_t r20587, r20588, r20589, r20590, r20591, r20592, r20593, r20594, r20595, r20596, r20597, r20598, r20599, r20600, r20601, r20602, r20603, r20604, r20605, r20606, r20607, r20608, r20609, r20610, r20611, r20612, r20613, r20614, r20615, r20616, r20617, r20618, r20619, r20620, r20621;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r20587);
        mpfr_init_set_str(r20588, "-0.058764479831025576", 10, MPFR_RNDN);
        mpfr_init(r20589);
        mpfr_init_set_str(r20590, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r20591, "1", 10, MPFR_RNDN);
        mpfr_init(r20592);
        mpfr_init(r20593);
        mpfr_init(r20594);
        mpfr_init(r20595);
        mpfr_init(r20596);
        mpfr_init(r20597);
        mpfr_init(r20598);
        mpfr_init(r20599);
        mpfr_init(r20600);
        mpfr_init(r20601);
        mpfr_init(r20602);
        mpfr_init(r20603);
        mpfr_init_set_str(r20604, "4.370354623930509e-12", 10, MPFR_RNDN);
        mpfr_init(r20605);
        mpfr_init_set_str(r20606, "50", 10, MPFR_RNDN);
        mpfr_init(r20607);
        mpfr_init(r20608);
        mpfr_init_set_str(r20609, "50/3", 10, MPFR_RNDN);
        mpfr_init(r20610);
        mpfr_init(r20611);
        mpfr_init(r20612);
        mpfr_init(r20613);
        mpfr_init(r20614);
        mpfr_init(r20615);
        mpfr_init(r20616);
        mpfr_init(r20617);
        mpfr_init(r20618);
        mpfr_init(r20619);
        mpfr_init(r20620);
        mpfr_init(r20621);
}

double f_dm(double i, double n) {
        mpfr_set_d(r20587, i, MPFR_RNDN);
        ;
        mpfr_set_si(r20589, mpfr_cmp(r20587, r20588) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r20592, n, MPFR_RNDN);
        mpfr_div(r20593, r20587, r20592, MPFR_RNDN);
        mpfr_add(r20594, r20591, r20593, MPFR_RNDN);
        mpfr_pow(r20595, r20594, r20592, MPFR_RNDN);
        mpfr_mul(r20596, r20595, r20595, MPFR_RNDN); mpfr_mul(r20596, r20596, r20595, MPFR_RNDN);
        mpfr_sub(r20597, r20596, r20591, MPFR_RNDN);
        mpfr_add(r20598, r20595, r20591, MPFR_RNDN);
        mpfr_sqr(r20599, r20595, MPFR_RNDN);
        mpfr_add(r20600, r20598, r20599, MPFR_RNDN);
        mpfr_div(r20601, r20597, r20600, MPFR_RNDN);
        mpfr_div(r20602, r20601, r20593, MPFR_RNDN);
        mpfr_mul(r20603, r20590, r20602, MPFR_RNDN);
        ;
        mpfr_set_si(r20605, mpfr_cmp(r20587, r20604) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r20607, r20606, r20587, MPFR_RNDN);
        mpfr_add(r20608, r20590, r20607, MPFR_RNDN);
        ;
        mpfr_sqr(r20610, r20587, MPFR_RNDN);
        mpfr_mul(r20611, r20609, r20610, MPFR_RNDN);
        mpfr_log(r20612, r20611, MPFR_RNDN);
        mpfr_exp(r20613, r20612, MPFR_RNDN);
        mpfr_add(r20614, r20608, r20613, MPFR_RNDN);
        mpfr_mul(r20615, r20592, r20614, MPFR_RNDN);
        mpfr_div(r20616, r20595, r20593, MPFR_RNDN);
        mpfr_div(r20617, r20592, r20587, MPFR_RNDN);
        mpfr_sub(r20618, r20616, r20617, MPFR_RNDN);
        mpfr_mul(r20619, r20590, r20618, MPFR_RNDN);
        if (mpfr_get_si(r20605, MPFR_RNDN)) { mpfr_set(r20620, r20615, MPFR_RNDN); } else { mpfr_set(r20620, r20619, MPFR_RNDN); };
        if (mpfr_get_si(r20589, MPFR_RNDN)) { mpfr_set(r20621, r20603, MPFR_RNDN); } else { mpfr_set(r20621, r20620, MPFR_RNDN); };
        return mpfr_get_d(r20621, MPFR_RNDN);
}

