#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 r20180 = x;
        float r20181 = 1;
        float r20182 = r20180 + r20181;
        float r20183 = n;
        float r20184 = r20181 / r20183;
        float r20185 = pow(r20182, r20184);
        float r20186 = pow(r20180, r20184);
        float r20187 = r20185 - r20186;
        return r20187;
}

double f_id(double x, double n) {
        double r20188 = x;
        double r20189 = 1;
        double r20190 = r20188 + r20189;
        double r20191 = n;
        double r20192 = r20189 / r20191;
        double r20193 = pow(r20190, r20192);
        double r20194 = pow(r20188, r20192);
        double r20195 = r20193 - r20194;
        return r20195;
}


double f_of(float x, float n) {
        float r20196 = n;
        float r20197 = -2.854732250702043e+17;
        bool r20198 = r20196 <= r20197;
        float r20199 = 1;
        float r20200 = x;
        float r20201 = r20200 * r20196;
        float r20202 = r20199 / r20201;
        float r20203 = 1/2;
        float r20204 = r20203 / r20200;
        float r20205 = r20204 / r20201;
        float r20206 = r20202 - r20205;
        float r20207 = log(r20200);
        float r20208 = r20207 / r20196;
        float r20209 = r20208 / r20201;
        float r20210 = r20206 - r20209;
        float r20211 = 1.1789751731318202e+20;
        bool r20212 = r20196 <= r20211;
        float r20213 = r20200 + r20199;
        float r20214 = r20199 / r20196;
        float r20215 = pow(r20213, r20214);
        float r20216 = pow(r20200, r20214);
        float r20217 = r20215 - r20216;
        float r20218 = cbrt(r20217);
        float r20219 = r20199 + r20200;
        float r20220 = pow(r20219, r20214);
        float r20221 = r20220 - r20216;
        float r20222 = exp(r20221);
        float r20223 = log(r20222);
        float r20224 = cbrt(r20223);
        float r20225 = r20218 * r20224;
        float r20226 = sqrt(r20213);
        float r20227 = pow(r20226, r20214);
        float r20228 = sqrt(r20216);
        float r20229 = r20227 + r20228;
        float r20230 = sqrt(r20219);
        float r20231 = pow(r20230, r20214);
        float r20232 = r20231 - r20228;
        float r20233 = exp(r20232);
        float r20234 = log(r20233);
        float r20235 = r20229 * r20234;
        float r20236 = cbrt(r20235);
        float r20237 = r20225 * r20236;
        float r20238 = r20212 ? r20237 : r20210;
        float r20239 = r20198 ? r20210 : r20238;
        return r20239;
}

double f_od(double x, double n) {
        double r20240 = n;
        double r20241 = -2.854732250702043e+17;
        bool r20242 = r20240 <= r20241;
        double r20243 = 1;
        double r20244 = x;
        double r20245 = r20244 * r20240;
        double r20246 = r20243 / r20245;
        double r20247 = 1/2;
        double r20248 = r20247 / r20244;
        double r20249 = r20248 / r20245;
        double r20250 = r20246 - r20249;
        double r20251 = log(r20244);
        double r20252 = r20251 / r20240;
        double r20253 = r20252 / r20245;
        double r20254 = r20250 - r20253;
        double r20255 = 1.1789751731318202e+20;
        bool r20256 = r20240 <= r20255;
        double r20257 = r20244 + r20243;
        double r20258 = r20243 / r20240;
        double r20259 = pow(r20257, r20258);
        double r20260 = pow(r20244, r20258);
        double r20261 = r20259 - r20260;
        double r20262 = cbrt(r20261);
        double r20263 = r20243 + r20244;
        double r20264 = pow(r20263, r20258);
        double r20265 = r20264 - r20260;
        double r20266 = exp(r20265);
        double r20267 = log(r20266);
        double r20268 = cbrt(r20267);
        double r20269 = r20262 * r20268;
        double r20270 = sqrt(r20257);
        double r20271 = pow(r20270, r20258);
        double r20272 = sqrt(r20260);
        double r20273 = r20271 + r20272;
        double r20274 = sqrt(r20263);
        double r20275 = pow(r20274, r20258);
        double r20276 = r20275 - r20272;
        double r20277 = exp(r20276);
        double r20278 = log(r20277);
        double r20279 = r20273 * r20278;
        double r20280 = cbrt(r20279);
        double r20281 = r20269 * r20280;
        double r20282 = r20256 ? r20281 : r20254;
        double r20283 = r20242 ? r20254 : r20282;
        return r20283;
}

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 r20284, r20285, r20286, r20287, r20288, r20289, r20290, r20291;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20284);
        mpfr_init_set_str(r20285, "1", 10, MPFR_RNDN);
        mpfr_init(r20286);
        mpfr_init(r20287);
        mpfr_init(r20288);
        mpfr_init(r20289);
        mpfr_init(r20290);
        mpfr_init(r20291);
}

