#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 r56605 = 100;
        float r56606 = 1;
        float r56607 = i;
        float r56608 = n;
        float r56609 = r56607 / r56608;
        float r56610 = r56606 + r56609;
        float r56611 = pow(r56610, r56608);
        float r56612 = r56611 - r56606;
        float r56613 = r56612 / r56609;
        float r56614 = r56605 * r56613;
        return r56614;
}

double f_id(double i, double n) {
        double r56615 = 100;
        double r56616 = 1;
        double r56617 = i;
        double r56618 = n;
        double r56619 = r56617 / r56618;
        double r56620 = r56616 + r56619;
        double r56621 = pow(r56620, r56618);
        double r56622 = r56621 - r56616;
        double r56623 = r56622 / r56619;
        double r56624 = r56615 * r56623;
        return r56624;
}


double f_of(float i, float n) {
        float r56625 = i;
        float r56626 = -0.21082488499509974;
        bool r56627 = r56625 <= r56626;
        float r56628 = 100;
        float r56629 = 1;
        float r56630 = n;
        float r56631 = r56625 / r56630;
        float r56632 = r56629 + r56631;
        float r56633 = pow(r56632, r56630);
        float r56634 = r56633 - r56629;
        float r56635 = cbrt(r56634);
        float r56636 = r56635 * r56635;
        float r56637 = r56636 * r56635;
        float r56638 = r56637 / r56631;
        float r56639 = r56628 * r56638;
        float r56640 = 1.1209319314423736e-07;
        bool r56641 = r56625 <= r56640;
        float r56642 = 1/6;
        float r56643 = 2;
        float r56644 = pow(r56625, r56643);
        float r56645 = r56630 * r56644;
        float r56646 = r56642 * r56645;
        float r56647 = 1/2;
        float r56648 = r56630 * r56625;
        float r56649 = r56647 * r56648;
        float r56650 = r56646 + r56649;
        float r56651 = r56630 + r56650;
        float r56652 = r56628 * r56651;
        float r56653 = 6.465079142208068e+172;
        bool r56654 = r56625 <= r56653;
        float r56655 = log(r56630);
        float r56656 = log(r56625);
        float r56657 = r56655 - r56656;
        float r56658 = r56657 / r56630;
        float r56659 = exp(r56658);
        float r56660 = r56659 - r56629;
        float r56661 = r56660 / r56631;
        float r56662 = r56628 * r56661;
        float r56663 = r56654 ? r56639 : r56662;
        float r56664 = r56641 ? r56652 : r56663;
        float r56665 = r56627 ? r56639 : r56664;
        return r56665;
}

