#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 r57678 = 100;
        float r57679 = 1;
        float r57680 = i;
        float r57681 = n;
        float r57682 = r57680 / r57681;
        float r57683 = r57679 + r57682;
        float r57684 = pow(r57683, r57681);
        float r57685 = r57684 - r57679;
        float r57686 = r57685 / r57682;
        float r57687 = r57678 * r57686;
        return r57687;
}

double f_id(double i, double n) {
        double r57688 = 100;
        double r57689 = 1;
        double r57690 = i;
        double r57691 = n;
        double r57692 = r57690 / r57691;
        double r57693 = r57689 + r57692;
        double r57694 = pow(r57693, r57691);
        double r57695 = r57694 - r57689;
        double r57696 = r57695 / r57692;
        double r57697 = r57688 * r57696;
        return r57697;
}


double f_of(float i, float n) {
        float r57698 = i;
        float r57699 = -0.07666359635680058;
        bool r57700 = r57698 <= r57699;
        float r57701 = 100;
        float r57702 = 1;
        float r57703 = n;
        float r57704 = r57698 / r57703;
        float r57705 = r57702 + r57704;
        float r57706 = pow(r57705, r57703);
        float r57707 = r57706 - r57702;
        float r57708 = cbrt(r57707);
        float r57709 = r57708 * r57708;
        float r57710 = r57709 * r57708;
        float r57711 = r57710 / r57704;
        float r57712 = r57701 * r57711;
        float r57713 = 1.1209319314423736e-07;
        bool r57714 = r57698 <= r57713;
        float r57715 = 50;
        float r57716 = r57715 * r57698;
        float r57717 = r57716 + r57701;
        float r57718 = r57717 * r57703;
        float r57719 = 6.24960210020365e+172;
        bool r57720 = r57698 <= r57719;
        float r57721 = log(r57703);
        float r57722 = log(r57698);
        float r57723 = r57721 - r57722;
        float r57724 = r57723 / r57703;
        float r57725 = exp(r57724);
        float r57726 = r57725 - r57702;
        float r57727 = r57726 / r57704;
        float r57728 = r57701 * r57727;
        float r57729 = r57720 ? r57712 : r57728;
        float r57730 = r57714 ? r57718 : r57729;
        float r57731 = r57700 ? r57712 : r57730;
        return r57731;
}

double f_od(double i, double n) {
        double r57732 = i;
        double r57733 = -0.07666359635680058;
        bool r57734 = r57732 <= r57733;
        double r57735 = 100;
        double r57736 = 1;
        double r57737 = n;
        double r57738 = r57732 / r57737;
        double r57739 = r57736 + r57738;
        double r57740 = pow(r57739, r57737);
        double r57741 = r57740 - r57736;
        double r57742 = cbrt(r57741);
        double r57743 = r57742 * r57742;
        double r57744 = r57743 * r57742;
        double r57745 = r57744 / r57738;
        double r57746 = r57735 * r57745;
        double r57747 = 1.1209319314423736e-07;
        bool r57748 = r57732 <= r57747;
        double r57749 = 50;
        double r57750 = r57749 * r57732;
        double r57751 = r57750 + r57735;
        double r57752 = r57751 * r57737;
        double r57753 = 6.24960210020365e+172;
        bool r57754 = r57732 <= r57753;
        double r57755 = log(r57737);
        double r57756 = log(r57732);
        double r57757 = r57755 - r57756;
        double r57758 = r57757 / r57737;
        double r57759 = exp(r57758);
        double r57760 = r57759 - r57736;
        double r57761 = r57760 / r57738;
        double r57762 = r57735 * r57761;
        double r57763 = r57754 ? r57746 : r57762;
        double r57764 = r57748 ? r57752 : r57763;
        double r57765 = r57734 ? r57746 : r57764;
        return r57765;
}

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 r57766, r57767, r57768, r57769, r57770, r57771, r57772, r57773, r57774, r57775;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r57766, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r57767, "1", 10, MPFR_RNDN);
        mpfr_init(r57768);
        mpfr_init(r57769);
        mpfr_init(r57770);
        mpfr_init(r57771);
        mpfr_init(r57772);
        mpfr_init(r57773);
        mpfr_init(r57774);
        mpfr_init(r57775);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r57768, i, MPFR_RNDN);
        mpfr_set_d(r57769, n, MPFR_RNDN);
        mpfr_div(r57770, r57768, r57769, MPFR_RNDN);
        mpfr_add(r57771, r57767, r57770, MPFR_RNDN);
        mpfr_pow(r57772, r57771, r57769, MPFR_RNDN);
        mpfr_sub(r57773, r57772, r57767, MPFR_RNDN);
        mpfr_div(r57774, r57773, r57770, MPFR_RNDN);
        mpfr_mul(r57775, r57766, r57774, MPFR_RNDN);
        return mpfr_get_d(r57775, MPFR_RNDN);
}

