#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "NMSE problem 3.4.6";

double f_if(float x, float n) {
        float r14361 = x;
        float r14362 = 1.0f;
        float r14363 = r14361 + r14362;
        float r14364 = n;
        float r14365 = r14362 / r14364;
        float r14366 = pow(r14363, r14365);
        float r14367 = pow(r14361, r14365);
        float r14368 = r14366 - r14367;
        return r14368;
}

double f_id(double x, double n) {
        double r14369 = x;
        double r14370 = 1.0;
        double r14371 = r14369 + r14370;
        double r14372 = n;
        double r14373 = r14370 / r14372;
        double r14374 = pow(r14371, r14373);
        double r14375 = pow(r14369, r14373);
        double r14376 = r14374 - r14375;
        return r14376;
}


double f_of(float x, float n) {
        float r14377 = n;
        float r14378 = -2.3031253660826823e+26f;
        bool r14379 = r14377 <= r14378;
        float r14380 = 1.0f;
        float r14381 = x;
        float r14382 = r14380 / r14381;
        float r14383 = r14382 / r14377;
        float r14384 = log(r14381);
        float r14385 = r14377 * r14381;
        float r14386 = r14377 * r14385;
        float r14387 = r14384 / r14386;
        float r14388 = r14383 - r14387;
        float r14389 = 0.5f;
        float r14390 = r14389 / r14377;
        float r14391 = r14381 * r14381;
        float r14392 = r14390 / r14391;
        float r14393 = r14388 - r14392;
        float r14394 = 479155699082691.3f;
        bool r14395 = r14377 <= r14394;
        float r14396 = r14381 + r14380;
        float r14397 = r14380 / r14377;
        float r14398 = pow(r14396, r14397);
        float r14399 = pow(r14381, r14397);
        float r14400 = r14398 - r14399;
        float r14401 = r14400 * (r14400 * r14400);
        float r14402 = cbrt(r14401);
        float r14403 = r14402 * (r14402 * r14402);
        float r14404 = cbrt(r14403);
        float r14405 = r14404 * (r14404 * r14404);
        float r14406 = cbrt(r14405);
        float r14407 = r14395 ? r14406 : r14393;
        float r14408 = r14379 ? r14393 : r14407;
        return r14408;
}

double f_od(double x, double n) {
        double r14409 = n;
        double r14410 = -2.3031253660826823e+26;
        bool r14411 = r14409 <= r14410;
        double r14412 = 1.0;
        double r14413 = x;
        double r14414 = r14412 / r14413;
        double r14415 = r14414 / r14409;
        double r14416 = log(r14413);
        double r14417 = r14409 * r14413;
        double r14418 = r14409 * r14417;
        double r14419 = r14416 / r14418;
        double r14420 = r14415 - r14419;
        double r14421 = 0.5;
        double r14422 = r14421 / r14409;
        double r14423 = r14413 * r14413;
        double r14424 = r14422 / r14423;
        double r14425 = r14420 - r14424;
        double r14426 = 479155699082691.3;
        bool r14427 = r14409 <= r14426;
        double r14428 = r14413 + r14412;
        double r14429 = r14412 / r14409;
        double r14430 = pow(r14428, r14429);
        double r14431 = pow(r14413, r14429);
        double r14432 = r14430 - r14431;
        double r14433 = r14432 * (r14432 * r14432);
        double r14434 = cbrt(r14433);
        double r14435 = r14434 * (r14434 * r14434);
        double r14436 = cbrt(r14435);
        double r14437 = r14436 * (r14436 * r14436);
        double r14438 = cbrt(r14437);
        double r14439 = r14427 ? r14438 : r14425;
        double r14440 = r14411 ? r14425 : r14439;
        return r14440;
}

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 r14441, r14442, r14443, r14444, r14445, r14446, r14447, r14448;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r14441);
        mpfr_init_set_str(r14442, "1", 10, MPFR_RNDN);
        mpfr_init(r14443);
        mpfr_init(r14444);
        mpfr_init(r14445);
        mpfr_init(r14446);
        mpfr_init(r14447);
        mpfr_init(r14448);
}

double f_im(double x, double n) {
        mpfr_set_d(r14441, x, MPFR_RNDN);
        ;
        mpfr_add(r14443, r14441, r14442, MPFR_RNDN);
        mpfr_set_d(r14444, n, MPFR_RNDN);
        mpfr_div(r14445, r14442, r14444, MPFR_RNDN);
        mpfr_pow(r14446, r14443, r14445, MPFR_RNDN);
        mpfr_pow(r14447, r14441, r14445, MPFR_RNDN);
        mpfr_sub(r14448, r14446, r14447, MPFR_RNDN);
        return mpfr_get_d(r14448, MPFR_RNDN);
}

