#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 r58054 = 100;
        float r58055 = 1;
        float r58056 = i;
        float r58057 = n;
        float r58058 = r58056 / r58057;
        float r58059 = r58055 + r58058;
        float r58060 = pow(r58059, r58057);
        float r58061 = r58060 - r58055;
        float r58062 = r58061 / r58058;
        float r58063 = r58054 * r58062;
        return r58063;
}

double f_id(double i, double n) {
        double r58064 = 100;
        double r58065 = 1;
        double r58066 = i;
        double r58067 = n;
        double r58068 = r58066 / r58067;
        double r58069 = r58065 + r58068;
        double r58070 = pow(r58069, r58067);
        double r58071 = r58070 - r58065;
        double r58072 = r58071 / r58068;
        double r58073 = r58064 * r58072;
        return r58073;
}


double f_of(float i, float n) {
        float r58074 = i;
        float r58075 = -2.849201036281836e-09;
        bool r58076 = r58074 <= r58075;
        float r58077 = 100;
        float r58078 = 1;
        float r58079 = n;
        float r58080 = r58074 / r58079;
        float r58081 = r58078 + r58080;
        float r58082 = pow(r58081, r58079);
        float r58083 = r58082 - r58078;
        float r58084 = cbrt(r58083);
        float r58085 = r58084 * r58084;
        float r58086 = r58085 * r58084;
        float r58087 = r58086 / r58080;
        float r58088 = r58077 * r58087;
        float r58089 = 1.1570910217973246e-07;
        bool r58090 = r58074 <= r58089;
        float r58091 = 50;
        float r58092 = r58091 * r58074;
        float r58093 = r58092 + r58077;
        float r58094 = r58093 * r58079;
        float r58095 = 6.896033226216904e+172;
        bool r58096 = r58074 <= r58095;
        float r58097 = log(r58079);
        float r58098 = log(r58074);
        float r58099 = r58097 - r58098;
        float r58100 = r58099 / r58079;
        float r58101 = exp(r58100);
        float r58102 = r58101 - r58078;
        float r58103 = r58102 / r58080;
        float r58104 = r58077 * r58103;
        float r58105 = r58096 ? r58088 : r58104;
        float r58106 = r58090 ? r58094 : r58105;
        float r58107 = r58076 ? r58088 : r58106;
        return r58107;
}

double f_od(double i, double n) {
        double r58108 = i;
        double r58109 = -2.849201036281836e-09;
        bool r58110 = r58108 <= r58109;
        double r58111 = 100;
        double r58112 = 1;
        double r58113 = n;
        double r58114 = r58108 / r58113;
        double r58115 = r58112 + r58114;
        double r58116 = pow(r58115, r58113);
        double r58117 = r58116 - r58112;
        double r58118 = cbrt(r58117);
        double r58119 = r58118 * r58118;
        double r58120 = r58119 * r58118;
        double r58121 = r58120 / r58114;
        double r58122 = r58111 * r58121;
        double r58123 = 1.1570910217973246e-07;
        bool r58124 = r58108 <= r58123;
        double r58125 = 50;
        double r58126 = r58125 * r58108;
        double r58127 = r58126 + r58111;
        double r58128 = r58127 * r58113;
        double r58129 = 6.896033226216904e+172;
        bool r58130 = r58108 <= r58129;
        double r58131 = log(r58113);
        double r58132 = log(r58108);
        double r58133 = r58131 - r58132;
        double r58134 = r58133 / r58113;
        double r58135 = exp(r58134);
        double r58136 = r58135 - r58112;
        double r58137 = r58136 / r58114;
        double r58138 = r58111 * r58137;
        double r58139 = r58130 ? r58122 : r58138;
        double r58140 = r58124 ? r58128 : r58139;
        double r58141 = r58110 ? r58122 : r58140;
        return r58141;
}

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 r58142, r58143, r58144, r58145, r58146, r58147, r58148, r58149, r58150, r58151;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r58142, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r58143, "1", 10, MPFR_RNDN);
        mpfr_init(r58144);
        mpfr_init(r58145);
        mpfr_init(r58146);
        mpfr_init(r58147);
        mpfr_init(r58148);
        mpfr_init(r58149);
        mpfr_init(r58150);
        mpfr_init(r58151);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r58144, i, MPFR_RNDN);
        mpfr_set_d(r58145, n, MPFR_RNDN);
        mpfr_div(r58146, r58144, r58145, MPFR_RNDN);
        mpfr_add(r58147, r58143, r58146, MPFR_RNDN);
        mpfr_pow(r58148, r58147, r58145, MPFR_RNDN);
        mpfr_sub(r58149, r58148, r58143, MPFR_RNDN);
        mpfr_div(r58150, r58149, r58146, MPFR_RNDN);
        mpfr_mul(r58151, r58142, r58150, MPFR_RNDN);
        return mpfr_get_d(r58151, MPFR_RNDN);
}

