#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 r57896 = 100;
        float r57897 = 1;
        float r57898 = i;
        float r57899 = n;
        float r57900 = r57898 / r57899;
        float r57901 = r57897 + r57900;
        float r57902 = pow(r57901, r57899);
        float r57903 = r57902 - r57897;
        float r57904 = r57903 / r57900;
        float r57905 = r57896 * r57904;
        return r57905;
}

double f_id(double i, double n) {
        double r57906 = 100;
        double r57907 = 1;
        double r57908 = i;
        double r57909 = n;
        double r57910 = r57908 / r57909;
        double r57911 = r57907 + r57910;
        double r57912 = pow(r57911, r57909);
        double r57913 = r57912 - r57907;
        double r57914 = r57913 / r57910;
        double r57915 = r57906 * r57914;
        return r57915;
}


double f_of(float i, float n) {
        float r57916 = i;
        float r57917 = -0.07666359635680058;
        bool r57918 = r57916 <= r57917;
        float r57919 = 100;
        float r57920 = 1;
        float r57921 = n;
        float r57922 = r57916 / r57921;
        float r57923 = r57920 + r57922;
        float r57924 = pow(r57923, r57921);
        float r57925 = r57924 - r57920;
        float r57926 = cbrt(r57925);
        float r57927 = r57926 * r57926;
        float r57928 = r57927 * r57926;
        float r57929 = r57928 / r57922;
        float r57930 = r57919 * r57929;
        float r57931 = 1.1209319314423736e-07;
        bool r57932 = r57916 <= r57931;
        float r57933 = 1/6;
        float r57934 = 2;
        float r57935 = pow(r57916, r57934);
        float r57936 = r57921 * r57935;
        float r57937 = r57933 * r57936;
        float r57938 = 1/2;
        float r57939 = r57921 * r57916;
        float r57940 = r57938 * r57939;
        float r57941 = r57937 + r57940;
        float r57942 = r57921 + r57941;
        float r57943 = r57919 * r57942;
        float r57944 = 6.24960210020365e+172;
        bool r57945 = r57916 <= r57944;
        float r57946 = r57919 / r57922;
        float r57947 = r57916 * r57916;
        float r57948 = r57938 / r57947;
        float r57949 = r57933 / r57916;
        float r57950 = r57949 / r57947;
        float r57951 = r57916 + r57950;
        float r57952 = r57948 + r57951;
        float r57953 = r57946 * r57952;
        float r57954 = r57945 ? r57930 : r57953;
        float r57955 = r57932 ? r57943 : r57954;
        float r57956 = r57918 ? r57930 : r57955;
        return r57956;
}

