#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 r20156 = x;
        float r20157 = 1;
        float r20158 = r20156 + r20157;
        float r20159 = n;
        float r20160 = r20157 / r20159;
        float r20161 = pow(r20158, r20160);
        float r20162 = pow(r20156, r20160);
        float r20163 = r20161 - r20162;
        return r20163;
}

double f_id(double x, double n) {
        double r20164 = x;
        double r20165 = 1;
        double r20166 = r20164 + r20165;
        double r20167 = n;
        double r20168 = r20165 / r20167;
        double r20169 = pow(r20166, r20168);
        double r20170 = pow(r20164, r20168);
        double r20171 = r20169 - r20170;
        return r20171;
}


double f_of(float x, float n) {
        float r20172 = n;
        float r20173 = -3780261227358.035;
        bool r20174 = r20172 <= r20173;
        float r20175 = 1;
        float r20176 = x;
        float r20177 = r20175 / r20176;
        float r20178 = r20177 / r20172;
        float r20179 = 1/2;
        float r20180 = r20179 / r20172;
        float r20181 = r20176 * r20176;
        float r20182 = r20180 / r20181;
        float r20183 = r20178 - r20182;
        float r20184 = log(r20176);
        float r20185 = r20176 * r20172;
        float r20186 = r20184 / r20185;
        float r20187 = r20186 / r20172;
        float r20188 = r20183 - r20187;
        float r20189 = 2197371.258540478;
        bool r20190 = r20172 <= r20189;
        float r20191 = r20175 + r20176;
        float r20192 = r20175 / r20172;
        float r20193 = pow(r20191, r20192);
        float r20194 = pow(r20176, r20192);
        float r20195 = r20193 - r20194;
        float r20196 = exp(r20195);
        float r20197 = sqrt(r20196);
        float r20198 = log(r20197);
        float r20199 = cbrt(r20198);
        float r20200 = r20199 * r20199;
        float r20201 = exp(r20193);
        float r20202 = sqrt(r20201);
        float r20203 = log(r20202);
        float r20204 = exp(r20194);
        float r20205 = sqrt(r20204);
        float r20206 = log(r20205);
        float r20207 = r20203 - r20206;
        float r20208 = cbrt(r20207);
        float r20209 = r20200 * r20208;
        float r20210 = r20198 + r20209;
        float r20211 = r20190 ? r20210 : r20188;
        float r20212 = r20174 ? r20188 : r20211;
        return r20212;
}

double f_od(double x, double n) {
        double r20213 = n;
        double r20214 = -3780261227358.035;
        bool r20215 = r20213 <= r20214;
        double r20216 = 1;
        double r20217 = x;
        double r20218 = r20216 / r20217;
        double r20219 = r20218 / r20213;
        double r20220 = 1/2;
        double r20221 = r20220 / r20213;
        double r20222 = r20217 * r20217;
        double r20223 = r20221 / r20222;
        double r20224 = r20219 - r20223;
        double r20225 = log(r20217);
        double r20226 = r20217 * r20213;
        double r20227 = r20225 / r20226;
        double r20228 = r20227 / r20213;
        double r20229 = r20224 - r20228;
        double r20230 = 2197371.258540478;
        bool r20231 = r20213 <= r20230;
        double r20232 = r20216 + r20217;
        double r20233 = r20216 / r20213;
        double r20234 = pow(r20232, r20233);
        double r20235 = pow(r20217, r20233);
        double r20236 = r20234 - r20235;
        double r20237 = exp(r20236);
        double r20238 = sqrt(r20237);
        double r20239 = log(r20238);
        double r20240 = cbrt(r20239);
        double r20241 = r20240 * r20240;
        double r20242 = exp(r20234);
        double r20243 = sqrt(r20242);
        double r20244 = log(r20243);
        double r20245 = exp(r20235);
        double r20246 = sqrt(r20245);
        double r20247 = log(r20246);
        double r20248 = r20244 - r20247;
        double r20249 = cbrt(r20248);
        double r20250 = r20241 * r20249;
        double r20251 = r20239 + r20250;
        double r20252 = r20231 ? r20251 : r20229;
        double r20253 = r20215 ? r20229 : r20252;
        return r20253;
}

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 r20254, r20255, r20256, r20257, r20258, r20259, r20260, r20261;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20254);
        mpfr_init_set_str(r20255, "1", 10, MPFR_RNDN);
        mpfr_init(r20256);
        mpfr_init(r20257);
        mpfr_init(r20258);
        mpfr_init(r20259);
        mpfr_init(r20260);
        mpfr_init(r20261);
}

