#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 r4773359 = x;
        float r4773360 = 1.0f;
        float r4773361 = r4773359 + r4773360;
        float r4773362 = n;
        float r4773363 = r4773360 / r4773362;
        float r4773364 = pow(r4773361, r4773363);
        float r4773365 = pow(r4773359, r4773363);
        float r4773366 = r4773364 - r4773365;
        return r4773366;
}

double f_id(double x, double n) {
        double r4773367 = x;
        double r4773368 = 1.0;
        double r4773369 = r4773367 + r4773368;
        double r4773370 = n;
        double r4773371 = r4773368 / r4773370;
        double r4773372 = pow(r4773369, r4773371);
        double r4773373 = pow(r4773367, r4773371);
        double r4773374 = r4773372 - r4773373;
        return r4773374;
}


double f_of(float x, float n) {
        float r4773375 = n;
        float r4773376 = -31.329673016395393f;
        bool r4773377 = r4773375 <= r4773376;
        float r4773378 = 1.0f;
        float r4773379 = x;
        float r4773380 = r4773375 * r4773379;
        float r4773381 = r4773378 / r4773380;
        float r4773382 = log(r4773379);
        float r4773383 = r4773375 * r4773375;
        float r4773384 = r4773383 * r4773379;
        float r4773385 = r4773382 / r4773384;
        float r4773386 = 0.5f;
        float r4773387 = r4773379 * r4773379;
        float r4773388 = r4773375 * r4773387;
        float r4773389 = exp(r4773388);
        float r4773390 = log(r4773389);
        float r4773391 = r4773378 / r4773390;
        float r4773392 = r4773386 * r4773391;
        float r4773393 = r4773385 + r4773392;
        float r4773394 = r4773381 - r4773393;
        float r4773395 = 5667669302503732.0f;
        bool r4773396 = r4773375 <= r4773395;
        float r4773397 = r4773379 + r4773378;
        float r4773398 = r4773378 / r4773375;
        float r4773399 = pow(r4773397, r4773398);
        float r4773400 = pow(r4773379, r4773398);
        float r4773401 = r4773399 - r4773400;
        float r4773402 = cbrt(r4773401);
        float r4773403 = r4773402 * (r4773402 * r4773402);
        float r4773404 = r4773396 ? r4773403 : r4773394;
        float r4773405 = r4773377 ? r4773394 : r4773404;
        return r4773405;
}

double f_od(double x, double n) {
        double r4773406 = n;
        double r4773407 = -31.329673016395393;
        bool r4773408 = r4773406 <= r4773407;
        double r4773409 = 1.0;
        double r4773410 = x;
        double r4773411 = r4773406 * r4773410;
        double r4773412 = r4773409 / r4773411;
        double r4773413 = log(r4773410);
        double r4773414 = r4773406 * r4773406;
        double r4773415 = r4773414 * r4773410;
        double r4773416 = r4773413 / r4773415;
        double r4773417 = 0.5;
        double r4773418 = r4773410 * r4773410;
        double r4773419 = r4773406 * r4773418;
        double r4773420 = exp(r4773419);
        double r4773421 = log(r4773420);
        double r4773422 = r4773409 / r4773421;
        double r4773423 = r4773417 * r4773422;
        double r4773424 = r4773416 + r4773423;
        double r4773425 = r4773412 - r4773424;
        double r4773426 = 5667669302503732.0;
        bool r4773427 = r4773406 <= r4773426;
        double r4773428 = r4773410 + r4773409;
        double r4773429 = r4773409 / r4773406;
        double r4773430 = pow(r4773428, r4773429);
        double r4773431 = pow(r4773410, r4773429);
        double r4773432 = r4773430 - r4773431;
        double r4773433 = cbrt(r4773432);
        double r4773434 = r4773433 * (r4773433 * r4773433);
        double r4773435 = r4773427 ? r4773434 : r4773425;
        double r4773436 = r4773408 ? r4773425 : r4773435;
        return r4773436;
}

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 r4773437, r4773438, r4773439, r4773440, r4773441, r4773442, r4773443, r4773444;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773437);
        mpfr_init_set_str(r4773438, "1", 10, MPFR_RNDN);
        mpfr_init(r4773439);
        mpfr_init(r4773440);
        mpfr_init(r4773441);
        mpfr_init(r4773442);
        mpfr_init(r4773443);
        mpfr_init(r4773444);
}