double f_od(double i, double n) {
        double r56666 = i;
        double r56667 = -0.21082488499509974;
        bool r56668 = r56666 <= r56667;
        double r56669 = 100;
        double r56670 = 1;
        double r56671 = n;
        double r56672 = r56666 / r56671;
        double r56673 = r56670 + r56672;
        double r56674 = pow(r56673, r56671);
        double r56675 = r56674 - r56670;
        double r56676 = cbrt(r56675);
        double r56677 = r56676 * r56676;
        double r56678 = r56677 * r56676;
        double r56679 = r56678 / r56672;
        double r56680 = r56669 * r56679;
        double r56681 = 1.1209319314423736e-07;
        bool r56682 = r56666 <= r56681;
        double r56683 = 1/6;
        double r56684 = 2;
        double r56685 = pow(r56666, r56684);
        double r56686 = r56671 * r56685;
        double r56687 = r56683 * r56686;
        double r56688 = 1/2;
        double r56689 = r56671 * r56666;
        double r56690 = r56688 * r56689;
        double r56691 = r56687 + r56690;
        double r56692 = r56671 + r56691;
        double r56693 = r56669 * r56692;
        double r56694 = 6.465079142208068e+172;
        bool r56695 = r56666 <= r56694;
        double r56696 = log(r56671);
        double r56697 = log(r56666);
        double r56698 = r56696 - r56697;
        double r56699 = r56698 / r56671;
        double r56700 = exp(r56699);
        double r56701 = r56700 - r56670;
        double r56702 = r56701 / r56672;
        double r56703 = r56669 * r56702;
        double r56704 = r56695 ? r56680 : r56703;
        double r56705 = r56682 ? r56693 : r56704;
        double r56706 = r56668 ? r56680 : r56705;
        return r56706;
}

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 r56707, r56708, r56709, r56710, r56711, r56712, r56713, r56714, r56715, r56716;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r56707, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r56708, "1", 10, MPFR_RNDN);
        mpfr_init(r56709);
        mpfr_init(r56710);
        mpfr_init(r56711);
        mpfr_init(r56712);
        mpfr_init(r56713);
        mpfr_init(r56714);
        mpfr_init(r56715);
        mpfr_init(r56716);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r56709, i, MPFR_RNDN);
        mpfr_set_d(r56710, n, MPFR_RNDN);
        mpfr_div(r56711, r56709, r56710, MPFR_RNDN);
        mpfr_add(r56712, r56708, r56711, MPFR_RNDN);
        mpfr_pow(r56713, r56712, r56710, MPFR_RNDN);
        mpfr_sub(r56714, r56713, r56708, MPFR_RNDN);
        mpfr_div(r56715, r56714, r56711, MPFR_RNDN);
        mpfr_mul(r56716, r56707, r56715, MPFR_RNDN);
        return mpfr_get_d(r56716, MPFR_RNDN);
}

static mpfr_t r56717, r56718, r56719, r56720, r56721, r56722, r56723, r56724, r56725, r56726, r56727, r56728, r56729, r56730, r56731, r56732, r56733, r56734, r56735, r56736, r56737, r56738, r56739, r56740, r56741, r56742, r56743, r56744, r56745, r56746, r56747, r56748, r56749, r56750, r56751, r56752, r56753, r56754, r56755, r56756, r56757;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r56717);
        mpfr_init_set_str(r56718, "-0.21082488499509974", 10, MPFR_RNDN);
        mpfr_init(r56719);
        mpfr_init_set_str(r56720, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r56721, "1", 10, MPFR_RNDN);
        mpfr_init(r56722);
        mpfr_init(r56723);
        mpfr_init(r56724);
        mpfr_init(r56725);
        mpfr_init(r56726);
        mpfr_init(r56727);
        mpfr_init(r56728);
        mpfr_init(r56729);
        mpfr_init(r56730);
        mpfr_init(r56731);
        mpfr_init_set_str(r56732, "1.1209319314423736e-07", 10, MPFR_RNDN);
        mpfr_init(r56733);
        mpfr_init_set_str(r56734, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r56735, "2", 10, MPFR_RNDN);
        mpfr_init(r56736);
        mpfr_init(r56737);
        mpfr_init(r56738);
        mpfr_init_set_str(r56739, "1/2", 10, MPFR_RNDN);
        mpfr_init(r56740);
        mpfr_init(r56741);
        mpfr_init(r56742);
        mpfr_init(r56743);
        mpfr_init(r56744);
        mpfr_init_set_str(r56745, "6.465079142208068e+172", 10, MPFR_RNDN);
        mpfr_init(r56746);
        mpfr_init(r56747);
        mpfr_init(r56748);
        mpfr_init(r56749);
        mpfr_init(r56750);
        mpfr_init(r56751);
        mpfr_init(r56752);
        mpfr_init(r56753);
        mpfr_init(r56754);
        mpfr_init(r56755);
        mpfr_init(r56756);
        mpfr_init(r56757);
}