double f_im(double x, double n) {
        mpfr_set_d(r20254, x, MPFR_RNDN);
        ;
        mpfr_add(r20256, r20254, r20255, MPFR_RNDN);
        mpfr_set_d(r20257, n, MPFR_RNDN);
        mpfr_div(r20258, r20255, r20257, MPFR_RNDN);
        mpfr_pow(r20259, r20256, r20258, MPFR_RNDN);
        mpfr_pow(r20260, r20254, r20258, MPFR_RNDN);
        mpfr_sub(r20261, r20259, r20260, MPFR_RNDN);
        return mpfr_get_d(r20261, MPFR_RNDN);
}

static mpfr_t r20262, r20263, r20264, r20265, r20266, r20267, r20268, r20269, r20270, r20271, r20272, r20273, r20274, r20275, r20276, r20277, r20278, r20279, r20280, r20281, r20282, r20283, r20284, r20285, r20286, r20287, r20288, r20289, r20290, r20291, r20292, r20293, r20294, r20295, r20296, r20297, r20298, r20299, r20300, r20301, r20302;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20262);
        mpfr_init_set_str(r20263, "-3780261227358.035", 10, MPFR_RNDN);
        mpfr_init(r20264);
        mpfr_init_set_str(r20265, "1", 10, MPFR_RNDN);
        mpfr_init(r20266);
        mpfr_init(r20267);
        mpfr_init(r20268);
        mpfr_init_set_str(r20269, "1/2", 10, MPFR_RNDN);
        mpfr_init(r20270);
        mpfr_init(r20271);
        mpfr_init(r20272);
        mpfr_init(r20273);
        mpfr_init(r20274);
        mpfr_init(r20275);
        mpfr_init(r20276);
        mpfr_init(r20277);
        mpfr_init(r20278);
        mpfr_init_set_str(r20279, "2197371.258540478", 10, MPFR_RNDN);
        mpfr_init(r20280);
        mpfr_init(r20281);
        mpfr_init(r20282);
        mpfr_init(r20283);
        mpfr_init(r20284);
        mpfr_init(r20285);
        mpfr_init(r20286);
        mpfr_init(r20287);
        mpfr_init(r20288);
        mpfr_init(r20289);
        mpfr_init(r20290);
        mpfr_init(r20291);
        mpfr_init(r20292);
        mpfr_init(r20293);
        mpfr_init(r20294);
        mpfr_init(r20295);
        mpfr_init(r20296);
        mpfr_init(r20297);
        mpfr_init(r20298);
        mpfr_init(r20299);
        mpfr_init(r20300);
        mpfr_init(r20301);
        mpfr_init(r20302);
}

