#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "2nthrt (problem 3.4.6)";

double f_if(float x, float n) {
        float r8925 = x;
        float r8926 = 1.0f;
        float r8927 = r8925 + r8926;
        float r8928 = n;
        float r8929 = r8926 / r8928;
        float r8930 = pow(r8927, r8929);
        float r8931 = pow(r8925, r8929);
        float r8932 = r8930 - r8931;
        return r8932;
}

double f_id(double x, double n) {
        double r8933 = x;
        double r8934 = 1.0;
        double r8935 = r8933 + r8934;
        double r8936 = n;
        double r8937 = r8934 / r8936;
        double r8938 = pow(r8935, r8937);
        double r8939 = pow(r8933, r8937);
        double r8940 = r8938 - r8939;
        return r8940;
}


double f_of(float x, float n) {
        float r8941 = x;
        float r8942 = log(r8941);
        float r8943 = n;
        float r8944 = r8942 / r8943;
        float r8945 = 1.0f;
        float r8946 = r8944 + r8945;
        float r8947 = r8945 / r8943;
        float r8948 = r8947 / r8941;
        float r8949 = r8946 + r8948;
        float r8950 = pow(r8941, r8947);
        float r8951 = r8949 - r8950;
        float r8952 = -0.12264808961024468f;
        bool r8953 = r8951 <= r8952;
        float r8954 = r8941 + r8945;
        float r8955 = pow(r8954, r8947);
        float r8956 = r8955 - r8950;
        float r8957 = exp(r8956);
        float r8958 = log(r8957);
        float r8959 = 3.2862741022484574e-227f;
        bool r8960 = r8951 <= r8959;
        float r8961 = r8945 / r8941;
        float r8962 = 0.3333333333333333f;
        float r8963 = 3.0f;
        float r8964 = r8962 * r8963;
        float r8965 = pow(r8961, r8964);
        float r8966 = pow(r8947, r8964);
        float r8967 = r8965 * r8966;
        float r8968 = 0.5f;
        float r8969 = r8968 / r8941;
        float r8970 = r8944 - r8969;
        float r8971 = r8970 * r8967;
        float r8972 = r8967 + r8971;
        float r8973 = r8956 * r8956;
        float r8974 = cbrt(r8973);
        float r8975 = cbrt(r8974);
        float r8976 = r8975 * r8975;
        float r8977 = r8976 * r8975;
        float r8978 = cbrt(r8956);
        float r8979 = r8977 * r8978;
        float r8980 = r8960 ? r8972 : r8979;
        float r8981 = r8953 ? r8958 : r8980;
        return r8981;
}

double f_od(double x, double n) {
        double r8982 = x;
        double r8983 = log(r8982);
        double r8984 = n;
        double r8985 = r8983 / r8984;
        double r8986 = 1.0;
        double r8987 = r8985 + r8986;
        double r8988 = r8986 / r8984;
        double r8989 = r8988 / r8982;
        double r8990 = r8987 + r8989;
        double r8991 = pow(r8982, r8988);
        double r8992 = r8990 - r8991;
        double r8993 = -0.12264808961024468;
        bool r8994 = r8992 <= r8993;
        double r8995 = r8982 + r8986;
        double r8996 = pow(r8995, r8988);
        double r8997 = r8996 - r8991;
        double r8998 = exp(r8997);
        double r8999 = log(r8998);
        double r9000 = 3.2862741022484574e-227;
        bool r9001 = r8992 <= r9000;
        double r9002 = r8986 / r8982;
        double r9003 = 0.3333333333333333;
        double r9004 = 3.0;
        double r9005 = r9003 * r9004;
        double r9006 = pow(r9002, r9005);
        double r9007 = pow(r8988, r9005);
        double r9008 = r9006 * r9007;
        double r9009 = 0.5;
        double r9010 = r9009 / r8982;
        double r9011 = r8985 - r9010;
        double r9012 = r9011 * r9008;
        double r9013 = r9008 + r9012;
        double r9014 = r8997 * r8997;
        double r9015 = cbrt(r9014);
        double r9016 = cbrt(r9015);
        double r9017 = r9016 * r9016;
        double r9018 = r9017 * r9016;
        double r9019 = cbrt(r8997);
        double r9020 = r9018 * r9019;
        double r9021 = r9001 ? r9013 : r9020;
        double r9022 = r8994 ? r8999 : r9021;
        return r9022;
}

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 r9023, r9024, r9025, r9026, r9027, r9028, r9029, r9030;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9023);
        mpfr_init_set_str(r9024, "1", 10, MPFR_RNDN);
        mpfr_init(r9025);
        mpfr_init(r9026);
        mpfr_init(r9027);
        mpfr_init(r9028);
        mpfr_init(r9029);
        mpfr_init(r9030);
}

