#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 r16281518 = 100;
        float r16281519 = 1;
        float r16281520 = i;
        float r16281521 = n;
        float r16281522 = r16281520 / r16281521;
        float r16281523 = r16281519 + r16281522;
        float r16281524 = pow(r16281523, r16281521);
        float r16281525 = r16281524 - r16281519;
        float r16281526 = r16281525 / r16281522;
        float r16281527 = r16281518 * r16281526;
        return r16281527;
}

double f_id(double i, double n) {
        double r16281528 = 100;
        double r16281529 = 1;
        double r16281530 = i;
        double r16281531 = n;
        double r16281532 = r16281530 / r16281531;
        double r16281533 = r16281529 + r16281532;
        double r16281534 = pow(r16281533, r16281531);
        double r16281535 = r16281534 - r16281529;
        double r16281536 = r16281535 / r16281532;
        double r16281537 = r16281528 * r16281536;
        return r16281537;
}


double f_of(float i, float n) {
        float r16281538 = i;
        float r16281539 = -7.725299770669824e-25;
        bool r16281540 = r16281538 <= r16281539;
        float r16281541 = 100;
        float r16281542 = n;
        float r16281543 = r16281538 / r16281542;
        float r16281544 = 1;
        float r16281545 = r16281543 + r16281544;
        float r16281546 = pow(r16281545, r16281542);
        float r16281547 = 3;
        float r16281548 = pow(r16281546, r16281547);
        float r16281549 = r16281548 - r16281544;
        float r16281550 = r16281544 + r16281546;
        float r16281551 = r16281546 * r16281546;
        float r16281552 = r16281550 + r16281551;
        float r16281553 = r16281549 / r16281552;
        float r16281554 = r16281553 / r16281543;
        float r16281555 = r16281541 * r16281554;
        float r16281556 = 0.0003173246943303398;
        bool r16281557 = r16281538 <= r16281556;
        float r16281558 = 1/6;
        float r16281559 = r16281558 * r16281538;
        float r16281560 = 1/2;
        float r16281561 = r16281559 + r16281560;
        float r16281562 = r16281538 * r16281538;
        float r16281563 = r16281561 * r16281562;
        float r16281564 = r16281563 + r16281538;
        float r16281565 = r16281564 / r16281538;
        float r16281566 = r16281565 * r16281542;
        float r16281567 = r16281541 * r16281566;
        float r16281568 = r16281544 + r16281543;
        float r16281569 = pow(r16281568, r16281542);
        float r16281570 = r16281569 - r16281544;
        float r16281571 = r16281570 / r16281538;
        float r16281572 = r16281541 * r16281571;
        float r16281573 = r16281572 * r16281542;
        float r16281574 = r16281557 ? r16281567 : r16281573;
        float r16281575 = r16281540 ? r16281555 : r16281574;
        return r16281575;
}

