#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 r57468 = 100.0f;
        float r57469 = 1.0f;
        float r57470 = i;
        float r57471 = n;
        float r57472 = r57470 / r57471;
        float r57473 = r57469 + r57472;
        float r57474 = pow(r57473, r57471);
        float r57475 = r57474 - r57469;
        float r57476 = r57475 / r57472;
        float r57477 = r57468 * r57476;
        return r57477;
}

double f_id(double i, double n) {
        double r57478 = 100.0;
        double r57479 = 1.0;
        double r57480 = i;
        double r57481 = n;
        double r57482 = r57480 / r57481;
        double r57483 = r57479 + r57482;
        double r57484 = pow(r57483, r57481);
        double r57485 = r57484 - r57479;
        double r57486 = r57485 / r57482;
        double r57487 = r57478 * r57486;
        return r57487;
}


double f_of(float i, float n) {
        float r57488 = i;
        float r57489 = -3.1308280513783317e-09f;
        bool r57490 = r57488 <= r57489;
        float r57491 = 100.0f;
        float r57492 = 1.0f;
        float r57493 = n;
        float r57494 = r57488 / r57493;
        float r57495 = r57492 + r57494;
        float r57496 = pow(r57495, r57493);
        float r57497 = 3.0f;
        float r57498 = pow(r57496, r57497);
        float r57499 = pow(r57492, r57497);
        float r57500 = r57498 - r57499;
        float r57501 = r57494 + r57492;
        float r57502 = pow(r57501, r57493);
        float r57503 = r57502 * r57502;
        float r57504 = r57492 + r57502;
        float r57505 = r57503 + r57504;
        float r57506 = r57494 * r57505;
        float r57507 = r57500 / r57506;
        float r57508 = r57491 * r57507;
        float r57509 = 3.203941410402244e-15f;
        bool r57510 = r57488 <= r57509;
        float r57511 = 0.5f;
        float r57512 = r57488 * r57511;
        float r57513 = r57512 + r57492;
        float r57514 = r57491 * r57493;
        float r57515 = r57513 * r57514;
        float r57516 = r57510 ? r57515 : r57508;
        float r57517 = r57490 ? r57508 : r57516;
        return r57517;
}

double f_od(double i, double n) {
        double r57518 = i;
        double r57519 = -3.1308280513783317e-09;
        bool r57520 = r57518 <= r57519;
        double r57521 = 100.0;
        double r57522 = 1.0;
        double r57523 = n;
        double r57524 = r57518 / r57523;
        double r57525 = r57522 + r57524;
        double r57526 = pow(r57525, r57523);
        double r57527 = 3.0;
        double r57528 = pow(r57526, r57527);
        double r57529 = pow(r57522, r57527);
        double r57530 = r57528 - r57529;
        double r57531 = r57524 + r57522;
        double r57532 = pow(r57531, r57523);
        double r57533 = r57532 * r57532;
        double r57534 = r57522 + r57532;
        double r57535 = r57533 + r57534;
        double r57536 = r57524 * r57535;
        double r57537 = r57530 / r57536;
        double r57538 = r57521 * r57537;
        double r57539 = 3.203941410402244e-15;
        bool r57540 = r57518 <= r57539;
        double r57541 = 0.5;
        double r57542 = r57518 * r57541;
        double r57543 = r57542 + r57522;
        double r57544 = r57521 * r57523;
        double r57545 = r57543 * r57544;
        double r57546 = r57540 ? r57545 : r57538;
        double r57547 = r57520 ? r57538 : r57546;
        return r57547;
}

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 r57548, r57549, r57550, r57551, r57552, r57553, r57554, r57555, r57556, r57557;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r57548, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r57549, "1", 10, MPFR_RNDN);
        mpfr_init(r57550);
        mpfr_init(r57551);
        mpfr_init(r57552);
        mpfr_init(r57553);
        mpfr_init(r57554);
        mpfr_init(r57555);
        mpfr_init(r57556);
        mpfr_init(r57557);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r57550, i, MPFR_RNDN);
        mpfr_set_d(r57551, n, MPFR_RNDN);
        mpfr_div(r57552, r57550, r57551, MPFR_RNDN);
        mpfr_add(r57553, r57549, r57552, MPFR_RNDN);
        mpfr_pow(r57554, r57553, r57551, MPFR_RNDN);
        mpfr_sub(r57555, r57554, r57549, MPFR_RNDN);
        mpfr_div(r57556, r57555, r57552, MPFR_RNDN);
        mpfr_mul(r57557, r57548, r57556, MPFR_RNDN);
        return mpfr_get_d(r57557, MPFR_RNDN);
}

