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

double f_id(double x, double n) {
        double r8924 = x;
        double r8925 = 1.0;
        double r8926 = r8924 + r8925;
        double r8927 = n;
        double r8928 = r8925 / r8927;
        double r8929 = pow(r8926, r8928);
        double r8930 = pow(r8924, r8928);
        double r8931 = r8929 - r8930;
        return r8931;
}


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

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

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 r9008, r9009, r9010, r9011, r9012, r9013, r9014, r9015;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9008);
        mpfr_init_set_str(r9009, "1", 10, MPFR_RNDN);
        mpfr_init(r9010);
        mpfr_init(r9011);
        mpfr_init(r9012);
        mpfr_init(r9013);
        mpfr_init(r9014);
        mpfr_init(r9015);
}

double f_im(double x, double n) {
        mpfr_set_d(r9008, x, MPFR_RNDN);
        ;
        mpfr_add(r9010, r9008, r9009, MPFR_RNDN);
        mpfr_set_d(r9011, n, MPFR_RNDN);
        mpfr_div(r9012, r9009, r9011, MPFR_RNDN);
        mpfr_pow(r9013, r9010, r9012, MPFR_RNDN);
        mpfr_pow(r9014, r9008, r9012, MPFR_RNDN);
        mpfr_sub(r9015, r9013, r9014, MPFR_RNDN);
        return mpfr_get_d(r9015, MPFR_RNDN);
}

static mpfr_t 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, r9051, r9052, r9053;

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

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

static mpfr_t 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, r9089, r9090, r9091;

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

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

