#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 r22934 = 100;
        float r22935 = 1;
        float r22936 = i;
        float r22937 = n;
        float r22938 = r22936 / r22937;
        float r22939 = r22935 + r22938;
        float r22940 = pow(r22939, r22937);
        float r22941 = r22940 - r22935;
        float r22942 = r22941 / r22938;
        float r22943 = r22934 * r22942;
        return r22943;
}

double f_id(double i, double n) {
        double r22944 = 100;
        double r22945 = 1;
        double r22946 = i;
        double r22947 = n;
        double r22948 = r22946 / r22947;
        double r22949 = r22945 + r22948;
        double r22950 = pow(r22949, r22947);
        double r22951 = r22950 - r22945;
        double r22952 = r22951 / r22948;
        double r22953 = r22944 * r22952;
        return r22953;
}


double f_of(float i, float n) {
        float r22954 = i;
        float r22955 = -0.020377340814253832;
        bool r22956 = r22954 <= r22955;
        float r22957 = 1;
        float r22958 = n;
        float r22959 = r22954 / r22958;
        float r22960 = r22957 + r22959;
        float r22961 = pow(r22960, r22958);
        float r22962 = r22961 - r22957;
        float r22963 = 100;
        float r22964 = r22962 * r22963;
        float r22965 = r22964 / r22959;
        float r22966 = 2.4695557279739083e+28;
        bool r22967 = r22954 <= r22966;
        float r22968 = r22963 * r22958;
        float r22969 = 1/2;
        float r22970 = r22969 * r22954;
        float r22971 = r22957 + r22970;
        float r22972 = r22968 * r22971;
        float r22973 = r22972 / r22957;
        float r22974 = 1.1918327281230139e+212;
        bool r22975 = r22954 <= r22974;
        float r22976 = r22963 / r22954;
        float r22977 = r22958 * r22976;
        float r22978 = exp(r22958);
        float r22979 = log(r22954);
        float r22980 = log(r22958);
        float r22981 = r22979 - r22980;
        float r22982 = pow(r22978, r22981);
        float r22983 = r22982 - r22957;
        float r22984 = r22977 * r22983;
        float r22985 = 9.983371006406189e+256;
        bool r22986 = r22954 <= r22985;
        float r22987 = r22986 ? r22965 : r22984;
        float r22988 = r22975 ? r22984 : r22987;
        float r22989 = r22967 ? r22973 : r22988;
        float r22990 = r22956 ? r22965 : r22989;
        return r22990;
}

double f_od(double i, double n) {
        double r22991 = i;
        double r22992 = -0.020377340814253832;
        bool r22993 = r22991 <= r22992;
        double r22994 = 1;
        double r22995 = n;
        double r22996 = r22991 / r22995;
        double r22997 = r22994 + r22996;
        double r22998 = pow(r22997, r22995);
        double r22999 = r22998 - r22994;
        double r23000 = 100;
        double r23001 = r22999 * r23000;
        double r23002 = r23001 / r22996;
        double r23003 = 2.4695557279739083e+28;
        bool r23004 = r22991 <= r23003;
        double r23005 = r23000 * r22995;
        double r23006 = 1/2;
        double r23007 = r23006 * r22991;
        double r23008 = r22994 + r23007;
        double r23009 = r23005 * r23008;
        double r23010 = r23009 / r22994;
        double r23011 = 1.1918327281230139e+212;
        bool r23012 = r22991 <= r23011;
        double r23013 = r23000 / r22991;
        double r23014 = r22995 * r23013;
        double r23015 = exp(r22995);
        double r23016 = log(r22991);
        double r23017 = log(r22995);
        double r23018 = r23016 - r23017;
        double r23019 = pow(r23015, r23018);
        double r23020 = r23019 - r22994;
        double r23021 = r23014 * r23020;
        double r23022 = 9.983371006406189e+256;
        bool r23023 = r22991 <= r23022;
        double r23024 = r23023 ? r23002 : r23021;
        double r23025 = r23012 ? r23021 : r23024;
        double r23026 = r23004 ? r23010 : r23025;
        double r23027 = r22993 ? r23002 : r23026;
        return r23027;
}

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 r23028, r23029, r23030, r23031, r23032, r23033, r23034, r23035, r23036, r23037;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init_set_str(r23028, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r23029, "1", 10, MPFR_RNDN);
        mpfr_init(r23030);
        mpfr_init(r23031);
        mpfr_init(r23032);
        mpfr_init(r23033);
        mpfr_init(r23034);
        mpfr_init(r23035);
        mpfr_init(r23036);
        mpfr_init(r23037);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r23030, i, MPFR_RNDN);
        mpfr_set_d(r23031, n, MPFR_RNDN);
        mpfr_div(r23032, r23030, r23031, MPFR_RNDN);
        mpfr_add(r23033, r23029, r23032, MPFR_RNDN);
        mpfr_pow(r23034, r23033, r23031, MPFR_RNDN);
        mpfr_sub(r23035, r23034, r23029, MPFR_RNDN);
        mpfr_div(r23036, r23035, r23032, MPFR_RNDN);
        mpfr_mul(r23037, r23028, r23036, MPFR_RNDN);
        return mpfr_get_d(r23037, MPFR_RNDN);
}