static mpfr_t r57776, r57777, r57778, r57779, r57780, r57781, r57782, r57783, r57784, r57785, r57786, r57787, r57788, r57789, r57790, r57791, r57792, r57793, r57794, r57795, r57796, r57797, r57798, r57799, r57800, r57801, r57802, r57803, r57804, r57805, r57806, r57807, r57808, r57809;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r57776);
        mpfr_init_set_str(r57777, "-0.07666359635680058", 10, MPFR_RNDN);
        mpfr_init(r57778);
        mpfr_init_set_str(r57779, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r57780, "1", 10, MPFR_RNDN);
        mpfr_init(r57781);
        mpfr_init(r57782);
        mpfr_init(r57783);
        mpfr_init(r57784);
        mpfr_init(r57785);
        mpfr_init(r57786);
        mpfr_init(r57787);
        mpfr_init(r57788);
        mpfr_init(r57789);
        mpfr_init(r57790);
        mpfr_init_set_str(r57791, "1.1209319314423736e-07", 10, MPFR_RNDN);
        mpfr_init(r57792);
        mpfr_init_set_str(r57793, "50", 10, MPFR_RNDN);
        mpfr_init(r57794);
        mpfr_init(r57795);
        mpfr_init(r57796);
        mpfr_init_set_str(r57797, "6.24960210020365e+172", 10, MPFR_RNDN);
        mpfr_init(r57798);
        mpfr_init(r57799);
        mpfr_init(r57800);
        mpfr_init(r57801);
        mpfr_init(r57802);
        mpfr_init(r57803);
        mpfr_init(r57804);
        mpfr_init(r57805);
        mpfr_init(r57806);
        mpfr_init(r57807);
        mpfr_init(r57808);
        mpfr_init(r57809);
}

double f_fm(double i, double n) {
        mpfr_set_d(r57776, i, MPFR_RNDN);
        ;
        mpfr_set_si(r57778, mpfr_cmp(r57776, r57777) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r57781, n, MPFR_RNDN);
        mpfr_div(r57782, r57776, r57781, MPFR_RNDN);
        mpfr_add(r57783, r57780, r57782, MPFR_RNDN);
        mpfr_pow(r57784, r57783, r57781, MPFR_RNDN);
        mpfr_sub(r57785, r57784, r57780, MPFR_RNDN);
        mpfr_cbrt(r57786, r57785, MPFR_RNDN);
        mpfr_mul(r57787, r57786, r57786, MPFR_RNDN);
        mpfr_mul(r57788, r57787, r57786, MPFR_RNDN);
        mpfr_div(r57789, r57788, r57782, MPFR_RNDN);
        mpfr_mul(r57790, r57779, r57789, MPFR_RNDN);
        ;
        mpfr_set_si(r57792, mpfr_cmp(r57776, r57791) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r57794, r57793, r57776, MPFR_RNDN);
        mpfr_add(r57795, r57794, r57779, MPFR_RNDN);
        mpfr_mul(r57796, r57795, r57781, MPFR_RNDN);
        ;
        mpfr_set_si(r57798, mpfr_cmp(r57776, r57797) <= 0, MPFR_RNDN);
        mpfr_log(r57799, r57781, MPFR_RNDN);
        mpfr_log(r57800, r57776, MPFR_RNDN);
        mpfr_sub(r57801, r57799, r57800, MPFR_RNDN);
        mpfr_div(r57802, r57801, r57781, MPFR_RNDN);
        mpfr_exp(r57803, r57802, MPFR_RNDN);
        mpfr_sub(r57804, r57803, r57780, MPFR_RNDN);
        mpfr_div(r57805, r57804, r57782, MPFR_RNDN);
        mpfr_mul(r57806, r57779, r57805, MPFR_RNDN);
        if (mpfr_get_si(r57798, MPFR_RNDN)) { mpfr_set(r57807, r57790, MPFR_RNDN); } else { mpfr_set(r57807, r57806, MPFR_RNDN); };
        if (mpfr_get_si(r57792, MPFR_RNDN)) { mpfr_set(r57808, r57796, MPFR_RNDN); } else { mpfr_set(r57808, r57807, MPFR_RNDN); };
        if (mpfr_get_si(r57778, MPFR_RNDN)) { mpfr_set(r57809, r57790, MPFR_RNDN); } else { mpfr_set(r57809, r57808, MPFR_RNDN); };
        return mpfr_get_d(r57809, MPFR_RNDN);
}

