#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 r8913 = x;
        float r8914 = 1.0f;
        float r8915 = r8913 + r8914;
        float r8916 = n;
        float r8917 = r8914 / r8916;
        float r8918 = pow(r8915, r8917);
        float r8919 = pow(r8913, r8917);
        float r8920 = r8918 - r8919;
        return r8920;
}

double f_id(double x, double n) {
        double r8921 = x;
        double r8922 = 1.0;
        double r8923 = r8921 + r8922;
        double r8924 = n;
        double r8925 = r8922 / r8924;
        double r8926 = pow(r8923, r8925);
        double r8927 = pow(r8921, r8925);
        double r8928 = r8926 - r8927;
        return r8928;
}


double f_of(float x, float n) {
        float r8929 = x;
        float r8930 = log(r8929);
        float r8931 = n;
        float r8932 = r8930 / r8931;
        float r8933 = 1.0f;
        float r8934 = r8932 + r8933;
        float r8935 = r8933 / r8931;
        float r8936 = r8935 / r8929;
        float r8937 = r8934 + r8936;
        float r8938 = pow(r8929, r8935);
        float r8939 = r8937 - r8938;
        float r8940 = -0.12264808961024468f;
        bool r8941 = r8939 <= r8940;
        float r8942 = r8929 + r8933;
        float r8943 = pow(r8942, r8935);
        float r8944 = r8943 - r8938;
        float r8945 = exp(r8944);
        float r8946 = log(r8945);
        float r8947 = 3.2862741022484574e-227f;
        bool r8948 = r8939 <= r8947;
        float r8949 = r8933 / r8929;
        float r8950 = 0.3333333333333333f;
        float r8951 = 3.0f;
        float r8952 = r8950 * r8951;
        float r8953 = pow(r8949, r8952);
        float r8954 = pow(r8935, r8952);
        float r8955 = r8953 * r8954;
        float r8956 = 0.5f;
        float r8957 = r8956 / r8929;
        float r8958 = r8932 - r8957;
        float r8959 = r8958 * r8955;
        float r8960 = r8955 + r8959;
        float r8961 = log1p(r8929);
        float r8962 = r8961 / r8931;
        float r8963 = exp(r8962);
        float r8964 = r8963 - r8938;
        float r8965 = r8948 ? r8960 : r8964;
        float r8966 = r8941 ? r8946 : r8965;
        return r8966;
}

double f_od(double x, double n) {
        double r8967 = x;
        double r8968 = log(r8967);
        double r8969 = n;
        double r8970 = r8968 / r8969;
        double r8971 = 1.0;
        double r8972 = r8970 + r8971;
        double r8973 = r8971 / r8969;
        double r8974 = r8973 / r8967;
        double r8975 = r8972 + r8974;
        double r8976 = pow(r8967, r8973);
        double r8977 = r8975 - r8976;
        double r8978 = -0.12264808961024468;
        bool r8979 = r8977 <= r8978;
        double r8980 = r8967 + r8971;
        double r8981 = pow(r8980, r8973);
        double r8982 = r8981 - r8976;
        double r8983 = exp(r8982);
        double r8984 = log(r8983);
        double r8985 = 3.2862741022484574e-227;
        bool r8986 = r8977 <= r8985;
        double r8987 = r8971 / r8967;
        double r8988 = 0.3333333333333333;
        double r8989 = 3.0;
        double r8990 = r8988 * r8989;
        double r8991 = pow(r8987, r8990);
        double r8992 = pow(r8973, r8990);
        double r8993 = r8991 * r8992;
        double r8994 = 0.5;
        double r8995 = r8994 / r8967;
        double r8996 = r8970 - r8995;
        double r8997 = r8996 * r8993;
        double r8998 = r8993 + r8997;
        double r8999 = log1p(r8967);
        double r9000 = r8999 / r8969;
        double r9001 = exp(r9000);
        double r9002 = r9001 - r8976;
        double r9003 = r8986 ? r8998 : r9002;
        double r9004 = r8979 ? r8984 : r9003;
        return r9004;
}

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 r9005, r9006, r9007, r9008, r9009, r9010, r9011, r9012;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9005);
        mpfr_init_set_str(r9006, "1", 10, MPFR_RNDN);
        mpfr_init(r9007);
        mpfr_init(r9008);
        mpfr_init(r9009);
        mpfr_init(r9010);
        mpfr_init(r9011);
        mpfr_init(r9012);
}

double f_im(double x, double n) {
        mpfr_set_d(r9005, x, MPFR_RNDN);
        ;
        mpfr_add(r9007, r9005, r9006, MPFR_RNDN);
        mpfr_set_d(r9008, n, MPFR_RNDN);
        mpfr_div(r9009, r9006, r9008, MPFR_RNDN);
        mpfr_pow(r9010, r9007, r9009, MPFR_RNDN);
        mpfr_pow(r9011, r9005, r9009, MPFR_RNDN);
        mpfr_sub(r9012, r9010, r9011, MPFR_RNDN);
        return mpfr_get_d(r9012, MPFR_RNDN);
}