static mpfr_t r14449, r14450, r14451, r14452, r14453, r14454, r14455, r14456, r14457, r14458, r14459, r14460, r14461, r14462, r14463, r14464, r14465, r14466, r14467, r14468, r14469, r14470, r14471, r14472, r14473, r14474, r14475, r14476, r14477, r14478, r14479, r14480;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14449);
        mpfr_init_set_str(r14450, "-2.3031253660826823e+26", 10, MPFR_RNDN);
        mpfr_init(r14451);
        mpfr_init_set_str(r14452, "1", 10, MPFR_RNDN);
        mpfr_init(r14453);
        mpfr_init(r14454);
        mpfr_init(r14455);
        mpfr_init(r14456);
        mpfr_init(r14457);
        mpfr_init(r14458);
        mpfr_init(r14459);
        mpfr_init(r14460);
        mpfr_init_set_str(r14461, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14462);
        mpfr_init(r14463);
        mpfr_init(r14464);
        mpfr_init(r14465);
        mpfr_init_set_str(r14466, "479155699082691.3", 10, MPFR_RNDN);
        mpfr_init(r14467);
        mpfr_init(r14468);
        mpfr_init(r14469);
        mpfr_init(r14470);
        mpfr_init(r14471);
        mpfr_init(r14472);
        mpfr_init(r14473);
        mpfr_init(r14474);
        mpfr_init(r14475);
        mpfr_init(r14476);
        mpfr_init(r14477);
        mpfr_init(r14478);
        mpfr_init(r14479);
        mpfr_init(r14480);
}

double f_fm(double x, double n) {
        mpfr_set_d(r14449, n, MPFR_RNDN);
        ;
        mpfr_set_si(r14451, mpfr_cmp(r14449, r14450) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r14453, x, MPFR_RNDN);
        mpfr_div(r14454, r14452, r14453, MPFR_RNDN);
        mpfr_div(r14455, r14454, r14449, MPFR_RNDN);
        mpfr_log(r14456, r14453, MPFR_RNDN);
        mpfr_mul(r14457, r14449, r14453, MPFR_RNDN);
        mpfr_mul(r14458, r14449, r14457, MPFR_RNDN);
        mpfr_div(r14459, r14456, r14458, MPFR_RNDN);
        mpfr_sub(r14460, r14455, r14459, MPFR_RNDN);
        ;
        mpfr_div(r14462, r14461, r14449, MPFR_RNDN);
        mpfr_sqr(r14463, r14453, MPFR_RNDN);
        mpfr_div(r14464, r14462, r14463, MPFR_RNDN);
        mpfr_sub(r14465, r14460, r14464, MPFR_RNDN);
        ;
        mpfr_set_si(r14467, mpfr_cmp(r14449, r14466) <= 0, MPFR_RNDN);
        mpfr_add(r14468, r14453, r14452, MPFR_RNDN);
        mpfr_div(r14469, r14452, r14449, MPFR_RNDN);
        mpfr_pow(r14470, r14468, r14469, MPFR_RNDN);
        mpfr_pow(r14471, r14453, r14469, MPFR_RNDN);
        mpfr_sub(r14472, r14470, r14471, MPFR_RNDN);
        mpfr_mul(r14473, r14472, r14472, MPFR_RNDN); mpfr_mul(r14473, r14473, r14472, MPFR_RNDN);
        mpfr_cbrt(r14474, r14473, MPFR_RNDN);
        mpfr_mul(r14475, r14474, r14474, MPFR_RNDN); mpfr_mul(r14475, r14475, r14474, MPFR_RNDN);
        mpfr_cbrt(r14476, r14475, MPFR_RNDN);
        mpfr_mul(r14477, r14476, r14476, MPFR_RNDN); mpfr_mul(r14477, r14477, r14476, MPFR_RNDN);
        mpfr_cbrt(r14478, r14477, MPFR_RNDN);
        if (mpfr_get_si(r14467, MPFR_RNDN)) { mpfr_set(r14479, r14478, MPFR_RNDN); } else { mpfr_set(r14479, r14465, MPFR_RNDN); };
        if (mpfr_get_si(r14451, MPFR_RNDN)) { mpfr_set(r14480, r14465, MPFR_RNDN); } else { mpfr_set(r14480, r14479, MPFR_RNDN); };
        return mpfr_get_d(r14480, MPFR_RNDN);
}

