#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 r16296 = 100.0f;
        float r16297 = 1.0f;
        float r16298 = i;
        float r16299 = n;
        float r16300 = r16298 / r16299;
        float r16301 = r16297 + r16300;
        float r16302 = pow(r16301, r16299);
        float r16303 = r16302 - r16297;
        float r16304 = r16303 / r16300;
        float r16305 = r16296 * r16304;
        return r16305;
}

double f_id(double i, double n) {
        double r16306 = 100.0;
        double r16307 = 1.0;
        double r16308 = i;
        double r16309 = n;
        double r16310 = r16308 / r16309;
        double r16311 = r16307 + r16310;
        double r16312 = pow(r16311, r16309);
        double r16313 = r16312 - r16307;
        double r16314 = r16313 / r16310;
        double r16315 = r16306 * r16314;
        return r16315;
}


double f_of(float i, float n) {
        float r16316 = i;
        float r16317 = -1.8225531693105528e-14f;
        bool r16318 = r16316 <= r16317;
        float r16319 = n;
        float r16320 = r16316 / r16319;
        float r16321 = log1p(r16320);
        float r16322 = r16319 * r16321;
        float r16323 = expm1(r16322);
        float r16324 = 100.0f;
        float r16325 = r16320 / r16324;
        float r16326 = r16323 / r16325;
        float r16327 = 6.803176864087282e-14f;
        bool r16328 = r16316 <= r16327;
        float r16329 = r16316 * r16316;
        float r16330 = 0.1666666716337204f;
        float r16331 = r16319 * r16330;
        float r16332 = fma(r16329, r16331, r16319);
        float r16333 = r16324 * r16316;
        float r16334 = 0.5f;
        float r16335 = r16319 * r16334;
        float r16336 = r16333 * r16335;
        float r16337 = fma(r16324, r16332, r16336);
        float r16338 = 14669410333622272.0f;
        bool r16339 = r16316 <= r16338;
        float r16340 = 0.0f;
        float r16341 = r16339 ? r16326 : r16340;
        float r16342 = r16328 ? r16337 : r16341;
        float r16343 = r16318 ? r16326 : r16342;
        return r16343;
}

double f_od(double i, double n) {
        double r16344 = i;
        double r16345 = -1.8225531693105528e-14;
        bool r16346 = r16344 <= r16345;
        double r16347 = n;
        double r16348 = r16344 / r16347;
        double r16349 = log1p(r16348);
        double r16350 = r16347 * r16349;
        double r16351 = expm1(r16350);
        double r16352 = 100.0;
        double r16353 = r16348 / r16352;
        double r16354 = r16351 / r16353;
        double r16355 = 6.803176864087282e-14;
        bool r16356 = r16344 <= r16355;
        double r16357 = r16344 * r16344;
        double r16358 = 0.1666666716337204;
        double r16359 = r16347 * r16358;
        double r16360 = fma(r16357, r16359, r16347);
        double r16361 = r16352 * r16344;
        double r16362 = 0.5;
        double r16363 = r16347 * r16362;
        double r16364 = r16361 * r16363;
        double r16365 = fma(r16352, r16360, r16364);
        double r16366 = 14669410333622272.0;
        bool r16367 = r16344 <= r16366;
        double r16368 = 0.0;
        double r16369 = r16367 ? r16354 : r16368;
        double r16370 = r16356 ? r16365 : r16369;
        double r16371 = r16346 ? r16354 : r16370;
        return r16371;
}

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 r16372, r16373, r16374, r16375, r16376, r16377, r16378, r16379, r16380, r16381;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r16372, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r16373, "1", 10, MPFR_RNDN);
        mpfr_init(r16374);
        mpfr_init(r16375);
        mpfr_init(r16376);
        mpfr_init(r16377);
        mpfr_init(r16378);
        mpfr_init(r16379);
        mpfr_init(r16380);
        mpfr_init(r16381);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r16374, i, MPFR_RNDN);
        mpfr_set_d(r16375, n, MPFR_RNDN);
        mpfr_div(r16376, r16374, r16375, MPFR_RNDN);
        mpfr_add(r16377, r16373, r16376, MPFR_RNDN);
        mpfr_pow(r16378, r16377, r16375, MPFR_RNDN);
        mpfr_sub(r16379, r16378, r16373, MPFR_RNDN);
        mpfr_div(r16380, r16379, r16376, MPFR_RNDN);
        mpfr_mul(r16381, r16372, r16380, MPFR_RNDN);
        return mpfr_get_d(r16381, MPFR_RNDN);
}