double f_im(double x, double n) {
        mpfr_set_d(r9023, x, MPFR_RNDN);
        ;
        mpfr_add(r9025, r9023, r9024, MPFR_RNDN);
        mpfr_set_d(r9026, n, MPFR_RNDN);
        mpfr_div(r9027, r9024, r9026, MPFR_RNDN);
        mpfr_pow(r9028, r9025, r9027, MPFR_RNDN);
        mpfr_pow(r9029, r9023, r9027, MPFR_RNDN);
        mpfr_sub(r9030, r9028, r9029, MPFR_RNDN);
        return mpfr_get_d(r9030, MPFR_RNDN);
}

static mpfr_t r9031, r9032, r9033, r9034, r9035, r9036, r9037, r9038, r9039, r9040, r9041, r9042, r9043, r9044, r9045, r9046, r9047, r9048, r9049, r9050, r9051, r9052, r9053, r9054, r9055, r9056, r9057, r9058, r9059, r9060, r9061, r9062, r9063, r9064, r9065, r9066, r9067, r9068, r9069, r9070, r9071;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9031);
        mpfr_init(r9032);
        mpfr_init(r9033);
        mpfr_init(r9034);
        mpfr_init_set_str(r9035, "1", 10, MPFR_RNDN);
        mpfr_init(r9036);
        mpfr_init(r9037);
        mpfr_init(r9038);
        mpfr_init(r9039);
        mpfr_init(r9040);
        mpfr_init(r9041);
        mpfr_init_set_str(r9042, "-0.12264808961024468", 10, MPFR_RNDN);
        mpfr_init(r9043);
        mpfr_init(r9044);
        mpfr_init(r9045);
        mpfr_init(r9046);
        mpfr_init(r9047);
        mpfr_init(r9048);
        mpfr_init_set_str(r9049, "3.2862741022484574e-227", 10, MPFR_RNDN);
        mpfr_init(r9050);
        mpfr_init(r9051);
        mpfr_init_set_str(r9052, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r9053, "3", 10, MPFR_RNDN);
        mpfr_init(r9054);
        mpfr_init(r9055);
        mpfr_init(r9056);
        mpfr_init(r9057);
        mpfr_init_set_str(r9058, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9059);
        mpfr_init(r9060);
        mpfr_init(r9061);
        mpfr_init(r9062);
        mpfr_init(r9063);
        mpfr_init(r9064);
        mpfr_init(r9065);
        mpfr_init(r9066);
        mpfr_init(r9067);
        mpfr_init(r9068);
        mpfr_init(r9069);
        mpfr_init(r9070);
        mpfr_init(r9071);
}

