#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 r19104 = x;
        float r19105 = 1.0f;
        float r19106 = r19104 + r19105;
        float r19107 = n;
        float r19108 = r19105 / r19107;
        float r19109 = pow(r19106, r19108);
        float r19110 = pow(r19104, r19108);
        float r19111 = r19109 - r19110;
        return r19111;
}

double f_id(double x, double n) {
        double r19112 = x;
        double r19113 = 1.0;
        double r19114 = r19112 + r19113;
        double r19115 = n;
        double r19116 = r19113 / r19115;
        double r19117 = pow(r19114, r19116);
        double r19118 = pow(r19112, r19116);
        double r19119 = r19117 - r19118;
        return r19119;
}


double f_of(float x, float n) {
        float r19120 = n;
        float r19121 = -2125067825358.7346f;
        bool r19122 = r19120 <= r19121;
        float r19123 = 1.0f;
        float r19124 = x;
        float r19125 = r19124 * r19120;
        float r19126 = r19123 / r19125;
        float r19127 = 0.5f;
        float r19128 = r19127 / r19124;
        float r19129 = r19128 / r19125;
        float r19130 = r19126 - r19129;
        float r19131 = log(r19124);
        float r19132 = r19131 / r19120;
        float r19133 = r19132 / r19125;
        float r19134 = r19130 - r19133;
        float r19135 = 1850694803779224.5f;
        bool r19136 = r19120 <= r19135;
        float r19137 = r19124 + r19123;
        float r19138 = sqrt(r19137);
        float r19139 = r19123 / r19120;
        float r19140 = pow(r19138, r19139);
        float r19141 = pow(r19124, r19139);
        float r19142 = sqrt(r19141);
        float r19143 = r19140 + r19142;
        float r19144 = r19140 - r19142;
        float r19145 = r19143 * r19144;
        float r19146 = cbrt(r19145);
        float r19147 = r19146 * r19146;
        float r19148 = cbrt(r19146);
        float r19149 = r19148 * r19148;
        float r19150 = r19149 * r19148;
        float r19151 = r19147 * r19150;
        float r19152 = r19136 ? r19151 : r19134;
        float r19153 = r19122 ? r19134 : r19152;
        return r19153;
}

double f_od(double x, double n) {
        double r19154 = n;
        double r19155 = -2125067825358.7346;
        bool r19156 = r19154 <= r19155;
        double r19157 = 1.0;
        double r19158 = x;
        double r19159 = r19158 * r19154;
        double r19160 = r19157 / r19159;
        double r19161 = 0.5;
        double r19162 = r19161 / r19158;
        double r19163 = r19162 / r19159;
        double r19164 = r19160 - r19163;
        double r19165 = log(r19158);
        double r19166 = r19165 / r19154;
        double r19167 = r19166 / r19159;
        double r19168 = r19164 - r19167;
        double r19169 = 1850694803779224.5;
        bool r19170 = r19154 <= r19169;
        double r19171 = r19158 + r19157;
        double r19172 = sqrt(r19171);
        double r19173 = r19157 / r19154;
        double r19174 = pow(r19172, r19173);
        double r19175 = pow(r19158, r19173);
        double r19176 = sqrt(r19175);
        double r19177 = r19174 + r19176;
        double r19178 = r19174 - r19176;
        double r19179 = r19177 * r19178;
        double r19180 = cbrt(r19179);
        double r19181 = r19180 * r19180;
        double r19182 = cbrt(r19180);
        double r19183 = r19182 * r19182;
        double r19184 = r19183 * r19182;
        double r19185 = r19181 * r19184;
        double r19186 = r19170 ? r19185 : r19168;
        double r19187 = r19156 ? r19168 : r19186;
        return r19187;
}

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 r19188, r19189, r19190, r19191, r19192, r19193, r19194, r19195;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19188);
        mpfr_init_set_str(r19189, "1", 10, MPFR_RNDN);
        mpfr_init(r19190);
        mpfr_init(r19191);
        mpfr_init(r19192);
        mpfr_init(r19193);
        mpfr_init(r19194);
        mpfr_init(r19195);
}

double f_im(double x, double n) {
        mpfr_set_d(r19188, x, MPFR_RNDN);
        ;
        mpfr_add(r19190, r19188, r19189, MPFR_RNDN);
        mpfr_set_d(r19191, n, MPFR_RNDN);
        mpfr_div(r19192, r19189, r19191, MPFR_RNDN);
        mpfr_pow(r19193, r19190, r19192, MPFR_RNDN);
        mpfr_pow(r19194, r19188, r19192, MPFR_RNDN);
        mpfr_sub(r19195, r19193, r19194, MPFR_RNDN);
        return mpfr_get_d(r19195, MPFR_RNDN);
}