double f_im(double x, double n) {
        mpfr_set_d(r4773437, x, MPFR_RNDN);
        ;
        mpfr_add(r4773439, r4773437, r4773438, MPFR_RNDN);
        mpfr_set_d(r4773440, n, MPFR_RNDN);
        mpfr_div(r4773441, r4773438, r4773440, MPFR_RNDN);
        mpfr_pow(r4773442, r4773439, r4773441, MPFR_RNDN);
        mpfr_pow(r4773443, r4773437, r4773441, MPFR_RNDN);
        mpfr_sub(r4773444, r4773442, r4773443, MPFR_RNDN);
        return mpfr_get_d(r4773444, MPFR_RNDN);
}

static mpfr_t r4773445, r4773446, r4773447, r4773448, r4773449, r4773450, r4773451, r4773452, r4773453, r4773454, r4773455, r4773456, r4773457, r4773458, r4773459, r4773460, r4773461, r4773462, r4773463, r4773464, r4773465, r4773466, r4773467, r4773468, r4773469, r4773470, r4773471, r4773472, r4773473, r4773474, r4773475;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773445);
        mpfr_init_set_str(r4773446, "-31.329673016395393", 10, MPFR_RNDN);
        mpfr_init(r4773447);
        mpfr_init_set_str(r4773448, "1", 10, MPFR_RNDN);
        mpfr_init(r4773449);
        mpfr_init(r4773450);
        mpfr_init(r4773451);
        mpfr_init(r4773452);
        mpfr_init(r4773453);
        mpfr_init(r4773454);
        mpfr_init(r4773455);
        mpfr_init_set_str(r4773456, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4773457);
        mpfr_init(r4773458);
        mpfr_init(r4773459);
        mpfr_init(r4773460);
        mpfr_init(r4773461);
        mpfr_init(r4773462);
        mpfr_init(r4773463);
        mpfr_init(r4773464);
        mpfr_init_set_str(r4773465, "5667669302503732.0", 10, MPFR_RNDN);
        mpfr_init(r4773466);
        mpfr_init(r4773467);
        mpfr_init(r4773468);
        mpfr_init(r4773469);
        mpfr_init(r4773470);
        mpfr_init(r4773471);
        mpfr_init(r4773472);
        mpfr_init(r4773473);
        mpfr_init(r4773474);
        mpfr_init(r4773475);
}

double f_fm(double x, double n) {
        mpfr_set_d(r4773445, n, MPFR_RNDN);
        ;
        mpfr_set_si(r4773447, mpfr_cmp(r4773445, r4773446) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4773449, x, MPFR_RNDN);
        mpfr_mul(r4773450, r4773445, r4773449, MPFR_RNDN);
        mpfr_div(r4773451, r4773448, r4773450, MPFR_RNDN);
        mpfr_log(r4773452, r4773449, MPFR_RNDN);
        mpfr_sqr(r4773453, r4773445, MPFR_RNDN);
        mpfr_mul(r4773454, r4773453, r4773449, MPFR_RNDN);
        mpfr_div(r4773455, r4773452, r4773454, MPFR_RNDN);
        ;
        mpfr_sqr(r4773457, r4773449, MPFR_RNDN);
        mpfr_mul(r4773458, r4773445, r4773457, MPFR_RNDN);
        mpfr_exp(r4773459, r4773458, MPFR_RNDN);
        mpfr_log(r4773460, r4773459, MPFR_RNDN);
        mpfr_div(r4773461, r4773448, r4773460, MPFR_RNDN);
        mpfr_mul(r4773462, r4773456, r4773461, MPFR_RNDN);
        mpfr_add(r4773463, r4773455, r4773462, MPFR_RNDN);
        mpfr_sub(r4773464, r4773451, r4773463, MPFR_RNDN);
        ;
        mpfr_set_si(r4773466, mpfr_cmp(r4773445, r4773465) <= 0, MPFR_RNDN);
        mpfr_add(r4773467, r4773449, r4773448, MPFR_RNDN);
        mpfr_div(r4773468, r4773448, r4773445, MPFR_RNDN);
        mpfr_pow(r4773469, r4773467, r4773468, MPFR_RNDN);
        mpfr_pow(r4773470, r4773449, r4773468, MPFR_RNDN);
        mpfr_sub(r4773471, r4773469, r4773470, MPFR_RNDN);
        mpfr_cbrt(r4773472, r4773471, MPFR_RNDN);
        mpfr_mul(r4773473, r4773472, r4773472, MPFR_RNDN); mpfr_mul(r4773473, r4773473, r4773472, MPFR_RNDN);
        if (mpfr_get_si(r4773466, MPFR_RNDN)) { mpfr_set(r4773474, r4773473, MPFR_RNDN); } else { mpfr_set(r4773474, r4773464, MPFR_RNDN); };
        if (mpfr_get_si(r4773447, MPFR_RNDN)) { mpfr_set(r4773475, r4773464, MPFR_RNDN); } else { mpfr_set(r4773475, r4773474, MPFR_RNDN); };
        return mpfr_get_d(r4773475, MPFR_RNDN);
}