static mpfr_t r57810, r57811, r57812, r57813, r57814, r57815, r57816, r57817, r57818, r57819, r57820, r57821, r57822, r57823, r57824, r57825, r57826, r57827, r57828, r57829, r57830, r57831, r57832, r57833, r57834, r57835, r57836, r57837, r57838, r57839, r57840, r57841, r57842, r57843;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r57810);
        mpfr_init_set_str(r57811, "-0.07666359635680058", 10, MPFR_RNDN);
        mpfr_init(r57812);
        mpfr_init_set_str(r57813, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r57814, "1", 10, MPFR_RNDN);
        mpfr_init(r57815);
        mpfr_init(r57816);
        mpfr_init(r57817);
        mpfr_init(r57818);
        mpfr_init(r57819);
        mpfr_init(r57820);
        mpfr_init(r57821);
        mpfr_init(r57822);
        mpfr_init(r57823);
        mpfr_init(r57824);
        mpfr_init_set_str(r57825, "1.1209319314423736e-07", 10, MPFR_RNDN);
        mpfr_init(r57826);
        mpfr_init_set_str(r57827, "50", 10, MPFR_RNDN);
        mpfr_init(r57828);
        mpfr_init(r57829);
        mpfr_init(r57830);
        mpfr_init_set_str(r57831, "6.24960210020365e+172", 10, MPFR_RNDN);
        mpfr_init(r57832);
        mpfr_init(r57833);
        mpfr_init(r57834);
        mpfr_init(r57835);
        mpfr_init(r57836);
        mpfr_init(r57837);
        mpfr_init(r57838);
        mpfr_init(r57839);
        mpfr_init(r57840);
        mpfr_init(r57841);
        mpfr_init(r57842);
        mpfr_init(r57843);
}

double f_dm(double i, double n) {
        mpfr_set_d(r57810, i, MPFR_RNDN);
        ;
        mpfr_set_si(r57812, mpfr_cmp(r57810, r57811) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r57815, n, MPFR_RNDN);
        mpfr_div(r57816, r57810, r57815, MPFR_RNDN);
        mpfr_add(r57817, r57814, r57816, MPFR_RNDN);
        mpfr_pow(r57818, r57817, r57815, MPFR_RNDN);
        mpfr_sub(r57819, r57818, r57814, MPFR_RNDN);
        mpfr_cbrt(r57820, r57819, MPFR_RNDN);
        mpfr_mul(r57821, r57820, r57820, MPFR_RNDN);
        mpfr_mul(r57822, r57821, r57820, MPFR_RNDN);
        mpfr_div(r57823, r57822, r57816, MPFR_RNDN);
        mpfr_mul(r57824, r57813, r57823, MPFR_RNDN);
        ;
        mpfr_set_si(r57826, mpfr_cmp(r57810, r57825) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r57828, r57827, r57810, MPFR_RNDN);
        mpfr_add(r57829, r57828, r57813, MPFR_RNDN);
        mpfr_mul(r57830, r57829, r57815, MPFR_RNDN);
        ;
        mpfr_set_si(r57832, mpfr_cmp(r57810, r57831) <= 0, MPFR_RNDN);
        mpfr_log(r57833, r57815, MPFR_RNDN);
        mpfr_log(r57834, r57810, MPFR_RNDN);
        mpfr_sub(r57835, r57833, r57834, MPFR_RNDN);
        mpfr_div(r57836, r57835, r57815, MPFR_RNDN);
        mpfr_exp(r57837, r57836, MPFR_RNDN);
        mpfr_sub(r57838, r57837, r57814, MPFR_RNDN);
        mpfr_div(r57839, r57838, r57816, MPFR_RNDN);
        mpfr_mul(r57840, r57813, r57839, MPFR_RNDN);
        if (mpfr_get_si(r57832, MPFR_RNDN)) { mpfr_set(r57841, r57824, MPFR_RNDN); } else { mpfr_set(r57841, r57840, MPFR_RNDN); };
        if (mpfr_get_si(r57826, MPFR_RNDN)) { mpfr_set(r57842, r57830, MPFR_RNDN); } else { mpfr_set(r57842, r57841, MPFR_RNDN); };
        if (mpfr_get_si(r57812, MPFR_RNDN)) { mpfr_set(r57843, r57824, MPFR_RNDN); } else { mpfr_set(r57843, r57842, MPFR_RNDN); };
        return mpfr_get_d(r57843, MPFR_RNDN);
}