static mpfr_t r19196, r19197, r19198, r19199, r19200, r19201, r19202, r19203, r19204, r19205, r19206, r19207, r19208, r19209, r19210, r19211, r19212, r19213, r19214, r19215, r19216, r19217, r19218, r19219, r19220, r19221, r19222, r19223, r19224, r19225, r19226, r19227, r19228, r19229;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19196);
        mpfr_init_set_str(r19197, "-2125067825358.7346", 10, MPFR_RNDN);
        mpfr_init(r19198);
        mpfr_init_set_str(r19199, "1", 10, MPFR_RNDN);
        mpfr_init(r19200);
        mpfr_init(r19201);
        mpfr_init(r19202);
        mpfr_init_set_str(r19203, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19204);
        mpfr_init(r19205);
        mpfr_init(r19206);
        mpfr_init(r19207);
        mpfr_init(r19208);
        mpfr_init(r19209);
        mpfr_init(r19210);
        mpfr_init_set_str(r19211, "1850694803779224.5", 10, MPFR_RNDN);
        mpfr_init(r19212);
        mpfr_init(r19213);
        mpfr_init(r19214);
        mpfr_init(r19215);
        mpfr_init(r19216);
        mpfr_init(r19217);
        mpfr_init(r19218);
        mpfr_init(r19219);
        mpfr_init(r19220);
        mpfr_init(r19221);
        mpfr_init(r19222);
        mpfr_init(r19223);
        mpfr_init(r19224);
        mpfr_init(r19225);
        mpfr_init(r19226);
        mpfr_init(r19227);
        mpfr_init(r19228);
        mpfr_init(r19229);
}

double f_fm(double x, double n) {
        mpfr_set_d(r19196, n, MPFR_RNDN);
        ;
        mpfr_set_si(r19198, mpfr_cmp(r19196, r19197) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19200, x, MPFR_RNDN);
        mpfr_mul(r19201, r19200, r19196, MPFR_RNDN);
        mpfr_div(r19202, r19199, r19201, MPFR_RNDN);
        ;
        mpfr_div(r19204, r19203, r19200, MPFR_RNDN);
        mpfr_div(r19205, r19204, r19201, MPFR_RNDN);
        mpfr_sub(r19206, r19202, r19205, MPFR_RNDN);
        mpfr_log(r19207, r19200, MPFR_RNDN);
        mpfr_div(r19208, r19207, r19196, MPFR_RNDN);
        mpfr_div(r19209, r19208, r19201, MPFR_RNDN);
        mpfr_sub(r19210, r19206, r19209, MPFR_RNDN);
        ;
        mpfr_set_si(r19212, mpfr_cmp(r19196, r19211) <= 0, MPFR_RNDN);
        mpfr_add(r19213, r19200, r19199, MPFR_RNDN);
        mpfr_sqrt(r19214, r19213, MPFR_RNDN);
        mpfr_div(r19215, r19199, r19196, MPFR_RNDN);
        mpfr_pow(r19216, r19214, r19215, MPFR_RNDN);
        mpfr_pow(r19217, r19200, r19215, MPFR_RNDN);
        mpfr_sqrt(r19218, r19217, MPFR_RNDN);
        mpfr_add(r19219, r19216, r19218, MPFR_RNDN);
        mpfr_sub(r19220, r19216, r19218, MPFR_RNDN);
        mpfr_mul(r19221, r19219, r19220, MPFR_RNDN);
        mpfr_cbrt(r19222, r19221, MPFR_RNDN);
        mpfr_mul(r19223, r19222, r19222, MPFR_RNDN);
        mpfr_cbrt(r19224, r19222, MPFR_RNDN);
        mpfr_mul(r19225, r19224, r19224, MPFR_RNDN);
        mpfr_mul(r19226, r19225, r19224, MPFR_RNDN);
        mpfr_mul(r19227, r19223, r19226, MPFR_RNDN);
        if (mpfr_get_si(r19212, MPFR_RNDN)) { mpfr_set(r19228, r19227, MPFR_RNDN); } else { mpfr_set(r19228, r19210, MPFR_RNDN); };
        if (mpfr_get_si(r19198, MPFR_RNDN)) { mpfr_set(r19229, r19210, MPFR_RNDN); } else { mpfr_set(r19229, r19228, MPFR_RNDN); };
        return mpfr_get_d(r19229, MPFR_RNDN);
}