double f_fm(double x, double n) {
        mpfr_set_d(r9031, x, MPFR_RNDN);
        mpfr_log(r9032, r9031, MPFR_RNDN);
        mpfr_set_d(r9033, n, MPFR_RNDN);
        mpfr_div(r9034, r9032, r9033, MPFR_RNDN);
        ;
        mpfr_add(r9036, r9034, r9035, MPFR_RNDN);
        mpfr_div(r9037, r9035, r9033, MPFR_RNDN);
        mpfr_div(r9038, r9037, r9031, MPFR_RNDN);
        mpfr_add(r9039, r9036, r9038, MPFR_RNDN);
        mpfr_pow(r9040, r9031, r9037, MPFR_RNDN);
        mpfr_sub(r9041, r9039, r9040, MPFR_RNDN);
        ;
        mpfr_set_si(r9043, mpfr_cmp(r9041, r9042) <= 0, MPFR_RNDN);
        mpfr_add(r9044, r9031, r9035, MPFR_RNDN);
        mpfr_pow(r9045, r9044, r9037, MPFR_RNDN);
        mpfr_sub(r9046, r9045, r9040, MPFR_RNDN);
        mpfr_exp(r9047, r9046, MPFR_RNDN);
        mpfr_log(r9048, r9047, MPFR_RNDN);
        ;
        mpfr_set_si(r9050, mpfr_cmp(r9041, r9049) <= 0, MPFR_RNDN);
        mpfr_div(r9051, r9035, r9031, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9054, r9052, r9053, MPFR_RNDN);
        mpfr_pow(r9055, r9051, r9054, MPFR_RNDN);
        mpfr_pow(r9056, r9037, r9054, MPFR_RNDN);
        mpfr_mul(r9057, r9055, r9056, MPFR_RNDN);
        ;
        mpfr_div(r9059, r9058, r9031, MPFR_RNDN);
        mpfr_sub(r9060, r9034, r9059, MPFR_RNDN);
        mpfr_mul(r9061, r9060, r9057, MPFR_RNDN);
        mpfr_add(r9062, r9057, r9061, MPFR_RNDN);
        mpfr_mul(r9063, r9046, r9046, MPFR_RNDN);
        mpfr_cbrt(r9064, r9063, MPFR_RNDN);
        mpfr_cbrt(r9065, r9064, MPFR_RNDN);
        mpfr_mul(r9066, r9065, r9065, MPFR_RNDN);
        mpfr_mul(r9067, r9066, r9065, MPFR_RNDN);
        mpfr_cbrt(r9068, r9046, MPFR_RNDN);
        mpfr_mul(r9069, r9067, r9068, MPFR_RNDN);
        if (mpfr_get_si(r9050, MPFR_RNDN)) { mpfr_set(r9070, r9062, MPFR_RNDN); } else { mpfr_set(r9070, r9069, MPFR_RNDN); };
        if (mpfr_get_si(r9043, MPFR_RNDN)) { mpfr_set(r9071, r9048, MPFR_RNDN); } else { mpfr_set(r9071, r9070, MPFR_RNDN); };
        return mpfr_get_d(r9071, MPFR_RNDN);
}

static mpfr_t r9072, r9073, r9074, r9075, r9076, r9077, r9078, r9079, r9080, r9081, r9082, r9083, r9084, r9085, r9086, r9087, r9088, r9089, r9090, r9091, r9092, r9093, r9094, r9095, r9096, r9097, r9098, r9099, r9100, r9101, r9102, r9103, r9104, r9105, r9106, r9107, r9108, r9109, r9110, r9111, r9112;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9072);
        mpfr_init(r9073);
        mpfr_init(r9074);
        mpfr_init(r9075);
        mpfr_init_set_str(r9076, "1", 10, MPFR_RNDN);
        mpfr_init(r9077);
        mpfr_init(r9078);
        mpfr_init(r9079);
        mpfr_init(r9080);
        mpfr_init(r9081);
        mpfr_init(r9082);
        mpfr_init_set_str(r9083, "-0.12264808961024468", 10, MPFR_RNDN);
        mpfr_init(r9084);
        mpfr_init(r9085);
        mpfr_init(r9086);
        mpfr_init(r9087);
        mpfr_init(r9088);
        mpfr_init(r9089);
        mpfr_init_set_str(r9090, "3.2862741022484574e-227", 10, MPFR_RNDN);
        mpfr_init(r9091);
        mpfr_init(r9092);
        mpfr_init_set_str(r9093, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r9094, "3", 10, MPFR_RNDN);
        mpfr_init(r9095);
        mpfr_init(r9096);
        mpfr_init(r9097);
        mpfr_init(r9098);
        mpfr_init_set_str(r9099, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9100);
        mpfr_init(r9101);
        mpfr_init(r9102);
        mpfr_init(r9103);
        mpfr_init(r9104);
        mpfr_init(r9105);
        mpfr_init(r9106);
        mpfr_init(r9107);
        mpfr_init(r9108);
        mpfr_init(r9109);
        mpfr_init(r9110);
        mpfr_init(r9111);
        mpfr_init(r9112);
}