double f_od(double i, double n) {
        double r57957 = i;
        double r57958 = -0.07666359635680058;
        bool r57959 = r57957 <= r57958;
        double r57960 = 100;
        double r57961 = 1;
        double r57962 = n;
        double r57963 = r57957 / r57962;
        double r57964 = r57961 + r57963;
        double r57965 = pow(r57964, r57962);
        double r57966 = r57965 - r57961;
        double r57967 = cbrt(r57966);
        double r57968 = r57967 * r57967;
        double r57969 = r57968 * r57967;
        double r57970 = r57969 / r57963;
        double r57971 = r57960 * r57970;
        double r57972 = 1.1209319314423736e-07;
        bool r57973 = r57957 <= r57972;
        double r57974 = 1/6;
        double r57975 = 2;
        double r57976 = pow(r57957, r57975);
        double r57977 = r57962 * r57976;
        double r57978 = r57974 * r57977;
        double r57979 = 1/2;
        double r57980 = r57962 * r57957;
        double r57981 = r57979 * r57980;
        double r57982 = r57978 + r57981;
        double r57983 = r57962 + r57982;
        double r57984 = r57960 * r57983;
        double r57985 = 6.24960210020365e+172;
        bool r57986 = r57957 <= r57985;
        double r57987 = r57960 / r57963;
        double r57988 = r57957 * r57957;
        double r57989 = r57979 / r57988;
        double r57990 = r57974 / r57957;
        double r57991 = r57990 / r57988;
        double r57992 = r57957 + r57991;
        double r57993 = r57989 + r57992;
        double r57994 = r57987 * r57993;
        double r57995 = r57986 ? r57971 : r57994;
        double r57996 = r57973 ? r57984 : r57995;
        double r57997 = r57959 ? r57971 : r57996;
        return r57997;
}

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 r57998, r57999, r58000, r58001, r58002, r58003, r58004, r58005, r58006, r58007;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r57998, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r57999, "1", 10, MPFR_RNDN);
        mpfr_init(r58000);
        mpfr_init(r58001);
        mpfr_init(r58002);
        mpfr_init(r58003);
        mpfr_init(r58004);
        mpfr_init(r58005);
        mpfr_init(r58006);
        mpfr_init(r58007);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r58000, i, MPFR_RNDN);
        mpfr_set_d(r58001, n, MPFR_RNDN);
        mpfr_div(r58002, r58000, r58001, MPFR_RNDN);
        mpfr_add(r58003, r57999, r58002, MPFR_RNDN);
        mpfr_pow(r58004, r58003, r58001, MPFR_RNDN);
        mpfr_sub(r58005, r58004, r57999, MPFR_RNDN);
        mpfr_div(r58006, r58005, r58002, MPFR_RNDN);
        mpfr_mul(r58007, r57998, r58006, MPFR_RNDN);
        return mpfr_get_d(r58007, MPFR_RNDN);
}

static mpfr_t r58008, r58009, r58010, r58011, r58012, r58013, r58014, r58015, r58016, r58017, r58018, r58019, r58020, r58021, r58022, r58023, r58024, r58025, r58026, r58027, r58028, r58029, r58030, r58031, r58032, r58033, r58034, r58035, r58036, r58037, r58038, r58039, r58040, r58041, r58042, r58043, r58044, r58045, r58046, r58047, r58048;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r58008);
        mpfr_init_set_str(r58009, "-0.07666359635680058", 10, MPFR_RNDN);
        mpfr_init(r58010);
        mpfr_init_set_str(r58011, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r58012, "1", 10, MPFR_RNDN);
        mpfr_init(r58013);
        mpfr_init(r58014);
        mpfr_init(r58015);
        mpfr_init(r58016);
        mpfr_init(r58017);
        mpfr_init(r58018);
        mpfr_init(r58019);
        mpfr_init(r58020);
        mpfr_init(r58021);
        mpfr_init(r58022);
        mpfr_init_set_str(r58023, "1.1209319314423736e-07", 10, MPFR_RNDN);
        mpfr_init(r58024);
        mpfr_init_set_str(r58025, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r58026, "2", 10, MPFR_RNDN);
        mpfr_init(r58027);
        mpfr_init(r58028);
        mpfr_init(r58029);
        mpfr_init_set_str(r58030, "1/2", 10, MPFR_RNDN);
        mpfr_init(r58031);
        mpfr_init(r58032);
        mpfr_init(r58033);
        mpfr_init(r58034);
        mpfr_init(r58035);
        mpfr_init_set_str(r58036, "6.24960210020365e+172", 10, MPFR_RNDN);
        mpfr_init(r58037);
        mpfr_init(r58038);
        mpfr_init(r58039);
        mpfr_init(r58040);
        mpfr_init(r58041);
        mpfr_init(r58042);
        mpfr_init(r58043);
        mpfr_init(r58044);
        mpfr_init(r58045);
        mpfr_init(r58046);
        mpfr_init(r58047);
        mpfr_init(r58048);
}