double f_fm(double i, double n) {
        mpfr_set_d(r56717, i, MPFR_RNDN);
        ;
        mpfr_set_si(r56719, mpfr_cmp(r56717, r56718) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r56722, n, MPFR_RNDN);
        mpfr_div(r56723, r56717, r56722, MPFR_RNDN);
        mpfr_add(r56724, r56721, r56723, MPFR_RNDN);
        mpfr_pow(r56725, r56724, r56722, MPFR_RNDN);
        mpfr_sub(r56726, r56725, r56721, MPFR_RNDN);
        mpfr_cbrt(r56727, r56726, MPFR_RNDN);
        mpfr_mul(r56728, r56727, r56727, MPFR_RNDN);
        mpfr_mul(r56729, r56728, r56727, MPFR_RNDN);
        mpfr_div(r56730, r56729, r56723, MPFR_RNDN);
        mpfr_mul(r56731, r56720, r56730, MPFR_RNDN);
        ;
        mpfr_set_si(r56733, mpfr_cmp(r56717, r56732) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r56736, r56717, r56735, MPFR_RNDN);
        mpfr_mul(r56737, r56722, r56736, MPFR_RNDN);
        mpfr_mul(r56738, r56734, r56737, MPFR_RNDN);
        ;
        mpfr_mul(r56740, r56722, r56717, MPFR_RNDN);
        mpfr_mul(r56741, r56739, r56740, MPFR_RNDN);
        mpfr_add(r56742, r56738, r56741, MPFR_RNDN);
        mpfr_add(r56743, r56722, r56742, MPFR_RNDN);
        mpfr_mul(r56744, r56720, r56743, MPFR_RNDN);
        ;
        mpfr_set_si(r56746, mpfr_cmp(r56717, r56745) <= 0, MPFR_RNDN);
        mpfr_log(r56747, r56722, MPFR_RNDN);
        mpfr_log(r56748, r56717, MPFR_RNDN);
        mpfr_sub(r56749, r56747, r56748, MPFR_RNDN);
        mpfr_div(r56750, r56749, r56722, MPFR_RNDN);
        mpfr_exp(r56751, r56750, MPFR_RNDN);
        mpfr_sub(r56752, r56751, r56721, MPFR_RNDN);
        mpfr_div(r56753, r56752, r56723, MPFR_RNDN);
        mpfr_mul(r56754, r56720, r56753, MPFR_RNDN);
        if (mpfr_get_si(r56746, MPFR_RNDN)) { mpfr_set(r56755, r56731, MPFR_RNDN); } else { mpfr_set(r56755, r56754, MPFR_RNDN); };
        if (mpfr_get_si(r56733, MPFR_RNDN)) { mpfr_set(r56756, r56744, MPFR_RNDN); } else { mpfr_set(r56756, r56755, MPFR_RNDN); };
        if (mpfr_get_si(r56719, MPFR_RNDN)) { mpfr_set(r56757, r56731, MPFR_RNDN); } else { mpfr_set(r56757, r56756, MPFR_RNDN); };
        return mpfr_get_d(r56757, MPFR_RNDN);
}

static mpfr_t r56758, r56759, r56760, r56761, r56762, r56763, r56764, r56765, r56766, r56767, r56768, r56769, r56770, r56771, r56772, r56773, r56774, r56775, r56776, r56777, r56778, r56779, r56780, r56781, r56782, r56783, r56784, r56785, r56786, r56787, r56788, r56789, r56790, r56791, r56792, r56793, r56794, r56795, r56796, r56797, r56798;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r56758);
        mpfr_init_set_str(r56759, "-0.21082488499509974", 10, MPFR_RNDN);
        mpfr_init(r56760);
        mpfr_init_set_str(r56761, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r56762, "1", 10, MPFR_RNDN);
        mpfr_init(r56763);
        mpfr_init(r56764);
        mpfr_init(r56765);
        mpfr_init(r56766);
        mpfr_init(r56767);
        mpfr_init(r56768);
        mpfr_init(r56769);
        mpfr_init(r56770);
        mpfr_init(r56771);
        mpfr_init(r56772);
        mpfr_init_set_str(r56773, "1.1209319314423736e-07", 10, MPFR_RNDN);
        mpfr_init(r56774);
        mpfr_init_set_str(r56775, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r56776, "2", 10, MPFR_RNDN);
        mpfr_init(r56777);
        mpfr_init(r56778);
        mpfr_init(r56779);
        mpfr_init_set_str(r56780, "1/2", 10, MPFR_RNDN);
        mpfr_init(r56781);
        mpfr_init(r56782);
        mpfr_init(r56783);
        mpfr_init(r56784);
        mpfr_init(r56785);
        mpfr_init_set_str(r56786, "6.465079142208068e+172", 10, MPFR_RNDN);
        mpfr_init(r56787);
        mpfr_init(r56788);
        mpfr_init(r56789);
        mpfr_init(r56790);
        mpfr_init(r56791);
        mpfr_init(r56792);
        mpfr_init(r56793);
        mpfr_init(r56794);
        mpfr_init(r56795);
        mpfr_init(r56796);
        mpfr_init(r56797);
        mpfr_init(r56798);
}