static mpfr_t r19230, r19231, r19232, r19233, r19234, r19235, r19236, r19237, r19238, r19239, r19240, r19241, r19242, r19243, r19244, r19245, r19246, r19247, r19248, r19249, r19250, r19251, r19252, r19253, r19254, r19255, r19256, r19257, r19258, r19259, r19260, r19261, r19262, r19263;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19230);
        mpfr_init_set_str(r19231, "-2125067825358.7346", 10, MPFR_RNDN);
        mpfr_init(r19232);
        mpfr_init_set_str(r19233, "1", 10, MPFR_RNDN);
        mpfr_init(r19234);
        mpfr_init(r19235);
        mpfr_init(r19236);
        mpfr_init_set_str(r19237, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19238);
        mpfr_init(r19239);
        mpfr_init(r19240);
        mpfr_init(r19241);
        mpfr_init(r19242);
        mpfr_init(r19243);
        mpfr_init(r19244);
        mpfr_init_set_str(r19245, "1850694803779224.5", 10, MPFR_RNDN);
        mpfr_init(r19246);
        mpfr_init(r19247);
        mpfr_init(r19248);
        mpfr_init(r19249);
        mpfr_init(r19250);
        mpfr_init(r19251);
        mpfr_init(r19252);
        mpfr_init(r19253);
        mpfr_init(r19254);
        mpfr_init(r19255);
        mpfr_init(r19256);
        mpfr_init(r19257);
        mpfr_init(r19258);
        mpfr_init(r19259);
        mpfr_init(r19260);
        mpfr_init(r19261);
        mpfr_init(r19262);
        mpfr_init(r19263);
}

double f_dm(double x, double n) {
        mpfr_set_d(r19230, n, MPFR_RNDN);
        ;
        mpfr_set_si(r19232, mpfr_cmp(r19230, r19231) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19234, x, MPFR_RNDN);
        mpfr_mul(r19235, r19234, r19230, MPFR_RNDN);
        mpfr_div(r19236, r19233, r19235, MPFR_RNDN);
        ;
        mpfr_div(r19238, r19237, r19234, MPFR_RNDN);
        mpfr_div(r19239, r19238, r19235, MPFR_RNDN);
        mpfr_sub(r19240, r19236, r19239, MPFR_RNDN);
        mpfr_log(r19241, r19234, MPFR_RNDN);
        mpfr_div(r19242, r19241, r19230, MPFR_RNDN);
        mpfr_div(r19243, r19242, r19235, MPFR_RNDN);
        mpfr_sub(r19244, r19240, r19243, MPFR_RNDN);
        ;
        mpfr_set_si(r19246, mpfr_cmp(r19230, r19245) <= 0, MPFR_RNDN);
        mpfr_add(r19247, r19234, r19233, MPFR_RNDN);
        mpfr_sqrt(r19248, r19247, MPFR_RNDN);
        mpfr_div(r19249, r19233, r19230, MPFR_RNDN);
        mpfr_pow(r19250, r19248, r19249, MPFR_RNDN);
        mpfr_pow(r19251, r19234, r19249, MPFR_RNDN);
        mpfr_sqrt(r19252, r19251, MPFR_RNDN);
        mpfr_add(r19253, r19250, r19252, MPFR_RNDN);
        mpfr_sub(r19254, r19250, r19252, MPFR_RNDN);
        mpfr_mul(r19255, r19253, r19254, MPFR_RNDN);
        mpfr_cbrt(r19256, r19255, MPFR_RNDN);
        mpfr_mul(r19257, r19256, r19256, MPFR_RNDN);
        mpfr_cbrt(r19258, r19256, MPFR_RNDN);
        mpfr_mul(r19259, r19258, r19258, MPFR_RNDN);
        mpfr_mul(r19260, r19259, r19258, MPFR_RNDN);
        mpfr_mul(r19261, r19257, r19260, MPFR_RNDN);
        if (mpfr_get_si(r19246, MPFR_RNDN)) { mpfr_set(r19262, r19261, MPFR_RNDN); } else { mpfr_set(r19262, r19244, MPFR_RNDN); };
        if (mpfr_get_si(r19232, MPFR_RNDN)) { mpfr_set(r19263, r19244, MPFR_RNDN); } else { mpfr_set(r19263, r19262, MPFR_RNDN); };
        return mpfr_get_d(r19263, MPFR_RNDN);
}