double f_fm(double i, double n) {
        mpfr_set_d(r58008, i, MPFR_RNDN);
        ;
        mpfr_set_si(r58010, mpfr_cmp(r58008, r58009) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r58013, n, MPFR_RNDN);
        mpfr_div(r58014, r58008, r58013, MPFR_RNDN);
        mpfr_add(r58015, r58012, r58014, MPFR_RNDN);
        mpfr_pow(r58016, r58015, r58013, MPFR_RNDN);
        mpfr_sub(r58017, r58016, r58012, MPFR_RNDN);
        mpfr_cbrt(r58018, r58017, MPFR_RNDN);
        mpfr_mul(r58019, r58018, r58018, MPFR_RNDN);
        mpfr_mul(r58020, r58019, r58018, MPFR_RNDN);
        mpfr_div(r58021, r58020, r58014, MPFR_RNDN);
        mpfr_mul(r58022, r58011, r58021, MPFR_RNDN);
        ;
        mpfr_set_si(r58024, mpfr_cmp(r58008, r58023) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r58027, r58008, r58026, MPFR_RNDN);
        mpfr_mul(r58028, r58013, r58027, MPFR_RNDN);
        mpfr_mul(r58029, r58025, r58028, MPFR_RNDN);
        ;
        mpfr_mul(r58031, r58013, r58008, MPFR_RNDN);
        mpfr_mul(r58032, r58030, r58031, MPFR_RNDN);
        mpfr_add(r58033, r58029, r58032, MPFR_RNDN);
        mpfr_add(r58034, r58013, r58033, MPFR_RNDN);
        mpfr_mul(r58035, r58011, r58034, MPFR_RNDN);
        ;
        mpfr_set_si(r58037, mpfr_cmp(r58008, r58036) <= 0, MPFR_RNDN);
        mpfr_div(r58038, r58011, r58014, MPFR_RNDN);
        mpfr_mul(r58039, r58008, r58008, MPFR_RNDN);
        mpfr_div(r58040, r58030, r58039, MPFR_RNDN);
        mpfr_div(r58041, r58025, r58008, MPFR_RNDN);
        mpfr_div(r58042, r58041, r58039, MPFR_RNDN);
        mpfr_add(r58043, r58008, r58042, MPFR_RNDN);
        mpfr_add(r58044, r58040, r58043, MPFR_RNDN);
        mpfr_mul(r58045, r58038, r58044, MPFR_RNDN);
        if (mpfr_get_si(r58037, MPFR_RNDN)) { mpfr_set(r58046, r58022, MPFR_RNDN); } else { mpfr_set(r58046, r58045, MPFR_RNDN); };
        if (mpfr_get_si(r58024, MPFR_RNDN)) { mpfr_set(r58047, r58035, MPFR_RNDN); } else { mpfr_set(r58047, r58046, MPFR_RNDN); };
        if (mpfr_get_si(r58010, MPFR_RNDN)) { mpfr_set(r58048, r58022, MPFR_RNDN); } else { mpfr_set(r58048, r58047, MPFR_RNDN); };
        return mpfr_get_d(r58048, MPFR_RNDN);
}

static mpfr_t r58049, r58050, r58051, r58052, r58053, r58054, r58055, r58056, r58057, r58058, r58059, r58060, r58061, r58062, r58063, r58064, r58065, r58066, r58067, r58068, r58069, r58070, r58071, r58072, r58073, r58074, r58075, r58076, r58077, r58078, r58079, r58080, r58081, r58082, r58083, r58084, r58085, r58086, r58087, r58088, r58089;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r58049);
        mpfr_init_set_str(r58050, "-0.07666359635680058", 10, MPFR_RNDN);
        mpfr_init(r58051);
        mpfr_init_set_str(r58052, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r58053, "1", 10, MPFR_RNDN);
        mpfr_init(r58054);
        mpfr_init(r58055);
        mpfr_init(r58056);
        mpfr_init(r58057);
        mpfr_init(r58058);
        mpfr_init(r58059);
        mpfr_init(r58060);
        mpfr_init(r58061);
        mpfr_init(r58062);
        mpfr_init(r58063);
        mpfr_init_set_str(r58064, "1.1209319314423736e-07", 10, MPFR_RNDN);
        mpfr_init(r58065);
        mpfr_init_set_str(r58066, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r58067, "2", 10, MPFR_RNDN);
        mpfr_init(r58068);
        mpfr_init(r58069);
        mpfr_init(r58070);
        mpfr_init_set_str(r58071, "1/2", 10, MPFR_RNDN);
        mpfr_init(r58072);
        mpfr_init(r58073);
        mpfr_init(r58074);
        mpfr_init(r58075);
        mpfr_init(r58076);
        mpfr_init_set_str(r58077, "6.24960210020365e+172", 10, MPFR_RNDN);
        mpfr_init(r58078);
        mpfr_init(r58079);
        mpfr_init(r58080);
        mpfr_init(r58081);
        mpfr_init(r58082);
        mpfr_init(r58083);
        mpfr_init(r58084);
        mpfr_init(r58085);
        mpfr_init(r58086);
        mpfr_init(r58087);
        mpfr_init(r58088);
        mpfr_init(r58089);
}

