#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 r8971 = x;
        float r8972 = 1.0f;
        float r8973 = r8971 + r8972;
        float r8974 = n;
        float r8975 = r8972 / r8974;
        float r8976 = pow(r8973, r8975);
        float r8977 = pow(r8971, r8975);
        float r8978 = r8976 - r8977;
        return r8978;
}

double f_id(double x, double n) {
        double r8979 = x;
        double r8980 = 1.0;
        double r8981 = r8979 + r8980;
        double r8982 = n;
        double r8983 = r8980 / r8982;
        double r8984 = pow(r8981, r8983);
        double r8985 = pow(r8979, r8983);
        double r8986 = r8984 - r8985;
        return r8986;
}


double f_of(float x, float n) {
        float r8987 = x;
        float r8988 = log(r8987);
        float r8989 = n;
        float r8990 = r8988 / r8989;
        float r8991 = 1.0f;
        float r8992 = r8990 + r8991;
        float r8993 = r8991 / r8989;
        float r8994 = r8993 / r8987;
        float r8995 = r8992 + r8994;
        float r8996 = pow(r8987, r8993);
        float r8997 = r8995 - r8996;
        float r8998 = -7.088671140842874e-08f;
        bool r8999 = r8997 <= r8998;
        float r9000 = log1p(r8987);
        float r9001 = r9000 / r8989;
        float r9002 = exp(r9001);
        float r9003 = r9002 - r8996;
        float r9004 = exp(r9003);
        float r9005 = sqrt(r9004);
        float r9006 = log(r9005);
        float r9007 = r9006 + r9006;
        float r9008 = 2.3769939386456005e-216f;
        bool r9009 = r8997 <= r9008;
        float r9010 = r8987 * r8989;
        float r9011 = r8991 / r9010;
        float r9012 = 0.5f;
        float r9013 = -r9012;
        float r9014 = r9013 / r8987;
        float r9015 = fma(r9011, r9014, r9011);
        float r9016 = r8988 / r9010;
        float r9017 = r9016 / r8989;
        float r9018 = r9015 + r9017;
        float r9019 = cbrt(r9003);
        float r9020 = r9019 * r9019;
        float r9021 = exp(r9020);
        float r9022 = sqrt(r9021);
        float r9023 = log(r9022);
        float r9024 = r9023 + r9023;
        float r9025 = r9019 * r9024;
        float r9026 = r9009 ? r9018 : r9025;
        float r9027 = r8999 ? r9007 : r9026;
        return r9027;
}

double f_od(double x, double n) {
        double r9028 = x;
        double r9029 = log(r9028);
        double r9030 = n;
        double r9031 = r9029 / r9030;
        double r9032 = 1.0;
        double r9033 = r9031 + r9032;
        double r9034 = r9032 / r9030;
        double r9035 = r9034 / r9028;
        double r9036 = r9033 + r9035;
        double r9037 = pow(r9028, r9034);
        double r9038 = r9036 - r9037;
        double r9039 = -7.088671140842874e-08;
        bool r9040 = r9038 <= r9039;
        double r9041 = log1p(r9028);
        double r9042 = r9041 / r9030;
        double r9043 = exp(r9042);
        double r9044 = r9043 - r9037;
        double r9045 = exp(r9044);
        double r9046 = sqrt(r9045);
        double r9047 = log(r9046);
        double r9048 = r9047 + r9047;
        double r9049 = 2.3769939386456005e-216;
        bool r9050 = r9038 <= r9049;
        double r9051 = r9028 * r9030;
        double r9052 = r9032 / r9051;
        double r9053 = 0.5;
        double r9054 = -r9053;
        double r9055 = r9054 / r9028;
        double r9056 = fma(r9052, r9055, r9052);
        double r9057 = r9029 / r9051;
        double r9058 = r9057 / r9030;
        double r9059 = r9056 + r9058;
        double r9060 = cbrt(r9044);
        double r9061 = r9060 * r9060;
        double r9062 = exp(r9061);
        double r9063 = sqrt(r9062);
        double r9064 = log(r9063);
        double r9065 = r9064 + r9064;
        double r9066 = r9060 * r9065;
        double r9067 = r9050 ? r9059 : r9066;
        double r9068 = r9040 ? r9048 : r9067;
        return r9068;
}

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 r9069, r9070, r9071, r9072, r9073, r9074, r9075, r9076;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9069);
        mpfr_init_set_str(r9070, "1", 10, MPFR_RNDN);
        mpfr_init(r9071);
        mpfr_init(r9072);
        mpfr_init(r9073);
        mpfr_init(r9074);
        mpfr_init(r9075);
        mpfr_init(r9076);
}