static mpfr_t r58152, r58153, r58154, r58155, r58156, r58157, r58158, r58159, r58160, r58161, r58162, r58163, r58164, r58165, r58166, r58167, r58168, r58169, r58170, r58171, r58172, r58173, r58174, r58175, r58176, r58177, r58178, r58179, r58180, r58181, r58182, r58183, r58184, r58185;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r58152);
        mpfr_init_set_str(r58153, "-2.849201036281836e-09", 10, MPFR_RNDN);
        mpfr_init(r58154);
        mpfr_init_set_str(r58155, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r58156, "1", 10, MPFR_RNDN);
        mpfr_init(r58157);
        mpfr_init(r58158);
        mpfr_init(r58159);
        mpfr_init(r58160);
        mpfr_init(r58161);
        mpfr_init(r58162);
        mpfr_init(r58163);
        mpfr_init(r58164);
        mpfr_init(r58165);
        mpfr_init(r58166);
        mpfr_init_set_str(r58167, "1.1570910217973246e-07", 10, MPFR_RNDN);
        mpfr_init(r58168);
        mpfr_init_set_str(r58169, "50", 10, MPFR_RNDN);
        mpfr_init(r58170);
        mpfr_init(r58171);
        mpfr_init(r58172);
        mpfr_init_set_str(r58173, "6.896033226216904e+172", 10, MPFR_RNDN);
        mpfr_init(r58174);
        mpfr_init(r58175);
        mpfr_init(r58176);
        mpfr_init(r58177);
        mpfr_init(r58178);
        mpfr_init(r58179);
        mpfr_init(r58180);
        mpfr_init(r58181);
        mpfr_init(r58182);
        mpfr_init(r58183);
        mpfr_init(r58184);
        mpfr_init(r58185);
}

double f_fm(double i, double n) {
        mpfr_set_d(r58152, i, MPFR_RNDN);
        ;
        mpfr_set_si(r58154, mpfr_cmp(r58152, r58153) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r58157, n, MPFR_RNDN);
        mpfr_div(r58158, r58152, r58157, MPFR_RNDN);
        mpfr_add(r58159, r58156, r58158, MPFR_RNDN);
        mpfr_pow(r58160, r58159, r58157, MPFR_RNDN);
        mpfr_sub(r58161, r58160, r58156, MPFR_RNDN);
        mpfr_cbrt(r58162, r58161, MPFR_RNDN);
        mpfr_mul(r58163, r58162, r58162, MPFR_RNDN);
        mpfr_mul(r58164, r58163, r58162, MPFR_RNDN);
        mpfr_div(r58165, r58164, r58158, MPFR_RNDN);
        mpfr_mul(r58166, r58155, r58165, MPFR_RNDN);
        ;
        mpfr_set_si(r58168, mpfr_cmp(r58152, r58167) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r58170, r58169, r58152, MPFR_RNDN);
        mpfr_add(r58171, r58170, r58155, MPFR_RNDN);
        mpfr_mul(r58172, r58171, r58157, MPFR_RNDN);
        ;
        mpfr_set_si(r58174, mpfr_cmp(r58152, r58173) <= 0, MPFR_RNDN);
        mpfr_log(r58175, r58157, MPFR_RNDN);
        mpfr_log(r58176, r58152, MPFR_RNDN);
        mpfr_sub(r58177, r58175, r58176, MPFR_RNDN);
        mpfr_div(r58178, r58177, r58157, MPFR_RNDN);
        mpfr_exp(r58179, r58178, MPFR_RNDN);
        mpfr_sub(r58180, r58179, r58156, MPFR_RNDN);
        mpfr_div(r58181, r58180, r58158, MPFR_RNDN);
        mpfr_mul(r58182, r58155, r58181, MPFR_RNDN);
        if (mpfr_get_si(r58174, MPFR_RNDN)) { mpfr_set(r58183, r58166, MPFR_RNDN); } else { mpfr_set(r58183, r58182, MPFR_RNDN); };
        if (mpfr_get_si(r58168, MPFR_RNDN)) { mpfr_set(r58184, r58172, MPFR_RNDN); } else { mpfr_set(r58184, r58183, MPFR_RNDN); };
        if (mpfr_get_si(r58154, MPFR_RNDN)) { mpfr_set(r58185, r58166, MPFR_RNDN); } else { mpfr_set(r58185, r58184, MPFR_RNDN); };
        return mpfr_get_d(r58185, MPFR_RNDN);
}