static mpfr_t r16382, r16383, r16384, r16385, r16386, r16387, r16388, r16389, r16390, r16391, r16392, r16393, r16394, r16395, r16396, r16397, r16398, r16399, r16400, r16401, r16402, r16403, r16404, r16405, r16406, r16407, r16408, r16409;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r16382);
        mpfr_init_set_str(r16383, "-1.8225532f-14", 10, MPFR_RNDN);
        mpfr_init(r16384);
        mpfr_init(r16385);
        mpfr_init(r16386);
        mpfr_init(r16387);
        mpfr_init(r16388);
        mpfr_init(r16389);
        mpfr_init_set_str(r16390, "100", 10, MPFR_RNDN);
        mpfr_init(r16391);
        mpfr_init(r16392);
        mpfr_init_set_str(r16393, "6.803177f-14", 10, MPFR_RNDN);
        mpfr_init(r16394);
        mpfr_init(r16395);
        mpfr_init_set_str(r16396, "1/6", 10, MPFR_RNDN);
        mpfr_init(r16397);
        mpfr_init(r16398);
        mpfr_init(r16399);
        mpfr_init_set_str(r16400, "1/2", 10, MPFR_RNDN);
        mpfr_init(r16401);
        mpfr_init(r16402);
        mpfr_init(r16403);
        mpfr_init_set_str(r16404, "1.466941f+16", 10, MPFR_RNDN);
        mpfr_init(r16405);
        mpfr_init_set_str(r16406, "0", 10, MPFR_RNDN);
        mpfr_init(r16407);
        mpfr_init(r16408);
        mpfr_init(r16409);
}

double f_fm(double i, double n) {
        mpfr_set_d(r16382, i, MPFR_RNDN);
        ;
        mpfr_set_si(r16384, mpfr_cmp(r16382, r16383) <= 0, MPFR_RNDN);
        mpfr_set_d(r16385, n, MPFR_RNDN);
        mpfr_div(r16386, r16382, r16385, MPFR_RNDN);
        mpfr_log1p(r16387, r16386, MPFR_RNDN);
        mpfr_mul(r16388, r16385, r16387, MPFR_RNDN);
        mpfr_expm1(r16389, r16388, MPFR_RNDN);
        ;
        mpfr_div(r16391, r16386, r16390, MPFR_RNDN);
        mpfr_div(r16392, r16389, r16391, MPFR_RNDN);
        ;
        mpfr_set_si(r16394, mpfr_cmp(r16382, r16393) <= 0, MPFR_RNDN);
        mpfr_mul(r16395, r16382, r16382, MPFR_RNDN);
        ;
        mpfr_mul(r16397, r16385, r16396, MPFR_RNDN);
        mpfr_fma(r16398, r16395, r16397, r16385, MPFR_RNDN);
        mpfr_mul(r16399, r16390, r16382, MPFR_RNDN);
        ;
        mpfr_mul(r16401, r16385, r16400, MPFR_RNDN);
        mpfr_mul(r16402, r16399, r16401, MPFR_RNDN);
        mpfr_fma(r16403, r16390, r16398, r16402, MPFR_RNDN);
        ;
        mpfr_set_si(r16405, mpfr_cmp(r16382, r16404) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r16405, MPFR_RNDN)) { mpfr_set(r16407, r16392, MPFR_RNDN); } else { mpfr_set(r16407, r16406, MPFR_RNDN); };
        if (mpfr_get_si(r16394, MPFR_RNDN)) { mpfr_set(r16408, r16403, MPFR_RNDN); } else { mpfr_set(r16408, r16407, MPFR_RNDN); };
        if (mpfr_get_si(r16384, MPFR_RNDN)) { mpfr_set(r16409, r16392, MPFR_RNDN); } else { mpfr_set(r16409, r16408, MPFR_RNDN); };
        return mpfr_get_d(r16409, MPFR_RNDN);
}