double f_dm(double i, double n) {
        mpfr_set_d(r58049, i, MPFR_RNDN);
        ;
        mpfr_set_si(r58051, mpfr_cmp(r58049, r58050) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r58054, n, MPFR_RNDN);
        mpfr_div(r58055, r58049, r58054, MPFR_RNDN);
        mpfr_add(r58056, r58053, r58055, MPFR_RNDN);
        mpfr_pow(r58057, r58056, r58054, MPFR_RNDN);
        mpfr_sub(r58058, r58057, r58053, MPFR_RNDN);
        mpfr_cbrt(r58059, r58058, MPFR_RNDN);
        mpfr_mul(r58060, r58059, r58059, MPFR_RNDN);
        mpfr_mul(r58061, r58060, r58059, MPFR_RNDN);
        mpfr_div(r58062, r58061, r58055, MPFR_RNDN);
        mpfr_mul(r58063, r58052, r58062, MPFR_RNDN);
        ;
        mpfr_set_si(r58065, mpfr_cmp(r58049, r58064) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r58068, r58049, r58067, MPFR_RNDN);
        mpfr_mul(r58069, r58054, r58068, MPFR_RNDN);
        mpfr_mul(r58070, r58066, r58069, MPFR_RNDN);
        ;
        mpfr_mul(r58072, r58054, r58049, MPFR_RNDN);
        mpfr_mul(r58073, r58071, r58072, MPFR_RNDN);
        mpfr_add(r58074, r58070, r58073, MPFR_RNDN);
        mpfr_add(r58075, r58054, r58074, MPFR_RNDN);
        mpfr_mul(r58076, r58052, r58075, MPFR_RNDN);
        ;
        mpfr_set_si(r58078, mpfr_cmp(r58049, r58077) <= 0, MPFR_RNDN);
        mpfr_div(r58079, r58052, r58055, MPFR_RNDN);
        mpfr_mul(r58080, r58049, r58049, MPFR_RNDN);
        mpfr_div(r58081, r58071, r58080, MPFR_RNDN);
        mpfr_div(r58082, r58066, r58049, MPFR_RNDN);
        mpfr_div(r58083, r58082, r58080, MPFR_RNDN);
        mpfr_add(r58084, r58049, r58083, MPFR_RNDN);
        mpfr_add(r58085, r58081, r58084, MPFR_RNDN);
        mpfr_mul(r58086, r58079, r58085, MPFR_RNDN);
        if (mpfr_get_si(r58078, MPFR_RNDN)) { mpfr_set(r58087, r58063, MPFR_RNDN); } else { mpfr_set(r58087, r58086, MPFR_RNDN); };
        if (mpfr_get_si(r58065, MPFR_RNDN)) { mpfr_set(r58088, r58076, MPFR_RNDN); } else { mpfr_set(r58088, r58087, MPFR_RNDN); };
        if (mpfr_get_si(r58051, MPFR_RNDN)) { mpfr_set(r58089, r58063, MPFR_RNDN); } else { mpfr_set(r58089, r58088, MPFR_RNDN); };
        return mpfr_get_d(r58089, MPFR_RNDN);
}