double f_im(double x, double n) {
        mpfr_set_d(r9069, x, MPFR_RNDN);
        ;
        mpfr_add(r9071, r9069, r9070, MPFR_RNDN);
        mpfr_set_d(r9072, n, MPFR_RNDN);
        mpfr_div(r9073, r9070, r9072, MPFR_RNDN);
        mpfr_pow(r9074, r9071, r9073, MPFR_RNDN);
        mpfr_pow(r9075, r9069, r9073, MPFR_RNDN);
        mpfr_sub(r9076, r9074, r9075, MPFR_RNDN);
        return mpfr_get_d(r9076, MPFR_RNDN);
}

static mpfr_t 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, r9113, r9114, r9115, r9116, r9117;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9077);
        mpfr_init(r9078);
        mpfr_init(r9079);
        mpfr_init(r9080);
        mpfr_init_set_str(r9081, "1", 10, MPFR_RNDN);
        mpfr_init(r9082);
        mpfr_init(r9083);
        mpfr_init(r9084);
        mpfr_init(r9085);
        mpfr_init(r9086);
        mpfr_init(r9087);
        mpfr_init_set_str(r9088, "-7.088671140842874e-08", 10, MPFR_RNDN);
        mpfr_init(r9089);
        mpfr_init(r9090);
        mpfr_init(r9091);
        mpfr_init(r9092);
        mpfr_init(r9093);
        mpfr_init(r9094);
        mpfr_init(r9095);
        mpfr_init(r9096);
        mpfr_init(r9097);
        mpfr_init_set_str(r9098, "2.3769939386456005e-216", 10, MPFR_RNDN);
        mpfr_init(r9099);
        mpfr_init(r9100);
        mpfr_init(r9101);
        mpfr_init_set_str(r9102, "1/2", 10, MPFR_RNDN);
        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);
        mpfr_init(r9113);
        mpfr_init(r9114);
        mpfr_init(r9115);
        mpfr_init(r9116);
        mpfr_init(r9117);
}

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

static mpfr_t r9118, r9119, r9120, r9121, r9122, r9123, r9124, r9125, r9126, r9127, r9128, r9129, r9130, r9131, r9132, r9133, r9134, r9135, r9136, r9137, r9138, r9139, r9140, r9141, r9142, r9143, r9144, r9145, r9146, r9147, r9148, r9149, r9150, r9151, r9152, r9153, r9154, r9155, r9156, r9157, r9158;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9118);
        mpfr_init(r9119);
        mpfr_init(r9120);
        mpfr_init(r9121);
        mpfr_init_set_str(r9122, "1", 10, MPFR_RNDN);
        mpfr_init(r9123);
        mpfr_init(r9124);
        mpfr_init(r9125);
        mpfr_init(r9126);
        mpfr_init(r9127);
        mpfr_init(r9128);
        mpfr_init_set_str(r9129, "-7.088671140842874e-08", 10, MPFR_RNDN);
        mpfr_init(r9130);
        mpfr_init(r9131);
        mpfr_init(r9132);
        mpfr_init(r9133);
        mpfr_init(r9134);
        mpfr_init(r9135);
        mpfr_init(r9136);
        mpfr_init(r9137);
        mpfr_init(r9138);
        mpfr_init_set_str(r9139, "2.3769939386456005e-216", 10, MPFR_RNDN);
        mpfr_init(r9140);
        mpfr_init(r9141);
        mpfr_init(r9142);
        mpfr_init_set_str(r9143, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9144);
        mpfr_init(r9145);
        mpfr_init(r9146);
        mpfr_init(r9147);
        mpfr_init(r9148);
        mpfr_init(r9149);
        mpfr_init(r9150);
        mpfr_init(r9151);
        mpfr_init(r9152);
        mpfr_init(r9153);
        mpfr_init(r9154);
        mpfr_init(r9155);
        mpfr_init(r9156);
        mpfr_init(r9157);
        mpfr_init(r9158);
}

