#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 r10145 = 100;
        float r10146 = 1;
        float r10147 = i;
        float r10148 = n;
        float r10149 = r10147 / r10148;
        float r10150 = r10146 + r10149;
        float r10151 = pow(r10150, r10148);
        float r10152 = r10151 - r10146;
        float r10153 = r10152 / r10149;
        float r10154 = r10145 * r10153;
        return r10154;
}

double f_id(double i, double n) {
        double r10155 = 100;
        double r10156 = 1;
        double r10157 = i;
        double r10158 = n;
        double r10159 = r10157 / r10158;
        double r10160 = r10156 + r10159;
        double r10161 = pow(r10160, r10158);
        double r10162 = r10161 - r10156;
        double r10163 = r10162 / r10159;
        double r10164 = r10155 * r10163;
        return r10164;
}


double f_of(float i, float n) {
        float r10165 = i;
        float r10166 = -3.0747822661954016e-06;
        bool r10167 = r10165 <= r10166;
        float r10168 = 100;
        float r10169 = n;
        float r10170 = r10165 / r10169;
        float r10171 = log1p(r10170);
        float r10172 = r10171 * r10169;
        float r10173 = exp(r10172);
        float r10174 = 1;
        float r10175 = r10173 - r10174;
        float r10176 = r10175 / r10170;
        float r10177 = r10168 * r10176;
        float r10178 = 0.05659584536834399;
        bool r10179 = r10165 <= r10178;
        float r10180 = r10168 * r10169;
        float r10181 = 1/6;
        float r10182 = 1/2;
        float r10183 = fma(r10181, r10165, r10182);
        float r10184 = fma(r10165, r10183, r10174);
        float r10185 = r10180 * r10184;
        float r10186 = 6.973980633362326e+141;
        bool r10187 = r10165 <= r10186;
        float r10188 = r10174 + r10170;
        float r10189 = log(r10188);
        float r10190 = r10169 * r10189;
        float r10191 = expm1(r10190);
        float r10192 = r10191 / r10170;
        float r10193 = r10168 * r10192;
        float r10194 = pow(r10188, r10169);
        float r10195 = r10194 - r10174;
        float r10196 = r10195 * r10168;
        float r10197 = r10196 / r10170;
        float r10198 = r10187 ? r10193 : r10197;
        float r10199 = r10179 ? r10185 : r10198;
        float r10200 = r10167 ? r10177 : r10199;
        return r10200;
}

double f_od(double i, double n) {
        double r10201 = i;
        double r10202 = -3.0747822661954016e-06;
        bool r10203 = r10201 <= r10202;
        double r10204 = 100;
        double r10205 = n;
        double r10206 = r10201 / r10205;
        double r10207 = log1p(r10206);
        double r10208 = r10207 * r10205;
        double r10209 = exp(r10208);
        double r10210 = 1;
        double r10211 = r10209 - r10210;
        double r10212 = r10211 / r10206;
        double r10213 = r10204 * r10212;
        double r10214 = 0.05659584536834399;
        bool r10215 = r10201 <= r10214;
        double r10216 = r10204 * r10205;
        double r10217 = 1/6;
        double r10218 = 1/2;
        double r10219 = fma(r10217, r10201, r10218);
        double r10220 = fma(r10201, r10219, r10210);
        double r10221 = r10216 * r10220;
        double r10222 = 6.973980633362326e+141;
        bool r10223 = r10201 <= r10222;
        double r10224 = r10210 + r10206;
        double r10225 = log(r10224);
        double r10226 = r10205 * r10225;
        double r10227 = expm1(r10226);
        double r10228 = r10227 / r10206;
        double r10229 = r10204 * r10228;
        double r10230 = pow(r10224, r10205);
        double r10231 = r10230 - r10210;
        double r10232 = r10231 * r10204;
        double r10233 = r10232 / r10206;
        double r10234 = r10223 ? r10229 : r10233;
        double r10235 = r10215 ? r10221 : r10234;
        double r10236 = r10203 ? r10213 : r10235;
        return r10236;
}

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 r10237, r10238, r10239, r10240, r10241, r10242, r10243, r10244, r10245, r10246;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3152);
        mpfr_init_set_str(r10237, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r10238, "1", 10, MPFR_RNDN);
        mpfr_init(r10239);
        mpfr_init(r10240);
        mpfr_init(r10241);
        mpfr_init(r10242);
        mpfr_init(r10243);
        mpfr_init(r10244);
        mpfr_init(r10245);
        mpfr_init(r10246);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r10239, i, MPFR_RNDN);
        mpfr_set_d(r10240, n, MPFR_RNDN);
        mpfr_div(r10241, r10239, r10240, MPFR_RNDN);
        mpfr_add(r10242, r10238, r10241, MPFR_RNDN);
        mpfr_pow(r10243, r10242, r10240, MPFR_RNDN);
        mpfr_sub(r10244, r10243, r10238, MPFR_RNDN);
        mpfr_div(r10245, r10244, r10241, MPFR_RNDN);
        mpfr_mul(r10246, r10237, r10245, MPFR_RNDN);
        return mpfr_get_d(r10246, MPFR_RNDN);
}