static mpfr_t r23038, r23039, r23040, r23041, r23042, r23043, r23044, r23045, r23046, r23047, r23048, r23049, r23050, r23051, r23052, r23053, r23054, r23055, r23056, r23057, r23058, r23059, r23060, r23061, r23062, r23063, r23064, r23065, r23066, r23067, r23068, r23069, r23070, r23071, r23072, r23073, r23074;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r23038);
        mpfr_init_set_str(r23039, "-0.020377340814253832", 10, MPFR_RNDN);
        mpfr_init(r23040);
        mpfr_init_set_str(r23041, "1", 10, MPFR_RNDN);
        mpfr_init(r23042);
        mpfr_init(r23043);
        mpfr_init(r23044);
        mpfr_init(r23045);
        mpfr_init(r23046);
        mpfr_init_set_str(r23047, "100", 10, MPFR_RNDN);
        mpfr_init(r23048);
        mpfr_init(r23049);
        mpfr_init_set_str(r23050, "2.4695557279739083e+28", 10, MPFR_RNDN);
        mpfr_init(r23051);
        mpfr_init(r23052);
        mpfr_init_set_str(r23053, "1/2", 10, MPFR_RNDN);
        mpfr_init(r23054);
        mpfr_init(r23055);
        mpfr_init(r23056);
        mpfr_init(r23057);
        mpfr_init_set_str(r23058, "1.1918327281230139e+212", 10, MPFR_RNDN);
        mpfr_init(r23059);
        mpfr_init(r23060);
        mpfr_init(r23061);
        mpfr_init(r23062);
        mpfr_init(r23063);
        mpfr_init(r23064);
        mpfr_init(r23065);
        mpfr_init(r23066);
        mpfr_init(r23067);
        mpfr_init(r23068);
        mpfr_init_set_str(r23069, "9.983371006406189e+256", 10, MPFR_RNDN);
        mpfr_init(r23070);
        mpfr_init(r23071);
        mpfr_init(r23072);
        mpfr_init(r23073);
        mpfr_init(r23074);
}

double f_fm(double i, double n) {
        mpfr_set_d(r23038, i, MPFR_RNDN);
        ;
        mpfr_set_si(r23040, mpfr_cmp(r23038, r23039) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r23042, n, MPFR_RNDN);
        mpfr_div(r23043, r23038, r23042, MPFR_RNDN);
        mpfr_add(r23044, r23041, r23043, MPFR_RNDN);
        mpfr_pow(r23045, r23044, r23042, MPFR_RNDN);
        mpfr_sub(r23046, r23045, r23041, MPFR_RNDN);
        ;
        mpfr_mul(r23048, r23046, r23047, MPFR_RNDN);
        mpfr_div(r23049, r23048, r23043, MPFR_RNDN);
        ;
        mpfr_set_si(r23051, mpfr_cmp(r23038, r23050) <= 0, MPFR_RNDN);
        mpfr_mul(r23052, r23047, r23042, MPFR_RNDN);
        ;
        mpfr_mul(r23054, r23053, r23038, MPFR_RNDN);
        mpfr_add(r23055, r23041, r23054, MPFR_RNDN);
        mpfr_mul(r23056, r23052, r23055, MPFR_RNDN);
        mpfr_div(r23057, r23056, r23041, MPFR_RNDN);
        ;
        mpfr_set_si(r23059, mpfr_cmp(r23038, r23058) <= 0, MPFR_RNDN);
        mpfr_div(r23060, r23047, r23038, MPFR_RNDN);
        mpfr_mul(r23061, r23042, r23060, MPFR_RNDN);
        mpfr_exp(r23062, r23042, MPFR_RNDN);
        mpfr_log(r23063, r23038, MPFR_RNDN);
        mpfr_log(r23064, r23042, MPFR_RNDN);
        mpfr_sub(r23065, r23063, r23064, MPFR_RNDN);
        mpfr_pow(r23066, r23062, r23065, MPFR_RNDN);
        mpfr_sub(r23067, r23066, r23041, MPFR_RNDN);
        mpfr_mul(r23068, r23061, r23067, MPFR_RNDN);
        ;
        mpfr_set_si(r23070, mpfr_cmp(r23038, r23069) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r23070, MPFR_RNDN)) { mpfr_set(r23071, r23049, MPFR_RNDN); } else { mpfr_set(r23071, r23068, MPFR_RNDN); };
        if (mpfr_get_si(r23059, MPFR_RNDN)) { mpfr_set(r23072, r23068, MPFR_RNDN); } else { mpfr_set(r23072, r23071, MPFR_RNDN); };
        if (mpfr_get_si(r23051, MPFR_RNDN)) { mpfr_set(r23073, r23057, MPFR_RNDN); } else { mpfr_set(r23073, r23072, MPFR_RNDN); };
        if (mpfr_get_si(r23040, MPFR_RNDN)) { mpfr_set(r23074, r23049, MPFR_RNDN); } else { mpfr_set(r23074, r23073, MPFR_RNDN); };
        return mpfr_get_d(r23074, MPFR_RNDN);
}