static mpfr_t r14481, r14482, r14483, r14484, r14485, r14486, r14487, r14488, r14489, r14490, r14491, r14492, r14493, r14494, r14495, r14496, r14497, r14498, r14499, r14500, r14501, r14502, r14503, r14504, r14505, r14506, r14507, r14508, r14509, r14510, r14511, r14512;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14481);
        mpfr_init_set_str(r14482, "-2.3031253660826823e+26", 10, MPFR_RNDN);
        mpfr_init(r14483);
        mpfr_init_set_str(r14484, "1", 10, MPFR_RNDN);
        mpfr_init(r14485);
        mpfr_init(r14486);
        mpfr_init(r14487);
        mpfr_init(r14488);
        mpfr_init(r14489);
        mpfr_init(r14490);
        mpfr_init(r14491);
        mpfr_init(r14492);
        mpfr_init_set_str(r14493, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14494);
        mpfr_init(r14495);
        mpfr_init(r14496);
        mpfr_init(r14497);
        mpfr_init_set_str(r14498, "479155699082691.3", 10, MPFR_RNDN);
        mpfr_init(r14499);
        mpfr_init(r14500);
        mpfr_init(r14501);
        mpfr_init(r14502);
        mpfr_init(r14503);
        mpfr_init(r14504);
        mpfr_init(r14505);
        mpfr_init(r14506);
        mpfr_init(r14507);
        mpfr_init(r14508);
        mpfr_init(r14509);
        mpfr_init(r14510);
        mpfr_init(r14511);
        mpfr_init(r14512);
}

double f_dm(double x, double n) {
        mpfr_set_d(r14481, n, MPFR_RNDN);
        ;
        mpfr_set_si(r14483, mpfr_cmp(r14481, r14482) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r14485, x, MPFR_RNDN);
        mpfr_div(r14486, r14484, r14485, MPFR_RNDN);
        mpfr_div(r14487, r14486, r14481, MPFR_RNDN);
        mpfr_log(r14488, r14485, MPFR_RNDN);
        mpfr_mul(r14489, r14481, r14485, MPFR_RNDN);
        mpfr_mul(r14490, r14481, r14489, MPFR_RNDN);
        mpfr_div(r14491, r14488, r14490, MPFR_RNDN);
        mpfr_sub(r14492, r14487, r14491, MPFR_RNDN);
        ;
        mpfr_div(r14494, r14493, r14481, MPFR_RNDN);
        mpfr_sqr(r14495, r14485, MPFR_RNDN);
        mpfr_div(r14496, r14494, r14495, MPFR_RNDN);
        mpfr_sub(r14497, r14492, r14496, MPFR_RNDN);
        ;
        mpfr_set_si(r14499, mpfr_cmp(r14481, r14498) <= 0, MPFR_RNDN);
        mpfr_add(r14500, r14485, r14484, MPFR_RNDN);
        mpfr_div(r14501, r14484, r14481, MPFR_RNDN);
        mpfr_pow(r14502, r14500, r14501, MPFR_RNDN);
        mpfr_pow(r14503, r14485, r14501, MPFR_RNDN);
        mpfr_sub(r14504, r14502, r14503, MPFR_RNDN);
        mpfr_mul(r14505, r14504, r14504, MPFR_RNDN); mpfr_mul(r14505, r14505, r14504, MPFR_RNDN);
        mpfr_cbrt(r14506, r14505, MPFR_RNDN);
        mpfr_mul(r14507, r14506, r14506, MPFR_RNDN); mpfr_mul(r14507, r14507, r14506, MPFR_RNDN);
        mpfr_cbrt(r14508, r14507, MPFR_RNDN);
        mpfr_mul(r14509, r14508, r14508, MPFR_RNDN); mpfr_mul(r14509, r14509, r14508, MPFR_RNDN);
        mpfr_cbrt(r14510, r14509, MPFR_RNDN);
        if (mpfr_get_si(r14499, MPFR_RNDN)) { mpfr_set(r14511, r14510, MPFR_RNDN); } else { mpfr_set(r14511, r14497, MPFR_RNDN); };
        if (mpfr_get_si(r14483, MPFR_RNDN)) { mpfr_set(r14512, r14497, MPFR_RNDN); } else { mpfr_set(r14512, r14511, MPFR_RNDN); };
        return mpfr_get_d(r14512, MPFR_RNDN);
}