double f_dm(double x, double n) {
        mpfr_set_d(r9118, x, MPFR_RNDN);
        mpfr_log(r9119, r9118, MPFR_RNDN);
        mpfr_set_d(r9120, n, MPFR_RNDN);
        mpfr_div(r9121, r9119, r9120, MPFR_RNDN);
        ;
        mpfr_add(r9123, r9121, r9122, MPFR_RNDN);
        mpfr_div(r9124, r9122, r9120, MPFR_RNDN);
        mpfr_div(r9125, r9124, r9118, MPFR_RNDN);
        mpfr_add(r9126, r9123, r9125, MPFR_RNDN);
        mpfr_pow(r9127, r9118, r9124, MPFR_RNDN);
        mpfr_sub(r9128, r9126, r9127, MPFR_RNDN);
        ;
        mpfr_set_si(r9130, mpfr_cmp(r9128, r9129) <= 0, MPFR_RNDN);
        mpfr_log1p(r9131, r9118, MPFR_RNDN);
        mpfr_div(r9132, r9131, r9120, MPFR_RNDN);
        mpfr_exp(r9133, r9132, MPFR_RNDN);
        mpfr_sub(r9134, r9133, r9127, MPFR_RNDN);
        mpfr_exp(r9135, r9134, MPFR_RNDN);
        mpfr_sqrt(r9136, r9135, MPFR_RNDN);
        mpfr_log(r9137, r9136, MPFR_RNDN);
        mpfr_add(r9138, r9137, r9137, MPFR_RNDN);
        ;
        mpfr_set_si(r9140, mpfr_cmp(r9128, r9139) <= 0, MPFR_RNDN);
        mpfr_mul(r9141, r9118, r9120, MPFR_RNDN);
        mpfr_div(r9142, r9122, r9141, MPFR_RNDN);
        ;
        mpfr_neg(r9144, r9143, MPFR_RNDN);
        mpfr_div(r9145, r9144, r9118, MPFR_RNDN);
        mpfr_fma(r9146, r9142, r9145, r9142, MPFR_RNDN);
        mpfr_div(r9147, r9119, r9141, MPFR_RNDN);
        mpfr_div(r9148, r9147, r9120, MPFR_RNDN);
        mpfr_add(r9149, r9146, r9148, MPFR_RNDN);
        mpfr_cbrt(r9150, r9134, MPFR_RNDN);
        mpfr_mul(r9151, r9150, r9150, MPFR_RNDN);
        mpfr_exp(r9152, r9151, MPFR_RNDN);
        mpfr_sqrt(r9153, r9152, MPFR_RNDN);
        mpfr_log(r9154, r9153, MPFR_RNDN);
        mpfr_add(r9155, r9154, r9154, MPFR_RNDN);
        mpfr_mul(r9156, r9150, r9155, MPFR_RNDN);
        if (mpfr_get_si(r9140, MPFR_RNDN)) { mpfr_set(r9157, r9149, MPFR_RNDN); } else { mpfr_set(r9157, r9156, MPFR_RNDN); };
        if (mpfr_get_si(r9130, MPFR_RNDN)) { mpfr_set(r9158, r9138, MPFR_RNDN); } else { mpfr_set(r9158, r9157, MPFR_RNDN); };
        return mpfr_get_d(r9158, MPFR_RNDN);
}