double f_od(double i, double n) {
        double r16281576 = i;
        double r16281577 = -7.725299770669824e-25;
        bool r16281578 = r16281576 <= r16281577;
        double r16281579 = 100;
        double r16281580 = n;
        double r16281581 = r16281576 / r16281580;
        double r16281582 = 1;
        double r16281583 = r16281581 + r16281582;
        double r16281584 = pow(r16281583, r16281580);
        double r16281585 = 3;
        double r16281586 = pow(r16281584, r16281585);
        double r16281587 = r16281586 - r16281582;
        double r16281588 = r16281582 + r16281584;
        double r16281589 = r16281584 * r16281584;
        double r16281590 = r16281588 + r16281589;
        double r16281591 = r16281587 / r16281590;
        double r16281592 = r16281591 / r16281581;
        double r16281593 = r16281579 * r16281592;
        double r16281594 = 0.0003173246943303398;
        bool r16281595 = r16281576 <= r16281594;
        double r16281596 = 1/6;
        double r16281597 = r16281596 * r16281576;
        double r16281598 = 1/2;
        double r16281599 = r16281597 + r16281598;
        double r16281600 = r16281576 * r16281576;
        double r16281601 = r16281599 * r16281600;
        double r16281602 = r16281601 + r16281576;
        double r16281603 = r16281602 / r16281576;
        double r16281604 = r16281603 * r16281580;
        double r16281605 = r16281579 * r16281604;
        double r16281606 = r16281582 + r16281581;
        double r16281607 = pow(r16281606, r16281580);
        double r16281608 = r16281607 - r16281582;
        double r16281609 = r16281608 / r16281576;
        double r16281610 = r16281579 * r16281609;
        double r16281611 = r16281610 * r16281580;
        double r16281612 = r16281595 ? r16281605 : r16281611;
        double r16281613 = r16281578 ? r16281593 : r16281612;
        return r16281613;
}

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 r16281614, r16281615, r16281616, r16281617, r16281618, r16281619, r16281620, r16281621, r16281622, r16281623;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r16281614, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r16281615, "1", 10, MPFR_RNDN);
        mpfr_init(r16281616);
        mpfr_init(r16281617);
        mpfr_init(r16281618);
        mpfr_init(r16281619);
        mpfr_init(r16281620);
        mpfr_init(r16281621);
        mpfr_init(r16281622);
        mpfr_init(r16281623);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r16281616, i, MPFR_RNDN);
        mpfr_set_d(r16281617, n, MPFR_RNDN);
        mpfr_div(r16281618, r16281616, r16281617, MPFR_RNDN);
        mpfr_add(r16281619, r16281615, r16281618, MPFR_RNDN);
        mpfr_pow(r16281620, r16281619, r16281617, MPFR_RNDN);
        mpfr_sub(r16281621, r16281620, r16281615, MPFR_RNDN);
        mpfr_div(r16281622, r16281621, r16281618, MPFR_RNDN);
        mpfr_mul(r16281623, r16281614, r16281622, MPFR_RNDN);
        return mpfr_get_d(r16281623, MPFR_RNDN);
}

static mpfr_t r16281624, r16281625, r16281626, r16281627, r16281628, r16281629, r16281630, r16281631, r16281632, r16281633, r16281634, r16281635, r16281636, r16281637, r16281638, r16281639, r16281640, r16281641, r16281642, r16281643, r16281644, r16281645, r16281646, r16281647, r16281648, r16281649, r16281650, r16281651, r16281652, r16281653, r16281654, r16281655, r16281656, r16281657, r16281658, r16281659, r16281660, r16281661;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r16281624);
        mpfr_init_set_str(r16281625, "-7.725299770669824e-25", 10, MPFR_RNDN);
        mpfr_init(r16281626);
        mpfr_init_set_str(r16281627, "100", 10, MPFR_RNDN);
        mpfr_init(r16281628);
        mpfr_init(r16281629);
        mpfr_init_set_str(r16281630, "1", 10, MPFR_RNDN);
        mpfr_init(r16281631);
        mpfr_init(r16281632);
        mpfr_init_set_str(r16281633, "3", 10, MPFR_RNDN);
        mpfr_init(r16281634);
        mpfr_init(r16281635);
        mpfr_init(r16281636);
        mpfr_init(r16281637);
        mpfr_init(r16281638);
        mpfr_init(r16281639);
        mpfr_init(r16281640);
        mpfr_init(r16281641);
        mpfr_init_set_str(r16281642, "0.0003173246943303398", 10, MPFR_RNDN);
        mpfr_init(r16281643);
        mpfr_init_set_str(r16281644, "1/6", 10, MPFR_RNDN);
        mpfr_init(r16281645);
        mpfr_init_set_str(r16281646, "1/2", 10, MPFR_RNDN);
        mpfr_init(r16281647);
        mpfr_init(r16281648);
        mpfr_init(r16281649);
        mpfr_init(r16281650);
        mpfr_init(r16281651);
        mpfr_init(r16281652);
        mpfr_init(r16281653);
        mpfr_init(r16281654);
        mpfr_init(r16281655);
        mpfr_init(r16281656);
        mpfr_init(r16281657);
        mpfr_init(r16281658);
        mpfr_init(r16281659);
        mpfr_init(r16281660);
        mpfr_init(r16281661);
}