static mpfr_t r10247, r10248, r10249, r10250, r10251, r10252, r10253, r10254, r10255, r10256, r10257, r10258, r10259, r10260, r10261, r10262, r10263, r10264, r10265, r10266, r10267, r10268, r10269, r10270, r10271, r10272, r10273, r10274, r10275, r10276, r10277, r10278, r10279, r10280, r10281, r10282;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3152);
        mpfr_init(r10247);
        mpfr_init_set_str(r10248, "-3.0747822661954016e-06", 10, MPFR_RNDN);
        mpfr_init(r10249);
        mpfr_init_set_str(r10250, "100", 10, MPFR_RNDN);
        mpfr_init(r10251);
        mpfr_init(r10252);
        mpfr_init(r10253);
        mpfr_init(r10254);
        mpfr_init(r10255);
        mpfr_init_set_str(r10256, "1", 10, MPFR_RNDN);
        mpfr_init(r10257);
        mpfr_init(r10258);
        mpfr_init(r10259);
        mpfr_init_set_str(r10260, "0.05659584536834399", 10, MPFR_RNDN);
        mpfr_init(r10261);
        mpfr_init(r10262);
        mpfr_init_set_str(r10263, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r10264, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10265);
        mpfr_init(r10266);
        mpfr_init(r10267);
        mpfr_init_set_str(r10268, "6.973980633362326e+141", 10, MPFR_RNDN);
        mpfr_init(r10269);
        mpfr_init(r10270);
        mpfr_init(r10271);
        mpfr_init(r10272);
        mpfr_init(r10273);
        mpfr_init(r10274);
        mpfr_init(r10275);
        mpfr_init(r10276);
        mpfr_init(r10277);
        mpfr_init(r10278);
        mpfr_init(r10279);
        mpfr_init(r10280);
        mpfr_init(r10281);
        mpfr_init(r10282);
}

double f_fm(double i, double n) {
        mpfr_set_d(r10247, i, MPFR_RNDN);
        ;
        mpfr_set_si(r10249, mpfr_cmp(r10247, r10248) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10251, n, MPFR_RNDN);
        mpfr_div(r10252, r10247, r10251, MPFR_RNDN);
        mpfr_log1p(r10253, r10252, MPFR_RNDN);
        mpfr_mul(r10254, r10253, r10251, MPFR_RNDN);
        mpfr_exp(r10255, r10254, MPFR_RNDN);
        ;
        mpfr_sub(r10257, r10255, r10256, MPFR_RNDN);
        mpfr_div(r10258, r10257, r10252, MPFR_RNDN);
        mpfr_mul(r10259, r10250, r10258, MPFR_RNDN);
        ;
        mpfr_set_si(r10261, mpfr_cmp(r10247, r10260) <= 0, MPFR_RNDN);
        mpfr_mul(r10262, r10250, r10251, MPFR_RNDN);
        ;
        ;
        mpfr_fma(r10265, r10263, r10247, r10264, MPFR_RNDN);
        mpfr_fma(r10266, r10247, r10265, r10256, MPFR_RNDN);
        mpfr_mul(r10267, r10262, r10266, MPFR_RNDN);
        ;
        mpfr_set_si(r10269, mpfr_cmp(r10247, r10268) <= 0, MPFR_RNDN);
        mpfr_add(r10270, r10256, r10252, MPFR_RNDN);
        mpfr_log(r10271, r10270, MPFR_RNDN);
        mpfr_mul(r10272, r10251, r10271, MPFR_RNDN);
        mpfr_expm1(r10273, r10272, MPFR_RNDN);
        mpfr_div(r10274, r10273, r10252, MPFR_RNDN);
        mpfr_mul(r10275, r10250, r10274, MPFR_RNDN);
        mpfr_pow(r10276, r10270, r10251, MPFR_RNDN);
        mpfr_sub(r10277, r10276, r10256, MPFR_RNDN);
        mpfr_mul(r10278, r10277, r10250, MPFR_RNDN);
        mpfr_div(r10279, r10278, r10252, MPFR_RNDN);
        if (mpfr_get_si(r10269, MPFR_RNDN)) { mpfr_set(r10280, r10275, MPFR_RNDN); } else { mpfr_set(r10280, r10279, MPFR_RNDN); };
        if (mpfr_get_si(r10261, MPFR_RNDN)) { mpfr_set(r10281, r10267, MPFR_RNDN); } else { mpfr_set(r10281, r10280, MPFR_RNDN); };
        if (mpfr_get_si(r10249, MPFR_RNDN)) { mpfr_set(r10282, r10259, MPFR_RNDN); } else { mpfr_set(r10282, r10281, MPFR_RNDN); };
        return mpfr_get_d(r10282, MPFR_RNDN);
}