double f_im(double x, double n) {
        mpfr_set_d(r20284, x, MPFR_RNDN);
        ;
        mpfr_add(r20286, r20284, r20285, MPFR_RNDN);
        mpfr_set_d(r20287, n, MPFR_RNDN);
        mpfr_div(r20288, r20285, r20287, MPFR_RNDN);
        mpfr_pow(r20289, r20286, r20288, MPFR_RNDN);
        mpfr_pow(r20290, r20284, r20288, MPFR_RNDN);
        mpfr_sub(r20291, r20289, r20290, MPFR_RNDN);
        return mpfr_get_d(r20291, MPFR_RNDN);
}

static mpfr_t r20292, r20293, r20294, r20295, r20296, r20297, r20298, r20299, r20300, r20301, r20302, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20292);
        mpfr_init_set_str(r20293, "-2.854732250702043e+17", 10, MPFR_RNDN);
        mpfr_init(r20294);
        mpfr_init_set_str(r20295, "1", 10, MPFR_RNDN);
        mpfr_init(r20296);
        mpfr_init(r20297);
        mpfr_init(r20298);
        mpfr_init_set_str(r20299, "1/2", 10, MPFR_RNDN);
        mpfr_init(r20300);
        mpfr_init(r20301);
        mpfr_init(r20302);
        mpfr_init(r20303);
        mpfr_init(r20304);
        mpfr_init(r20305);
        mpfr_init(r20306);
        mpfr_init_set_str(r20307, "1.1789751731318202e+20", 10, MPFR_RNDN);
        mpfr_init(r20308);
        mpfr_init(r20309);
        mpfr_init(r20310);
        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(r20320);
        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);
}