double f_fm(double i, double n) {
        mpfr_set_d(r16281624, i, MPFR_RNDN);
        ;
        mpfr_set_si(r16281626, mpfr_cmp(r16281624, r16281625) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r16281628, n, MPFR_RNDN);
        mpfr_div(r16281629, r16281624, r16281628, MPFR_RNDN);
        ;
        mpfr_add(r16281631, r16281629, r16281630, MPFR_RNDN);
        mpfr_pow(r16281632, r16281631, r16281628, MPFR_RNDN);
        ;
        mpfr_pow(r16281634, r16281632, r16281633, MPFR_RNDN);
        mpfr_sub(r16281635, r16281634, r16281630, MPFR_RNDN);
        mpfr_add(r16281636, r16281630, r16281632, MPFR_RNDN);
        mpfr_mul(r16281637, r16281632, r16281632, MPFR_RNDN);
        mpfr_add(r16281638, r16281636, r16281637, MPFR_RNDN);
        mpfr_div(r16281639, r16281635, r16281638, MPFR_RNDN);
        mpfr_div(r16281640, r16281639, r16281629, MPFR_RNDN);
        mpfr_mul(r16281641, r16281627, r16281640, MPFR_RNDN);
        ;
        mpfr_set_si(r16281643, mpfr_cmp(r16281624, r16281642) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r16281645, r16281644, r16281624, MPFR_RNDN);
        ;
        mpfr_add(r16281647, r16281645, r16281646, MPFR_RNDN);
        mpfr_mul(r16281648, r16281624, r16281624, MPFR_RNDN);
        mpfr_mul(r16281649, r16281647, r16281648, MPFR_RNDN);
        mpfr_add(r16281650, r16281649, r16281624, MPFR_RNDN);
        mpfr_div(r16281651, r16281650, r16281624, MPFR_RNDN);
        mpfr_mul(r16281652, r16281651, r16281628, MPFR_RNDN);
        mpfr_mul(r16281653, r16281627, r16281652, MPFR_RNDN);
        mpfr_add(r16281654, r16281630, r16281629, MPFR_RNDN);
        mpfr_pow(r16281655, r16281654, r16281628, MPFR_RNDN);
        mpfr_sub(r16281656, r16281655, r16281630, MPFR_RNDN);
        mpfr_div(r16281657, r16281656, r16281624, MPFR_RNDN);
        mpfr_mul(r16281658, r16281627, r16281657, MPFR_RNDN);
        mpfr_mul(r16281659, r16281658, r16281628, MPFR_RNDN);
        if (mpfr_get_si(r16281643, MPFR_RNDN)) { mpfr_set(r16281660, r16281653, MPFR_RNDN); } else { mpfr_set(r16281660, r16281659, MPFR_RNDN); };
        if (mpfr_get_si(r16281626, MPFR_RNDN)) { mpfr_set(r16281661, r16281641, MPFR_RNDN); } else { mpfr_set(r16281661, r16281660, MPFR_RNDN); };
        return mpfr_get_d(r16281661, MPFR_RNDN);
}

static mpfr_t r16281662, r16281663, r16281664, r16281665, r16281666, r16281667, r16281668, r16281669, r16281670, r16281671, r16281672, r16281673, r16281674, r16281675, r16281676, r16281677, r16281678, r16281679, r16281680, r16281681, r16281682, r16281683, r16281684, r16281685, r16281686, r16281687, r16281688, r16281689, r16281690, r16281691, r16281692, r16281693, r16281694, r16281695, r16281696, r16281697, r16281698, r16281699;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r16281662);
        mpfr_init_set_str(r16281663, "-7.725299770669824e-25", 10, MPFR_RNDN);
        mpfr_init(r16281664);
        mpfr_init_set_str(r16281665, "100", 10, MPFR_RNDN);
        mpfr_init(r16281666);
        mpfr_init(r16281667);
        mpfr_init_set_str(r16281668, "1", 10, MPFR_RNDN);
        mpfr_init(r16281669);
        mpfr_init(r16281670);
        mpfr_init_set_str(r16281671, "3", 10, MPFR_RNDN);
        mpfr_init(r16281672);
        mpfr_init(r16281673);
        mpfr_init(r16281674);
        mpfr_init(r16281675);
        mpfr_init(r16281676);
        mpfr_init(r16281677);
        mpfr_init(r16281678);
        mpfr_init(r16281679);
        mpfr_init_set_str(r16281680, "0.0003173246943303398", 10, MPFR_RNDN);
        mpfr_init(r16281681);
        mpfr_init_set_str(r16281682, "1/6", 10, MPFR_RNDN);
        mpfr_init(r16281683);
        mpfr_init_set_str(r16281684, "1/2", 10, MPFR_RNDN);
        mpfr_init(r16281685);
        mpfr_init(r16281686);
        mpfr_init(r16281687);
        mpfr_init(r16281688);
        mpfr_init(r16281689);
        mpfr_init(r16281690);
        mpfr_init(r16281691);
        mpfr_init(r16281692);
        mpfr_init(r16281693);
        mpfr_init(r16281694);
        mpfr_init(r16281695);
        mpfr_init(r16281696);
        mpfr_init(r16281697);
        mpfr_init(r16281698);
        mpfr_init(r16281699);
}