double f_dm(double x, double n) {
        mpfr_set_d(r9072, x, MPFR_RNDN);
        mpfr_log(r9073, r9072, MPFR_RNDN);
        mpfr_set_d(r9074, n, MPFR_RNDN);
        mpfr_div(r9075, r9073, r9074, MPFR_RNDN);
        ;
        mpfr_add(r9077, r9075, r9076, MPFR_RNDN);
        mpfr_div(r9078, r9076, r9074, MPFR_RNDN);
        mpfr_div(r9079, r9078, r9072, MPFR_RNDN);
        mpfr_add(r9080, r9077, r9079, MPFR_RNDN);
        mpfr_pow(r9081, r9072, r9078, MPFR_RNDN);
        mpfr_sub(r9082, r9080, r9081, MPFR_RNDN);
        ;
        mpfr_set_si(r9084, mpfr_cmp(r9082, r9083) <= 0, MPFR_RNDN);
        mpfr_add(r9085, r9072, r9076, MPFR_RNDN);
        mpfr_pow(r9086, r9085, r9078, MPFR_RNDN);
        mpfr_sub(r9087, r9086, r9081, MPFR_RNDN);
        mpfr_exp(r9088, r9087, MPFR_RNDN);
        mpfr_log(r9089, r9088, MPFR_RNDN);
        ;
        mpfr_set_si(r9091, mpfr_cmp(r9082, r9090) <= 0, MPFR_RNDN);
        mpfr_div(r9092, r9076, r9072, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9095, r9093, r9094, MPFR_RNDN);
        mpfr_pow(r9096, r9092, r9095, MPFR_RNDN);
        mpfr_pow(r9097, r9078, r9095, MPFR_RNDN);
        mpfr_mul(r9098, r9096, r9097, MPFR_RNDN);
        ;
        mpfr_div(r9100, r9099, r9072, MPFR_RNDN);
        mpfr_sub(r9101, r9075, r9100, MPFR_RNDN);
        mpfr_mul(r9102, r9101, r9098, MPFR_RNDN);
        mpfr_add(r9103, r9098, r9102, MPFR_RNDN);
        mpfr_mul(r9104, r9087, r9087, MPFR_RNDN);
        mpfr_cbrt(r9105, r9104, MPFR_RNDN);
        mpfr_cbrt(r9106, r9105, MPFR_RNDN);
        mpfr_mul(r9107, r9106, r9106, MPFR_RNDN);
        mpfr_mul(r9108, r9107, r9106, MPFR_RNDN);
        mpfr_cbrt(r9109, r9087, MPFR_RNDN);
        mpfr_mul(r9110, r9108, r9109, MPFR_RNDN);
        if (mpfr_get_si(r9091, MPFR_RNDN)) { mpfr_set(r9111, r9103, MPFR_RNDN); } else { mpfr_set(r9111, r9110, MPFR_RNDN); };
        if (mpfr_get_si(r9084, MPFR_RNDN)) { mpfr_set(r9112, r9089, MPFR_RNDN); } else { mpfr_set(r9112, r9111, MPFR_RNDN); };
        return mpfr_get_d(r9112, MPFR_RNDN);
}