static mpfr_t r10283, r10284, r10285, r10286, r10287, r10288, r10289, r10290, r10291, r10292, r10293, r10294, r10295, r10296, r10297, r10298, r10299, r10300, r10301, r10302, r10303, r10304, r10305, r10306, r10307, r10308, r10309, r10310, r10311, r10312, r10313, r10314, r10315, r10316, r10317, r10318;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3152);
        mpfr_init(r10283);
        mpfr_init_set_str(r10284, "-3.0747822661954016e-06", 10, MPFR_RNDN);
        mpfr_init(r10285);
        mpfr_init_set_str(r10286, "100", 10, MPFR_RNDN);
        mpfr_init(r10287);
        mpfr_init(r10288);
        mpfr_init(r10289);
        mpfr_init(r10290);
        mpfr_init(r10291);
        mpfr_init_set_str(r10292, "1", 10, MPFR_RNDN);
        mpfr_init(r10293);
        mpfr_init(r10294);
        mpfr_init(r10295);
        mpfr_init_set_str(r10296, "0.05659584536834399", 10, MPFR_RNDN);
        mpfr_init(r10297);
        mpfr_init(r10298);
        mpfr_init_set_str(r10299, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r10300, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10301);
        mpfr_init(r10302);
        mpfr_init(r10303);
        mpfr_init_set_str(r10304, "6.973980633362326e+141", 10, MPFR_RNDN);
        mpfr_init(r10305);
        mpfr_init(r10306);
        mpfr_init(r10307);
        mpfr_init(r10308);
        mpfr_init(r10309);
        mpfr_init(r10310);
        mpfr_init(r10311);
        mpfr_init(r10312);
        mpfr_init(r10313);
        mpfr_init(r10314);
        mpfr_init(r10315);
        mpfr_init(r10316);
        mpfr_init(r10317);
        mpfr_init(r10318);
}

double f_dm(double i, double n) {
        mpfr_set_d(r10283, i, MPFR_RNDN);
        ;
        mpfr_set_si(r10285, mpfr_cmp(r10283, r10284) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10287, n, MPFR_RNDN);
        mpfr_div(r10288, r10283, r10287, MPFR_RNDN);
        mpfr_log1p(r10289, r10288, MPFR_RNDN);
        mpfr_mul(r10290, r10289, r10287, MPFR_RNDN);
        mpfr_exp(r10291, r10290, MPFR_RNDN);
        ;
        mpfr_sub(r10293, r10291, r10292, MPFR_RNDN);
        mpfr_div(r10294, r10293, r10288, MPFR_RNDN);
        mpfr_mul(r10295, r10286, r10294, MPFR_RNDN);
        ;
        mpfr_set_si(r10297, mpfr_cmp(r10283, r10296) <= 0, MPFR_RNDN);
        mpfr_mul(r10298, r10286, r10287, MPFR_RNDN);
        ;
        ;
        mpfr_fma(r10301, r10299, r10283, r10300, MPFR_RNDN);
        mpfr_fma(r10302, r10283, r10301, r10292, MPFR_RNDN);
        mpfr_mul(r10303, r10298, r10302, MPFR_RNDN);
        ;
        mpfr_set_si(r10305, mpfr_cmp(r10283, r10304) <= 0, MPFR_RNDN);
        mpfr_add(r10306, r10292, r10288, MPFR_RNDN);
        mpfr_log(r10307, r10306, MPFR_RNDN);
        mpfr_mul(r10308, r10287, r10307, MPFR_RNDN);
        mpfr_expm1(r10309, r10308, MPFR_RNDN);
        mpfr_div(r10310, r10309, r10288, MPFR_RNDN);
        mpfr_mul(r10311, r10286, r10310, MPFR_RNDN);
        mpfr_pow(r10312, r10306, r10287, MPFR_RNDN);
        mpfr_sub(r10313, r10312, r10292, MPFR_RNDN);
        mpfr_mul(r10314, r10313, r10286, MPFR_RNDN);
        mpfr_div(r10315, r10314, r10288, MPFR_RNDN);
        if (mpfr_get_si(r10305, MPFR_RNDN)) { mpfr_set(r10316, r10311, MPFR_RNDN); } else { mpfr_set(r10316, r10315, MPFR_RNDN); };
        if (mpfr_get_si(r10297, MPFR_RNDN)) { mpfr_set(r10317, r10303, MPFR_RNDN); } else { mpfr_set(r10317, r10316, MPFR_RNDN); };
        if (mpfr_get_si(r10285, MPFR_RNDN)) { mpfr_set(r10318, r10295, MPFR_RNDN); } else { mpfr_set(r10318, r10317, MPFR_RNDN); };
        return mpfr_get_d(r10318, MPFR_RNDN);
}