static mpfr_t r23075, r23076, r23077, r23078, r23079, r23080, r23081, r23082, r23083, r23084, r23085, r23086, r23087, r23088, r23089, r23090, r23091, r23092, r23093, r23094, r23095, r23096, r23097, r23098, r23099, r23100, r23101, r23102, r23103, r23104, r23105, r23106, r23107, r23108, r23109, r23110, r23111;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r23075);
        mpfr_init_set_str(r23076, "-0.020377340814253832", 10, MPFR_RNDN);
        mpfr_init(r23077);
        mpfr_init_set_str(r23078, "1", 10, MPFR_RNDN);
        mpfr_init(r23079);
        mpfr_init(r23080);
        mpfr_init(r23081);
        mpfr_init(r23082);
        mpfr_init(r23083);
        mpfr_init_set_str(r23084, "100", 10, MPFR_RNDN);
        mpfr_init(r23085);
        mpfr_init(r23086);
        mpfr_init_set_str(r23087, "2.4695557279739083e+28", 10, MPFR_RNDN);
        mpfr_init(r23088);
        mpfr_init(r23089);
        mpfr_init_set_str(r23090, "1/2", 10, MPFR_RNDN);
        mpfr_init(r23091);
        mpfr_init(r23092);
        mpfr_init(r23093);
        mpfr_init(r23094);
        mpfr_init_set_str(r23095, "1.1918327281230139e+212", 10, MPFR_RNDN);
        mpfr_init(r23096);
        mpfr_init(r23097);
        mpfr_init(r23098);
        mpfr_init(r23099);
        mpfr_init(r23100);
        mpfr_init(r23101);
        mpfr_init(r23102);
        mpfr_init(r23103);
        mpfr_init(r23104);
        mpfr_init(r23105);
        mpfr_init_set_str(r23106, "9.983371006406189e+256", 10, MPFR_RNDN);
        mpfr_init(r23107);
        mpfr_init(r23108);
        mpfr_init(r23109);
        mpfr_init(r23110);
        mpfr_init(r23111);
}

double f_dm(double i, double n) {
        mpfr_set_d(r23075, i, MPFR_RNDN);
        ;
        mpfr_set_si(r23077, mpfr_cmp(r23075, r23076) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r23079, n, MPFR_RNDN);
        mpfr_div(r23080, r23075, r23079, MPFR_RNDN);
        mpfr_add(r23081, r23078, r23080, MPFR_RNDN);
        mpfr_pow(r23082, r23081, r23079, MPFR_RNDN);
        mpfr_sub(r23083, r23082, r23078, MPFR_RNDN);
        ;
        mpfr_mul(r23085, r23083, r23084, MPFR_RNDN);
        mpfr_div(r23086, r23085, r23080, MPFR_RNDN);
        ;
        mpfr_set_si(r23088, mpfr_cmp(r23075, r23087) <= 0, MPFR_RNDN);
        mpfr_mul(r23089, r23084, r23079, MPFR_RNDN);
        ;
        mpfr_mul(r23091, r23090, r23075, MPFR_RNDN);
        mpfr_add(r23092, r23078, r23091, MPFR_RNDN);
        mpfr_mul(r23093, r23089, r23092, MPFR_RNDN);
        mpfr_div(r23094, r23093, r23078, MPFR_RNDN);
        ;
        mpfr_set_si(r23096, mpfr_cmp(r23075, r23095) <= 0, MPFR_RNDN);
        mpfr_div(r23097, r23084, r23075, MPFR_RNDN);
        mpfr_mul(r23098, r23079, r23097, MPFR_RNDN);
        mpfr_exp(r23099, r23079, MPFR_RNDN);
        mpfr_log(r23100, r23075, MPFR_RNDN);
        mpfr_log(r23101, r23079, MPFR_RNDN);
        mpfr_sub(r23102, r23100, r23101, MPFR_RNDN);
        mpfr_pow(r23103, r23099, r23102, MPFR_RNDN);
        mpfr_sub(r23104, r23103, r23078, MPFR_RNDN);
        mpfr_mul(r23105, r23098, r23104, MPFR_RNDN);
        ;
        mpfr_set_si(r23107, mpfr_cmp(r23075, r23106) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r23107, MPFR_RNDN)) { mpfr_set(r23108, r23086, MPFR_RNDN); } else { mpfr_set(r23108, r23105, MPFR_RNDN); };
        if (mpfr_get_si(r23096, MPFR_RNDN)) { mpfr_set(r23109, r23105, MPFR_RNDN); } else { mpfr_set(r23109, r23108, MPFR_RNDN); };
        if (mpfr_get_si(r23088, MPFR_RNDN)) { mpfr_set(r23110, r23094, MPFR_RNDN); } else { mpfr_set(r23110, r23109, MPFR_RNDN); };
        if (mpfr_get_si(r23077, MPFR_RNDN)) { mpfr_set(r23111, r23086, MPFR_RNDN); } else { mpfr_set(r23111, r23110, MPFR_RNDN); };
        return mpfr_get_d(r23111, MPFR_RNDN);
}