double f_dm(double i, double n) {
        mpfr_set_d(r16281662, i, MPFR_RNDN);
        ;
        mpfr_set_si(r16281664, mpfr_cmp(r16281662, r16281663) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r16281666, n, MPFR_RNDN);
        mpfr_div(r16281667, r16281662, r16281666, MPFR_RNDN);
        ;
        mpfr_add(r16281669, r16281667, r16281668, MPFR_RNDN);
        mpfr_pow(r16281670, r16281669, r16281666, MPFR_RNDN);
        ;
        mpfr_pow(r16281672, r16281670, r16281671, MPFR_RNDN);
        mpfr_sub(r16281673, r16281672, r16281668, MPFR_RNDN);
        mpfr_add(r16281674, r16281668, r16281670, MPFR_RNDN);
        mpfr_mul(r16281675, r16281670, r16281670, MPFR_RNDN);
        mpfr_add(r16281676, r16281674, r16281675, MPFR_RNDN);
        mpfr_div(r16281677, r16281673, r16281676, MPFR_RNDN);
        mpfr_div(r16281678, r16281677, r16281667, MPFR_RNDN);
        mpfr_mul(r16281679, r16281665, r16281678, MPFR_RNDN);
        ;
        mpfr_set_si(r16281681, mpfr_cmp(r16281662, r16281680) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r16281683, r16281682, r16281662, MPFR_RNDN);
        ;
        mpfr_add(r16281685, r16281683, r16281684, MPFR_RNDN);
        mpfr_mul(r16281686, r16281662, r16281662, MPFR_RNDN);
        mpfr_mul(r16281687, r16281685, r16281686, MPFR_RNDN);
        mpfr_add(r16281688, r16281687, r16281662, MPFR_RNDN);
        mpfr_div(r16281689, r16281688, r16281662, MPFR_RNDN);
        mpfr_mul(r16281690, r16281689, r16281666, MPFR_RNDN);
        mpfr_mul(r16281691, r16281665, r16281690, MPFR_RNDN);
        mpfr_add(r16281692, r16281668, r16281667, MPFR_RNDN);
        mpfr_pow(r16281693, r16281692, r16281666, MPFR_RNDN);
        mpfr_sub(r16281694, r16281693, r16281668, MPFR_RNDN);
        mpfr_div(r16281695, r16281694, r16281662, MPFR_RNDN);
        mpfr_mul(r16281696, r16281665, r16281695, MPFR_RNDN);
        mpfr_mul(r16281697, r16281696, r16281666, MPFR_RNDN);
        if (mpfr_get_si(r16281681, MPFR_RNDN)) { mpfr_set(r16281698, r16281691, MPFR_RNDN); } else { mpfr_set(r16281698, r16281697, MPFR_RNDN); };
        if (mpfr_get_si(r16281664, MPFR_RNDN)) { mpfr_set(r16281699, r16281679, MPFR_RNDN); } else { mpfr_set(r16281699, r16281698, MPFR_RNDN); };
        return mpfr_get_d(r16281699, MPFR_RNDN);
}