static mpfr_t r9013, r9014, r9015, r9016, r9017, r9018, r9019, r9020, r9021, r9022, r9023, r9024, r9025, r9026, r9027, r9028, r9029, r9030, r9031, r9032, r9033, r9034, r9035, r9036, r9037, r9038, r9039, r9040, r9041, r9042, r9043, r9044, r9045, r9046, r9047, r9048, r9049, r9050;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9013);
        mpfr_init(r9014);
        mpfr_init(r9015);
        mpfr_init(r9016);
        mpfr_init_set_str(r9017, "1", 10, MPFR_RNDN);
        mpfr_init(r9018);
        mpfr_init(r9019);
        mpfr_init(r9020);
        mpfr_init(r9021);
        mpfr_init(r9022);
        mpfr_init(r9023);
        mpfr_init_set_str(r9024, "-0.12264808961024468", 10, MPFR_RNDN);
        mpfr_init(r9025);
        mpfr_init(r9026);
        mpfr_init(r9027);
        mpfr_init(r9028);
        mpfr_init(r9029);
        mpfr_init(r9030);
        mpfr_init_set_str(r9031, "3.2862741022484574e-227", 10, MPFR_RNDN);
        mpfr_init(r9032);
        mpfr_init(r9033);
        mpfr_init_set_str(r9034, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r9035, "3", 10, MPFR_RNDN);
        mpfr_init(r9036);
        mpfr_init(r9037);
        mpfr_init(r9038);
        mpfr_init(r9039);
        mpfr_init_set_str(r9040, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9041);
        mpfr_init(r9042);
        mpfr_init(r9043);
        mpfr_init(r9044);
        mpfr_init(r9045);
        mpfr_init(r9046);
        mpfr_init(r9047);
        mpfr_init(r9048);
        mpfr_init(r9049);
        mpfr_init(r9050);
}

double f_fm(double x, double n) {
        mpfr_set_d(r9013, x, MPFR_RNDN);
        mpfr_log(r9014, r9013, MPFR_RNDN);
        mpfr_set_d(r9015, n, MPFR_RNDN);
        mpfr_div(r9016, r9014, r9015, MPFR_RNDN);
        ;
        mpfr_add(r9018, r9016, r9017, MPFR_RNDN);
        mpfr_div(r9019, r9017, r9015, MPFR_RNDN);
        mpfr_div(r9020, r9019, r9013, MPFR_RNDN);
        mpfr_add(r9021, r9018, r9020, MPFR_RNDN);
        mpfr_pow(r9022, r9013, r9019, MPFR_RNDN);
        mpfr_sub(r9023, r9021, r9022, MPFR_RNDN);
        ;
        mpfr_set_si(r9025, mpfr_cmp(r9023, r9024) <= 0, MPFR_RNDN);
        mpfr_add(r9026, r9013, r9017, MPFR_RNDN);
        mpfr_pow(r9027, r9026, r9019, MPFR_RNDN);
        mpfr_sub(r9028, r9027, r9022, MPFR_RNDN);
        mpfr_exp(r9029, r9028, MPFR_RNDN);
        mpfr_log(r9030, r9029, MPFR_RNDN);
        ;
        mpfr_set_si(r9032, mpfr_cmp(r9023, r9031) <= 0, MPFR_RNDN);
        mpfr_div(r9033, r9017, r9013, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9036, r9034, r9035, MPFR_RNDN);
        mpfr_pow(r9037, r9033, r9036, MPFR_RNDN);
        mpfr_pow(r9038, r9019, r9036, MPFR_RNDN);
        mpfr_mul(r9039, r9037, r9038, MPFR_RNDN);
        ;
        mpfr_div(r9041, r9040, r9013, MPFR_RNDN);
        mpfr_sub(r9042, r9016, r9041, MPFR_RNDN);
        mpfr_mul(r9043, r9042, r9039, MPFR_RNDN);
        mpfr_add(r9044, r9039, r9043, MPFR_RNDN);
        mpfr_log1p(r9045, r9013, MPFR_RNDN);
        mpfr_div(r9046, r9045, r9015, MPFR_RNDN);
        mpfr_exp(r9047, r9046, MPFR_RNDN);
        mpfr_sub(r9048, r9047, r9022, MPFR_RNDN);
        if (mpfr_get_si(r9032, MPFR_RNDN)) { mpfr_set(r9049, r9044, MPFR_RNDN); } else { mpfr_set(r9049, r9048, MPFR_RNDN); };
        if (mpfr_get_si(r9025, MPFR_RNDN)) { mpfr_set(r9050, r9030, MPFR_RNDN); } else { mpfr_set(r9050, r9049, MPFR_RNDN); };
        return mpfr_get_d(r9050, MPFR_RNDN);
}