double f_fm(double x, double n) {
        mpfr_set_d(r20292, n, MPFR_RNDN);
        ;
        mpfr_set_si(r20294, mpfr_cmp(r20292, r20293) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20296, x, MPFR_RNDN);
        mpfr_mul(r20297, r20296, r20292, MPFR_RNDN);
        mpfr_div(r20298, r20295, r20297, MPFR_RNDN);
        ;
        mpfr_div(r20300, r20299, r20296, MPFR_RNDN);
        mpfr_div(r20301, r20300, r20297, MPFR_RNDN);
        mpfr_sub(r20302, r20298, r20301, MPFR_RNDN);
        mpfr_log(r20303, r20296, MPFR_RNDN);
        mpfr_div(r20304, r20303, r20292, MPFR_RNDN);
        mpfr_div(r20305, r20304, r20297, MPFR_RNDN);
        mpfr_sub(r20306, r20302, r20305, MPFR_RNDN);
        ;
        mpfr_set_si(r20308, mpfr_cmp(r20292, r20307) <= 0, MPFR_RNDN);
        mpfr_add(r20309, r20296, r20295, MPFR_RNDN);
        mpfr_div(r20310, r20295, r20292, MPFR_RNDN);
        mpfr_pow(r20311, r20309, r20310, MPFR_RNDN);
        mpfr_pow(r20312, r20296, r20310, MPFR_RNDN);
        mpfr_sub(r20313, r20311, r20312, MPFR_RNDN);
        mpfr_cbrt(r20314, r20313, MPFR_RNDN);
        mpfr_add(r20315, r20295, r20296, MPFR_RNDN);
        mpfr_pow(r20316, r20315, r20310, MPFR_RNDN);
        mpfr_sub(r20317, r20316, r20312, MPFR_RNDN);
        mpfr_exp(r20318, r20317, MPFR_RNDN);
        mpfr_log(r20319, r20318, MPFR_RNDN);
        mpfr_cbrt(r20320, r20319, MPFR_RNDN);
        mpfr_mul(r20321, r20314, r20320, MPFR_RNDN);
        mpfr_sqrt(r20322, r20309, MPFR_RNDN);
        mpfr_pow(r20323, r20322, r20310, MPFR_RNDN);
        mpfr_sqrt(r20324, r20312, MPFR_RNDN);
        mpfr_add(r20325, r20323, r20324, MPFR_RNDN);
        mpfr_sqrt(r20326, r20315, MPFR_RNDN);
        mpfr_pow(r20327, r20326, r20310, MPFR_RNDN);
        mpfr_sub(r20328, r20327, r20324, MPFR_RNDN);
        mpfr_exp(r20329, r20328, MPFR_RNDN);
        mpfr_log(r20330, r20329, MPFR_RNDN);
        mpfr_mul(r20331, r20325, r20330, MPFR_RNDN);
        mpfr_cbrt(r20332, r20331, MPFR_RNDN);
        mpfr_mul(r20333, r20321, r20332, MPFR_RNDN);
        if (mpfr_get_si(r20308, MPFR_RNDN)) { mpfr_set(r20334, r20333, MPFR_RNDN); } else { mpfr_set(r20334, r20306, MPFR_RNDN); };
        if (mpfr_get_si(r20294, MPFR_RNDN)) { mpfr_set(r20335, r20306, MPFR_RNDN); } else { mpfr_set(r20335, r20334, MPFR_RNDN); };
        return mpfr_get_d(r20335, MPFR_RNDN);
}

static mpfr_t r20336, r20337, r20338, r20339, r20340, r20341, r20342, r20343, r20344, r20345, r20346, r20347, r20348, r20349, r20350, r20351, r20352, r20353, r20354, r20355, r20356, r20357, r20358, r20359, r20360, r20361, r20362, r20363, r20364, r20365, r20366, r20367, r20368, r20369, r20370, r20371, r20372, r20373, r20374, r20375, r20376, r20377, r20378, r20379;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20336);
        mpfr_init_set_str(r20337, "-2.854732250702043e+17", 10, MPFR_RNDN);
        mpfr_init(r20338);
        mpfr_init_set_str(r20339, "1", 10, MPFR_RNDN);
        mpfr_init(r20340);
        mpfr_init(r20341);
        mpfr_init(r20342);
        mpfr_init_set_str(r20343, "1/2", 10, MPFR_RNDN);
        mpfr_init(r20344);
        mpfr_init(r20345);
        mpfr_init(r20346);
        mpfr_init(r20347);
        mpfr_init(r20348);
        mpfr_init(r20349);
        mpfr_init(r20350);
        mpfr_init_set_str(r20351, "1.1789751731318202e+20", 10, MPFR_RNDN);
        mpfr_init(r20352);
        mpfr_init(r20353);
        mpfr_init(r20354);
        mpfr_init(r20355);
        mpfr_init(r20356);
        mpfr_init(r20357);
        mpfr_init(r20358);
        mpfr_init(r20359);
        mpfr_init(r20360);
        mpfr_init(r20361);
        mpfr_init(r20362);
        mpfr_init(r20363);
        mpfr_init(r20364);
        mpfr_init(r20365);
        mpfr_init(r20366);
        mpfr_init(r20367);
        mpfr_init(r20368);
        mpfr_init(r20369);
        mpfr_init(r20370);
        mpfr_init(r20371);
        mpfr_init(r20372);
        mpfr_init(r20373);
        mpfr_init(r20374);
        mpfr_init(r20375);
        mpfr_init(r20376);
        mpfr_init(r20377);
        mpfr_init(r20378);
        mpfr_init(r20379);
}