double f_fm(double x, double n) {
        mpfr_set_d(r20262, n, MPFR_RNDN);
        ;
        mpfr_set_si(r20264, mpfr_cmp(r20262, r20263) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20266, x, MPFR_RNDN);
        mpfr_div(r20267, r20265, r20266, MPFR_RNDN);
        mpfr_div(r20268, r20267, r20262, MPFR_RNDN);
        ;
        mpfr_div(r20270, r20269, r20262, MPFR_RNDN);
        mpfr_mul(r20271, r20266, r20266, MPFR_RNDN);
        mpfr_div(r20272, r20270, r20271, MPFR_RNDN);
        mpfr_sub(r20273, r20268, r20272, MPFR_RNDN);
        mpfr_log(r20274, r20266, MPFR_RNDN);
        mpfr_mul(r20275, r20266, r20262, MPFR_RNDN);
        mpfr_div(r20276, r20274, r20275, MPFR_RNDN);
        mpfr_div(r20277, r20276, r20262, MPFR_RNDN);
        mpfr_sub(r20278, r20273, r20277, MPFR_RNDN);
        ;
        mpfr_set_si(r20280, mpfr_cmp(r20262, r20279) <= 0, MPFR_RNDN);
        mpfr_add(r20281, r20265, r20266, MPFR_RNDN);
        mpfr_div(r20282, r20265, r20262, MPFR_RNDN);
        mpfr_pow(r20283, r20281, r20282, MPFR_RNDN);
        mpfr_pow(r20284, r20266, r20282, MPFR_RNDN);
        mpfr_sub(r20285, r20283, r20284, MPFR_RNDN);
        mpfr_exp(r20286, r20285, MPFR_RNDN);
        mpfr_sqrt(r20287, r20286, MPFR_RNDN);
        mpfr_log(r20288, r20287, MPFR_RNDN);
        mpfr_cbrt(r20289, r20288, MPFR_RNDN);
        mpfr_mul(r20290, r20289, r20289, MPFR_RNDN);
        mpfr_exp(r20291, r20283, MPFR_RNDN);
        mpfr_sqrt(r20292, r20291, MPFR_RNDN);
        mpfr_log(r20293, r20292, MPFR_RNDN);
        mpfr_exp(r20294, r20284, MPFR_RNDN);
        mpfr_sqrt(r20295, r20294, MPFR_RNDN);
        mpfr_log(r20296, r20295, MPFR_RNDN);
        mpfr_sub(r20297, r20293, r20296, MPFR_RNDN);
        mpfr_cbrt(r20298, r20297, MPFR_RNDN);
        mpfr_mul(r20299, r20290, r20298, MPFR_RNDN);
        mpfr_add(r20300, r20288, r20299, MPFR_RNDN);
        if (mpfr_get_si(r20280, MPFR_RNDN)) { mpfr_set(r20301, r20300, MPFR_RNDN); } else { mpfr_set(r20301, r20278, MPFR_RNDN); };
        if (mpfr_get_si(r20264, MPFR_RNDN)) { mpfr_set(r20302, r20278, MPFR_RNDN); } else { mpfr_set(r20302, r20301, MPFR_RNDN); };
        return mpfr_get_d(r20302, MPFR_RNDN);
}

static mpfr_t r20303, r20304, r20305, r20306, r20307, r20308, r20309, r20310, r20311, r20312, r20313, r20314, r20315, r20316, r20317, r20318, r20319, r20320, r20321, r20322, r20323, r20324, r20325, r20326, r20327, r20328, r20329, r20330, r20331, r20332, r20333, r20334, r20335, r20336, r20337, r20338, r20339, r20340, r20341, r20342, r20343;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20303);
        mpfr_init_set_str(r20304, "-3780261227358.035", 10, MPFR_RNDN);
        mpfr_init(r20305);
        mpfr_init_set_str(r20306, "1", 10, MPFR_RNDN);
        mpfr_init(r20307);
        mpfr_init(r20308);
        mpfr_init(r20309);
        mpfr_init_set_str(r20310, "1/2", 10, MPFR_RNDN);
        mpfr_init(r20311);
        mpfr_init(r20312);
        mpfr_init(r20313);
        mpfr_init(r20314);
        mpfr_init(r20315);
        mpfr_init(r20316);
        mpfr_init(r20317);
        mpfr_init(r20318);
        mpfr_init(r20319);
        mpfr_init_set_str(r20320, "2197371.258540478", 10, MPFR_RNDN);
        mpfr_init(r20321);
        mpfr_init(r20322);
        mpfr_init(r20323);
        mpfr_init(r20324);
        mpfr_init(r20325);
        mpfr_init(r20326);
        mpfr_init(r20327);
        mpfr_init(r20328);
        mpfr_init(r20329);
        mpfr_init(r20330);
        mpfr_init(r20331);
        mpfr_init(r20332);
        mpfr_init(r20333);
        mpfr_init(r20334);
        mpfr_init(r20335);
        mpfr_init(r20336);
        mpfr_init(r20337);
        mpfr_init(r20338);
        mpfr_init(r20339);
        mpfr_init(r20340);
        mpfr_init(r20341);
        mpfr_init(r20342);
        mpfr_init(r20343);
}