static mpfr_t r57558, r57559, r57560, r57561, r57562, r57563, r57564, r57565, r57566, r57567, r57568, r57569, r57570, r57571, r57572, r57573, r57574, r57575, r57576, r57577, r57578, r57579, r57580, r57581, r57582, r57583, r57584, r57585, r57586, r57587;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r57558);
        mpfr_init_set_str(r57559, "-3.1308280513783317e-09", 10, MPFR_RNDN);
        mpfr_init(r57560);
        mpfr_init_set_str(r57561, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r57562, "1", 10, MPFR_RNDN);
        mpfr_init(r57563);
        mpfr_init(r57564);
        mpfr_init(r57565);
        mpfr_init(r57566);
        mpfr_init_set_str(r57567, "3", 10, MPFR_RNDN);
        mpfr_init(r57568);
        mpfr_init(r57569);
        mpfr_init(r57570);
        mpfr_init(r57571);
        mpfr_init(r57572);
        mpfr_init(r57573);
        mpfr_init(r57574);
        mpfr_init(r57575);
        mpfr_init(r57576);
        mpfr_init(r57577);
        mpfr_init(r57578);
        mpfr_init_set_str(r57579, "3.203941410402244e-15", 10, MPFR_RNDN);
        mpfr_init(r57580);
        mpfr_init_set_str(r57581, "1/2", 10, MPFR_RNDN);
        mpfr_init(r57582);
        mpfr_init(r57583);
        mpfr_init(r57584);
        mpfr_init(r57585);
        mpfr_init(r57586);
        mpfr_init(r57587);
}

double f_fm(double i, double n) {
        mpfr_set_d(r57558, i, MPFR_RNDN);
        ;
        mpfr_set_si(r57560, mpfr_cmp(r57558, r57559) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r57563, n, MPFR_RNDN);
        mpfr_div(r57564, r57558, r57563, MPFR_RNDN);
        mpfr_add(r57565, r57562, r57564, MPFR_RNDN);
        mpfr_pow(r57566, r57565, r57563, MPFR_RNDN);
        ;
        mpfr_pow(r57568, r57566, r57567, MPFR_RNDN);
        mpfr_pow(r57569, r57562, r57567, MPFR_RNDN);
        mpfr_sub(r57570, r57568, r57569, MPFR_RNDN);
        mpfr_add(r57571, r57564, r57562, MPFR_RNDN);
        mpfr_pow(r57572, r57571, r57563, MPFR_RNDN);
        mpfr_sqr(r57573, r57572, MPFR_RNDN);
        mpfr_add(r57574, r57562, r57572, MPFR_RNDN);
        mpfr_add(r57575, r57573, r57574, MPFR_RNDN);
        mpfr_mul(r57576, r57564, r57575, MPFR_RNDN);
        mpfr_div(r57577, r57570, r57576, MPFR_RNDN);
        mpfr_mul(r57578, r57561, r57577, MPFR_RNDN);
        ;
        mpfr_set_si(r57580, mpfr_cmp(r57558, r57579) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r57582, r57558, r57581, MPFR_RNDN);
        mpfr_add(r57583, r57582, r57562, MPFR_RNDN);
        mpfr_mul(r57584, r57561, r57563, MPFR_RNDN);
        mpfr_mul(r57585, r57583, r57584, MPFR_RNDN);
        if (mpfr_get_si(r57580, MPFR_RNDN)) { mpfr_set(r57586, r57585, MPFR_RNDN); } else { mpfr_set(r57586, r57578, MPFR_RNDN); };
        if (mpfr_get_si(r57560, MPFR_RNDN)) { mpfr_set(r57587, r57578, MPFR_RNDN); } else { mpfr_set(r57587, r57586, MPFR_RNDN); };
        return mpfr_get_d(r57587, MPFR_RNDN);
}