static mpfr_t r16410, r16411, r16412, r16413, r16414, r16415, r16416, r16417, r16418, r16419, r16420, r16421, r16422, r16423, r16424, r16425, r16426, r16427, r16428, r16429, r16430, r16431, r16432, r16433, r16434, r16435, r16436, r16437;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r16410);
        mpfr_init_set_str(r16411, "-1.8225532f-14", 10, MPFR_RNDN);
        mpfr_init(r16412);
        mpfr_init(r16413);
        mpfr_init(r16414);
        mpfr_init(r16415);
        mpfr_init(r16416);
        mpfr_init(r16417);
        mpfr_init_set_str(r16418, "100", 10, MPFR_RNDN);
        mpfr_init(r16419);
        mpfr_init(r16420);
        mpfr_init_set_str(r16421, "6.803177f-14", 10, MPFR_RNDN);
        mpfr_init(r16422);
        mpfr_init(r16423);
        mpfr_init_set_str(r16424, "1/6", 10, MPFR_RNDN);
        mpfr_init(r16425);
        mpfr_init(r16426);
        mpfr_init(r16427);
        mpfr_init_set_str(r16428, "1/2", 10, MPFR_RNDN);
        mpfr_init(r16429);
        mpfr_init(r16430);
        mpfr_init(r16431);
        mpfr_init_set_str(r16432, "1.466941f+16", 10, MPFR_RNDN);
        mpfr_init(r16433);
        mpfr_init_set_str(r16434, "0", 10, MPFR_RNDN);
        mpfr_init(r16435);
        mpfr_init(r16436);
        mpfr_init(r16437);
}

double f_dm(double i, double n) {
        mpfr_set_d(r16410, i, MPFR_RNDN);
        ;
        mpfr_set_si(r16412, mpfr_cmp(r16410, r16411) <= 0, MPFR_RNDN);
        mpfr_set_d(r16413, n, MPFR_RNDN);
        mpfr_div(r16414, r16410, r16413, MPFR_RNDN);
        mpfr_log1p(r16415, r16414, MPFR_RNDN);
        mpfr_mul(r16416, r16413, r16415, MPFR_RNDN);
        mpfr_expm1(r16417, r16416, MPFR_RNDN);
        ;
        mpfr_div(r16419, r16414, r16418, MPFR_RNDN);
        mpfr_div(r16420, r16417, r16419, MPFR_RNDN);
        ;
        mpfr_set_si(r16422, mpfr_cmp(r16410, r16421) <= 0, MPFR_RNDN);
        mpfr_mul(r16423, r16410, r16410, MPFR_RNDN);
        ;
        mpfr_mul(r16425, r16413, r16424, MPFR_RNDN);
        mpfr_fma(r16426, r16423, r16425, r16413, MPFR_RNDN);
        mpfr_mul(r16427, r16418, r16410, MPFR_RNDN);
        ;
        mpfr_mul(r16429, r16413, r16428, MPFR_RNDN);
        mpfr_mul(r16430, r16427, r16429, MPFR_RNDN);
        mpfr_fma(r16431, r16418, r16426, r16430, MPFR_RNDN);
        ;
        mpfr_set_si(r16433, mpfr_cmp(r16410, r16432) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r16433, MPFR_RNDN)) { mpfr_set(r16435, r16420, MPFR_RNDN); } else { mpfr_set(r16435, r16434, MPFR_RNDN); };
        if (mpfr_get_si(r16422, MPFR_RNDN)) { mpfr_set(r16436, r16431, MPFR_RNDN); } else { mpfr_set(r16436, r16435, MPFR_RNDN); };
        if (mpfr_get_si(r16412, MPFR_RNDN)) { mpfr_set(r16437, r16420, MPFR_RNDN); } else { mpfr_set(r16437, r16436, MPFR_RNDN); };
        return mpfr_get_d(r16437, MPFR_RNDN);
}