double f_dm(double x, double n) {
        mpfr_set_d(r20303, n, MPFR_RNDN);
        ;
        mpfr_set_si(r20305, mpfr_cmp(r20303, r20304) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20307, x, MPFR_RNDN);
        mpfr_div(r20308, r20306, r20307, MPFR_RNDN);
        mpfr_div(r20309, r20308, r20303, MPFR_RNDN);
        ;
        mpfr_div(r20311, r20310, r20303, MPFR_RNDN);
        mpfr_mul(r20312, r20307, r20307, MPFR_RNDN);
        mpfr_div(r20313, r20311, r20312, MPFR_RNDN);
        mpfr_sub(r20314, r20309, r20313, MPFR_RNDN);
        mpfr_log(r20315, r20307, MPFR_RNDN);
        mpfr_mul(r20316, r20307, r20303, MPFR_RNDN);
        mpfr_div(r20317, r20315, r20316, MPFR_RNDN);
        mpfr_div(r20318, r20317, r20303, MPFR_RNDN);
        mpfr_sub(r20319, r20314, r20318, MPFR_RNDN);
        ;
        mpfr_set_si(r20321, mpfr_cmp(r20303, r20320) <= 0, MPFR_RNDN);
        mpfr_add(r20322, r20306, r20307, MPFR_RNDN);
        mpfr_div(r20323, r20306, r20303, MPFR_RNDN);
        mpfr_pow(r20324, r20322, r20323, MPFR_RNDN);
        mpfr_pow(r20325, r20307, r20323, MPFR_RNDN);
        mpfr_sub(r20326, r20324, r20325, MPFR_RNDN);
        mpfr_exp(r20327, r20326, MPFR_RNDN);
        mpfr_sqrt(r20328, r20327, MPFR_RNDN);
        mpfr_log(r20329, r20328, MPFR_RNDN);
        mpfr_cbrt(r20330, r20329, MPFR_RNDN);
        mpfr_mul(r20331, r20330, r20330, MPFR_RNDN);
        mpfr_exp(r20332, r20324, MPFR_RNDN);
        mpfr_sqrt(r20333, r20332, MPFR_RNDN);
        mpfr_log(r20334, r20333, MPFR_RNDN);
        mpfr_exp(r20335, r20325, MPFR_RNDN);
        mpfr_sqrt(r20336, r20335, MPFR_RNDN);
        mpfr_log(r20337, r20336, MPFR_RNDN);
        mpfr_sub(r20338, r20334, r20337, MPFR_RNDN);
        mpfr_cbrt(r20339, r20338, MPFR_RNDN);
        mpfr_mul(r20340, r20331, r20339, MPFR_RNDN);
        mpfr_add(r20341, r20329, r20340, MPFR_RNDN);
        if (mpfr_get_si(r20321, MPFR_RNDN)) { mpfr_set(r20342, r20341, MPFR_RNDN); } else { mpfr_set(r20342, r20319, MPFR_RNDN); };
        if (mpfr_get_si(r20305, MPFR_RNDN)) { mpfr_set(r20343, r20319, MPFR_RNDN); } else { mpfr_set(r20343, r20342, MPFR_RNDN); };
        return mpfr_get_d(r20343, MPFR_RNDN);
}