static mpfr_t r57588, r57589, r57590, r57591, r57592, r57593, r57594, r57595, r57596, r57597, r57598, r57599, r57600, r57601, r57602, r57603, r57604, r57605, r57606, r57607, r57608, r57609, r57610, r57611, r57612, r57613, r57614, r57615, r57616, r57617;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r57588);
        mpfr_init_set_str(r57589, "-3.1308280513783317e-09", 10, MPFR_RNDN);
        mpfr_init(r57590);
        mpfr_init_set_str(r57591, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r57592, "1", 10, MPFR_RNDN);
        mpfr_init(r57593);
        mpfr_init(r57594);
        mpfr_init(r57595);
        mpfr_init(r57596);
        mpfr_init_set_str(r57597, "3", 10, MPFR_RNDN);
        mpfr_init(r57598);
        mpfr_init(r57599);
        mpfr_init(r57600);
        mpfr_init(r57601);
        mpfr_init(r57602);
        mpfr_init(r57603);
        mpfr_init(r57604);
        mpfr_init(r57605);
        mpfr_init(r57606);
        mpfr_init(r57607);
        mpfr_init(r57608);
        mpfr_init_set_str(r57609, "3.203941410402244e-15", 10, MPFR_RNDN);
        mpfr_init(r57610);
        mpfr_init_set_str(r57611, "1/2", 10, MPFR_RNDN);
        mpfr_init(r57612);
        mpfr_init(r57613);
        mpfr_init(r57614);
        mpfr_init(r57615);
        mpfr_init(r57616);
        mpfr_init(r57617);
}

double f_dm(double i, double n) {
        mpfr_set_d(r57588, i, MPFR_RNDN);
        ;
        mpfr_set_si(r57590, mpfr_cmp(r57588, r57589) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r57593, n, MPFR_RNDN);
        mpfr_div(r57594, r57588, r57593, MPFR_RNDN);
        mpfr_add(r57595, r57592, r57594, MPFR_RNDN);
        mpfr_pow(r57596, r57595, r57593, MPFR_RNDN);
        ;
        mpfr_pow(r57598, r57596, r57597, MPFR_RNDN);
        mpfr_pow(r57599, r57592, r57597, MPFR_RNDN);
        mpfr_sub(r57600, r57598, r57599, MPFR_RNDN);
        mpfr_add(r57601, r57594, r57592, MPFR_RNDN);
        mpfr_pow(r57602, r57601, r57593, MPFR_RNDN);
        mpfr_sqr(r57603, r57602, MPFR_RNDN);
        mpfr_add(r57604, r57592, r57602, MPFR_RNDN);
        mpfr_add(r57605, r57603, r57604, MPFR_RNDN);
        mpfr_mul(r57606, r57594, r57605, MPFR_RNDN);
        mpfr_div(r57607, r57600, r57606, MPFR_RNDN);
        mpfr_mul(r57608, r57591, r57607, MPFR_RNDN);
        ;
        mpfr_set_si(r57610, mpfr_cmp(r57588, r57609) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r57612, r57588, r57611, MPFR_RNDN);
        mpfr_add(r57613, r57612, r57592, MPFR_RNDN);
        mpfr_mul(r57614, r57591, r57593, MPFR_RNDN);
        mpfr_mul(r57615, r57613, r57614, MPFR_RNDN);
        if (mpfr_get_si(r57610, MPFR_RNDN)) { mpfr_set(r57616, r57615, MPFR_RNDN); } else { mpfr_set(r57616, r57608, MPFR_RNDN); };
        if (mpfr_get_si(r57590, MPFR_RNDN)) { mpfr_set(r57617, r57608, MPFR_RNDN); } else { mpfr_set(r57617, r57616, MPFR_RNDN); };
        return mpfr_get_d(r57617, MPFR_RNDN);
}