double f_dm(double i, double n) {
        mpfr_set_d(r56758, i, MPFR_RNDN);
        ;
        mpfr_set_si(r56760, mpfr_cmp(r56758, r56759) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r56763, n, MPFR_RNDN);
        mpfr_div(r56764, r56758, r56763, MPFR_RNDN);
        mpfr_add(r56765, r56762, r56764, MPFR_RNDN);
        mpfr_pow(r56766, r56765, r56763, MPFR_RNDN);
        mpfr_sub(r56767, r56766, r56762, MPFR_RNDN);
        mpfr_cbrt(r56768, r56767, MPFR_RNDN);
        mpfr_mul(r56769, r56768, r56768, MPFR_RNDN);
        mpfr_mul(r56770, r56769, r56768, MPFR_RNDN);
        mpfr_div(r56771, r56770, r56764, MPFR_RNDN);
        mpfr_mul(r56772, r56761, r56771, MPFR_RNDN);
        ;
        mpfr_set_si(r56774, mpfr_cmp(r56758, r56773) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r56777, r56758, r56776, MPFR_RNDN);
        mpfr_mul(r56778, r56763, r56777, MPFR_RNDN);
        mpfr_mul(r56779, r56775, r56778, MPFR_RNDN);
        ;
        mpfr_mul(r56781, r56763, r56758, MPFR_RNDN);
        mpfr_mul(r56782, r56780, r56781, MPFR_RNDN);
        mpfr_add(r56783, r56779, r56782, MPFR_RNDN);
        mpfr_add(r56784, r56763, r56783, MPFR_RNDN);
        mpfr_mul(r56785, r56761, r56784, MPFR_RNDN);
        ;
        mpfr_set_si(r56787, mpfr_cmp(r56758, r56786) <= 0, MPFR_RNDN);
        mpfr_log(r56788, r56763, MPFR_RNDN);
        mpfr_log(r56789, r56758, MPFR_RNDN);
        mpfr_sub(r56790, r56788, r56789, MPFR_RNDN);
        mpfr_div(r56791, r56790, r56763, MPFR_RNDN);
        mpfr_exp(r56792, r56791, MPFR_RNDN);
        mpfr_sub(r56793, r56792, r56762, MPFR_RNDN);
        mpfr_div(r56794, r56793, r56764, MPFR_RNDN);
        mpfr_mul(r56795, r56761, r56794, MPFR_RNDN);
        if (mpfr_get_si(r56787, MPFR_RNDN)) { mpfr_set(r56796, r56772, MPFR_RNDN); } else { mpfr_set(r56796, r56795, MPFR_RNDN); };
        if (mpfr_get_si(r56774, MPFR_RNDN)) { mpfr_set(r56797, r56785, MPFR_RNDN); } else { mpfr_set(r56797, r56796, MPFR_RNDN); };
        if (mpfr_get_si(r56760, MPFR_RNDN)) { mpfr_set(r56798, r56772, MPFR_RNDN); } else { mpfr_set(r56798, r56797, MPFR_RNDN); };
        return mpfr_get_d(r56798, MPFR_RNDN);
}