static mpfr_t r4773476, r4773477, r4773478, r4773479, r4773480, r4773481, r4773482, r4773483, r4773484, r4773485, r4773486, r4773487, r4773488, r4773489, r4773490, r4773491, r4773492, r4773493, r4773494, r4773495, r4773496, r4773497, r4773498, r4773499, r4773500, r4773501, r4773502, r4773503, r4773504, r4773505, r4773506;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773476);
        mpfr_init_set_str(r4773477, "-31.329673016395393", 10, MPFR_RNDN);
        mpfr_init(r4773478);
        mpfr_init_set_str(r4773479, "1", 10, MPFR_RNDN);
        mpfr_init(r4773480);
        mpfr_init(r4773481);
        mpfr_init(r4773482);
        mpfr_init(r4773483);
        mpfr_init(r4773484);
        mpfr_init(r4773485);
        mpfr_init(r4773486);
        mpfr_init_set_str(r4773487, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4773488);
        mpfr_init(r4773489);
        mpfr_init(r4773490);
        mpfr_init(r4773491);
        mpfr_init(r4773492);
        mpfr_init(r4773493);
        mpfr_init(r4773494);
        mpfr_init(r4773495);
        mpfr_init_set_str(r4773496, "5667669302503732.0", 10, MPFR_RNDN);
        mpfr_init(r4773497);
        mpfr_init(r4773498);
        mpfr_init(r4773499);
        mpfr_init(r4773500);
        mpfr_init(r4773501);
        mpfr_init(r4773502);
        mpfr_init(r4773503);
        mpfr_init(r4773504);
        mpfr_init(r4773505);
        mpfr_init(r4773506);
}

double f_dm(double x, double n) {
        mpfr_set_d(r4773476, n, MPFR_RNDN);
        ;
        mpfr_set_si(r4773478, mpfr_cmp(r4773476, r4773477) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4773480, x, MPFR_RNDN);
        mpfr_mul(r4773481, r4773476, r4773480, MPFR_RNDN);
        mpfr_div(r4773482, r4773479, r4773481, MPFR_RNDN);
        mpfr_log(r4773483, r4773480, MPFR_RNDN);
        mpfr_sqr(r4773484, r4773476, MPFR_RNDN);
        mpfr_mul(r4773485, r4773484, r4773480, MPFR_RNDN);
        mpfr_div(r4773486, r4773483, r4773485, MPFR_RNDN);
        ;
        mpfr_sqr(r4773488, r4773480, MPFR_RNDN);
        mpfr_mul(r4773489, r4773476, r4773488, MPFR_RNDN);
        mpfr_exp(r4773490, r4773489, MPFR_RNDN);
        mpfr_log(r4773491, r4773490, MPFR_RNDN);
        mpfr_div(r4773492, r4773479, r4773491, MPFR_RNDN);
        mpfr_mul(r4773493, r4773487, r4773492, MPFR_RNDN);
        mpfr_add(r4773494, r4773486, r4773493, MPFR_RNDN);
        mpfr_sub(r4773495, r4773482, r4773494, MPFR_RNDN);
        ;
        mpfr_set_si(r4773497, mpfr_cmp(r4773476, r4773496) <= 0, MPFR_RNDN);
        mpfr_add(r4773498, r4773480, r4773479, MPFR_RNDN);
        mpfr_div(r4773499, r4773479, r4773476, MPFR_RNDN);
        mpfr_pow(r4773500, r4773498, r4773499, MPFR_RNDN);
        mpfr_pow(r4773501, r4773480, r4773499, MPFR_RNDN);
        mpfr_sub(r4773502, r4773500, r4773501, MPFR_RNDN);
        mpfr_cbrt(r4773503, r4773502, MPFR_RNDN);
        mpfr_mul(r4773504, r4773503, r4773503, MPFR_RNDN); mpfr_mul(r4773504, r4773504, r4773503, MPFR_RNDN);
        if (mpfr_get_si(r4773497, MPFR_RNDN)) { mpfr_set(r4773505, r4773504, MPFR_RNDN); } else { mpfr_set(r4773505, r4773495, MPFR_RNDN); };
        if (mpfr_get_si(r4773478, MPFR_RNDN)) { mpfr_set(r4773506, r4773495, MPFR_RNDN); } else { mpfr_set(r4773506, r4773505, MPFR_RNDN); };
        return mpfr_get_d(r4773506, MPFR_RNDN);
}