double f_dm(double x, double n) {
        mpfr_set_d(r20336, n, MPFR_RNDN);
        ;
        mpfr_set_si(r20338, mpfr_cmp(r20336, r20337) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20340, x, MPFR_RNDN);
        mpfr_mul(r20341, r20340, r20336, MPFR_RNDN);
        mpfr_div(r20342, r20339, r20341, MPFR_RNDN);
        ;
        mpfr_div(r20344, r20343, r20340, MPFR_RNDN);
        mpfr_div(r20345, r20344, r20341, MPFR_RNDN);
        mpfr_sub(r20346, r20342, r20345, MPFR_RNDN);
        mpfr_log(r20347, r20340, MPFR_RNDN);
        mpfr_div(r20348, r20347, r20336, MPFR_RNDN);
        mpfr_div(r20349, r20348, r20341, MPFR_RNDN);
        mpfr_sub(r20350, r20346, r20349, MPFR_RNDN);
        ;
        mpfr_set_si(r20352, mpfr_cmp(r20336, r20351) <= 0, MPFR_RNDN);
        mpfr_add(r20353, r20340, r20339, MPFR_RNDN);
        mpfr_div(r20354, r20339, r20336, MPFR_RNDN);
        mpfr_pow(r20355, r20353, r20354, MPFR_RNDN);
        mpfr_pow(r20356, r20340, r20354, MPFR_RNDN);
        mpfr_sub(r20357, r20355, r20356, MPFR_RNDN);
        mpfr_cbrt(r20358, r20357, MPFR_RNDN);
        mpfr_add(r20359, r20339, r20340, MPFR_RNDN);
        mpfr_pow(r20360, r20359, r20354, MPFR_RNDN);
        mpfr_sub(r20361, r20360, r20356, MPFR_RNDN);
        mpfr_exp(r20362, r20361, MPFR_RNDN);
        mpfr_log(r20363, r20362, MPFR_RNDN);
        mpfr_cbrt(r20364, r20363, MPFR_RNDN);
        mpfr_mul(r20365, r20358, r20364, MPFR_RNDN);
        mpfr_sqrt(r20366, r20353, MPFR_RNDN);
        mpfr_pow(r20367, r20366, r20354, MPFR_RNDN);
        mpfr_sqrt(r20368, r20356, MPFR_RNDN);
        mpfr_add(r20369, r20367, r20368, MPFR_RNDN);
        mpfr_sqrt(r20370, r20359, MPFR_RNDN);
        mpfr_pow(r20371, r20370, r20354, MPFR_RNDN);
        mpfr_sub(r20372, r20371, r20368, MPFR_RNDN);
        mpfr_exp(r20373, r20372, MPFR_RNDN);
        mpfr_log(r20374, r20373, MPFR_RNDN);
        mpfr_mul(r20375, r20369, r20374, MPFR_RNDN);
        mpfr_cbrt(r20376, r20375, MPFR_RNDN);
        mpfr_mul(r20377, r20365, r20376, MPFR_RNDN);
        if (mpfr_get_si(r20352, MPFR_RNDN)) { mpfr_set(r20378, r20377, MPFR_RNDN); } else { mpfr_set(r20378, r20350, MPFR_RNDN); };
        if (mpfr_get_si(r20338, MPFR_RNDN)) { mpfr_set(r20379, r20350, MPFR_RNDN); } else { mpfr_set(r20379, r20378, MPFR_RNDN); };
        return mpfr_get_d(r20379, MPFR_RNDN);
}