static mpfr_t r58186, r58187, r58188, r58189, r58190, r58191, r58192, r58193, r58194, r58195, r58196, r58197, r58198, r58199, r58200, r58201, r58202, r58203, r58204, r58205, r58206, r58207, r58208, r58209, r58210, r58211, r58212, r58213, r58214, r58215, r58216, r58217, r58218, r58219;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r58186);
        mpfr_init_set_str(r58187, "-2.849201036281836e-09", 10, MPFR_RNDN);
        mpfr_init(r58188);
        mpfr_init_set_str(r58189, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r58190, "1", 10, MPFR_RNDN);
        mpfr_init(r58191);
        mpfr_init(r58192);
        mpfr_init(r58193);
        mpfr_init(r58194);
        mpfr_init(r58195);
        mpfr_init(r58196);
        mpfr_init(r58197);
        mpfr_init(r58198);
        mpfr_init(r58199);
        mpfr_init(r58200);
        mpfr_init_set_str(r58201, "1.1570910217973246e-07", 10, MPFR_RNDN);
        mpfr_init(r58202);
        mpfr_init_set_str(r58203, "50", 10, MPFR_RNDN);
        mpfr_init(r58204);
        mpfr_init(r58205);
        mpfr_init(r58206);
        mpfr_init_set_str(r58207, "6.896033226216904e+172", 10, MPFR_RNDN);
        mpfr_init(r58208);
        mpfr_init(r58209);
        mpfr_init(r58210);
        mpfr_init(r58211);
        mpfr_init(r58212);
        mpfr_init(r58213);
        mpfr_init(r58214);
        mpfr_init(r58215);
        mpfr_init(r58216);
        mpfr_init(r58217);
        mpfr_init(r58218);
        mpfr_init(r58219);
}

double f_dm(double i, double n) {
        mpfr_set_d(r58186, i, MPFR_RNDN);
        ;
        mpfr_set_si(r58188, mpfr_cmp(r58186, r58187) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r58191, n, MPFR_RNDN);
        mpfr_div(r58192, r58186, r58191, MPFR_RNDN);
        mpfr_add(r58193, r58190, r58192, MPFR_RNDN);
        mpfr_pow(r58194, r58193, r58191, MPFR_RNDN);
        mpfr_sub(r58195, r58194, r58190, MPFR_RNDN);
        mpfr_cbrt(r58196, r58195, MPFR_RNDN);
        mpfr_mul(r58197, r58196, r58196, MPFR_RNDN);
        mpfr_mul(r58198, r58197, r58196, MPFR_RNDN);
        mpfr_div(r58199, r58198, r58192, MPFR_RNDN);
        mpfr_mul(r58200, r58189, r58199, MPFR_RNDN);
        ;
        mpfr_set_si(r58202, mpfr_cmp(r58186, r58201) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r58204, r58203, r58186, MPFR_RNDN);
        mpfr_add(r58205, r58204, r58189, MPFR_RNDN);
        mpfr_mul(r58206, r58205, r58191, MPFR_RNDN);
        ;
        mpfr_set_si(r58208, mpfr_cmp(r58186, r58207) <= 0, MPFR_RNDN);
        mpfr_log(r58209, r58191, MPFR_RNDN);
        mpfr_log(r58210, r58186, MPFR_RNDN);
        mpfr_sub(r58211, r58209, r58210, MPFR_RNDN);
        mpfr_div(r58212, r58211, r58191, MPFR_RNDN);
        mpfr_exp(r58213, r58212, MPFR_RNDN);
        mpfr_sub(r58214, r58213, r58190, MPFR_RNDN);
        mpfr_div(r58215, r58214, r58192, MPFR_RNDN);
        mpfr_mul(r58216, r58189, r58215, MPFR_RNDN);
        if (mpfr_get_si(r58208, MPFR_RNDN)) { mpfr_set(r58217, r58200, MPFR_RNDN); } else { mpfr_set(r58217, r58216, MPFR_RNDN); };
        if (mpfr_get_si(r58202, MPFR_RNDN)) { mpfr_set(r58218, r58206, MPFR_RNDN); } else { mpfr_set(r58218, r58217, MPFR_RNDN); };
        if (mpfr_get_si(r58188, MPFR_RNDN)) { mpfr_set(r58219, r58200, MPFR_RNDN); } else { mpfr_set(r58219, r58218, MPFR_RNDN); };
        return mpfr_get_d(r58219, MPFR_RNDN);
}