static mpfr_t r9051, r9052, r9053, r9054, r9055, r9056, r9057, r9058, r9059, r9060, r9061, r9062, r9063, r9064, r9065, r9066, r9067, r9068, r9069, r9070, r9071, r9072, r9073, r9074, r9075, r9076, r9077, r9078, r9079, r9080, r9081, r9082, r9083, r9084, r9085, r9086, r9087, r9088;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9051);
        mpfr_init(r9052);
        mpfr_init(r9053);
        mpfr_init(r9054);
        mpfr_init_set_str(r9055, "1", 10, MPFR_RNDN);
        mpfr_init(r9056);
        mpfr_init(r9057);
        mpfr_init(r9058);
        mpfr_init(r9059);
        mpfr_init(r9060);
        mpfr_init(r9061);
        mpfr_init_set_str(r9062, "-0.12264808961024468", 10, MPFR_RNDN);
        mpfr_init(r9063);
        mpfr_init(r9064);
        mpfr_init(r9065);
        mpfr_init(r9066);
        mpfr_init(r9067);
        mpfr_init(r9068);
        mpfr_init_set_str(r9069, "3.2862741022484574e-227", 10, MPFR_RNDN);
        mpfr_init(r9070);
        mpfr_init(r9071);
        mpfr_init_set_str(r9072, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r9073, "3", 10, MPFR_RNDN);
        mpfr_init(r9074);
        mpfr_init(r9075);
        mpfr_init(r9076);
        mpfr_init(r9077);
        mpfr_init_set_str(r9078, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9079);
        mpfr_init(r9080);
        mpfr_init(r9081);
        mpfr_init(r9082);
        mpfr_init(r9083);
        mpfr_init(r9084);
        mpfr_init(r9085);
        mpfr_init(r9086);
        mpfr_init(r9087);
        mpfr_init(r9088);
}

double f_dm(double x, double n) {
        mpfr_set_d(r9051, x, MPFR_RNDN);
        mpfr_log(r9052, r9051, MPFR_RNDN);
        mpfr_set_d(r9053, n, MPFR_RNDN);
        mpfr_div(r9054, r9052, r9053, MPFR_RNDN);
        ;
        mpfr_add(r9056, r9054, r9055, MPFR_RNDN);
        mpfr_div(r9057, r9055, r9053, MPFR_RNDN);
        mpfr_div(r9058, r9057, r9051, MPFR_RNDN);
        mpfr_add(r9059, r9056, r9058, MPFR_RNDN);
        mpfr_pow(r9060, r9051, r9057, MPFR_RNDN);
        mpfr_sub(r9061, r9059, r9060, MPFR_RNDN);
        ;
        mpfr_set_si(r9063, mpfr_cmp(r9061, r9062) <= 0, MPFR_RNDN);
        mpfr_add(r9064, r9051, r9055, MPFR_RNDN);
        mpfr_pow(r9065, r9064, r9057, MPFR_RNDN);
        mpfr_sub(r9066, r9065, r9060, MPFR_RNDN);
        mpfr_exp(r9067, r9066, MPFR_RNDN);
        mpfr_log(r9068, r9067, MPFR_RNDN);
        ;
        mpfr_set_si(r9070, mpfr_cmp(r9061, r9069) <= 0, MPFR_RNDN);
        mpfr_div(r9071, r9055, r9051, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9074, r9072, r9073, MPFR_RNDN);
        mpfr_pow(r9075, r9071, r9074, MPFR_RNDN);
        mpfr_pow(r9076, r9057, r9074, MPFR_RNDN);
        mpfr_mul(r9077, r9075, r9076, MPFR_RNDN);
        ;
        mpfr_div(r9079, r9078, r9051, MPFR_RNDN);
        mpfr_sub(r9080, r9054, r9079, MPFR_RNDN);
        mpfr_mul(r9081, r9080, r9077, MPFR_RNDN);
        mpfr_add(r9082, r9077, r9081, MPFR_RNDN);
        mpfr_log1p(r9083, r9051, MPFR_RNDN);
        mpfr_div(r9084, r9083, r9053, MPFR_RNDN);
        mpfr_exp(r9085, r9084, MPFR_RNDN);
        mpfr_sub(r9086, r9085, r9060, MPFR_RNDN);
        if (mpfr_get_si(r9070, MPFR_RNDN)) { mpfr_set(r9087, r9082, MPFR_RNDN); } else { mpfr_set(r9087, r9086, MPFR_RNDN); };
        if (mpfr_get_si(r9063, MPFR_RNDN)) { mpfr_set(r9088, r9068, MPFR_RNDN); } else { mpfr_set(r9088, r9087, MPFR_RNDN); };
        return mpfr_get_d(r9088, MPFR_RNDN);
}

