#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 r36512 = x;
        float r36513 = 1;
        float r36514 = r36512 + r36513;
        float r36515 = n;
        float r36516 = r36513 / r36515;
        float r36517 = pow(r36514, r36516);
        float r36518 = pow(r36512, r36516);
        float r36519 = r36517 - r36518;
        return r36519;
}

double f_id(double x, double n) {
        double r36520 = x;
        double r36521 = 1;
        double r36522 = r36520 + r36521;
        double r36523 = n;
        double r36524 = r36521 / r36523;
        double r36525 = pow(r36522, r36524);
        double r36526 = pow(r36520, r36524);
        double r36527 = r36525 - r36526;
        return r36527;
}


double f_of(float x, float n) {
        float r36528 = n;
        float r36529 = -16217293.129781114;
        bool r36530 = r36528 <= r36529;
        float r36531 = 1;
        float r36532 = x;
        float r36533 = r36531 / r36532;
        float r36534 = r36533 / r36528;
        float r36535 = 1/2;
        float r36536 = r36535 / r36528;
        float r36537 = r36532 * r36532;
        float r36538 = r36536 / r36537;
        float r36539 = r36534 - r36538;
        float r36540 = log(r36532);
        float r36541 = r36528 * r36528;
        float r36542 = r36540 / r36541;
        float r36543 = r36542 / r36532;
        float r36544 = r36539 - r36543;
        float r36545 = 698268857478.727;
        bool r36546 = r36528 <= r36545;
        float r36547 = r36532 + r36531;
        float r36548 = r36531 / r36528;
        float r36549 = pow(r36547, r36548);
        float r36550 = pow(r36532, r36548);
        float r36551 = r36549 - r36550;
        float r36552 = exp(r36551);
        float r36553 = log(r36552);
        float r36554 = 3;
        float r36555 = pow(r36553, r36554);
        float r36556 = cbrt(r36555);
        float r36557 = r36546 ? r36556 : r36544;
        float r36558 = r36530 ? r36544 : r36557;
        return r36558;
}

double f_od(double x, double n) {
        double r36559 = n;
        double r36560 = -16217293.129781114;
        bool r36561 = r36559 <= r36560;
        double r36562 = 1;
        double r36563 = x;
        double r36564 = r36562 / r36563;
        double r36565 = r36564 / r36559;
        double r36566 = 1/2;
        double r36567 = r36566 / r36559;
        double r36568 = r36563 * r36563;
        double r36569 = r36567 / r36568;
        double r36570 = r36565 - r36569;
        double r36571 = log(r36563);
        double r36572 = r36559 * r36559;
        double r36573 = r36571 / r36572;
        double r36574 = r36573 / r36563;
        double r36575 = r36570 - r36574;
        double r36576 = 698268857478.727;
        bool r36577 = r36559 <= r36576;
        double r36578 = r36563 + r36562;
        double r36579 = r36562 / r36559;
        double r36580 = pow(r36578, r36579);
        double r36581 = pow(r36563, r36579);
        double r36582 = r36580 - r36581;
        double r36583 = exp(r36582);
        double r36584 = log(r36583);
        double r36585 = 3;
        double r36586 = pow(r36584, r36585);
        double r36587 = cbrt(r36586);
        double r36588 = r36577 ? r36587 : r36575;
        double r36589 = r36561 ? r36575 : r36588;
        return r36589;
}

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 r36590, r36591, r36592, r36593, r36594, r36595, r36596, r36597;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36590);
        mpfr_init_set_str(r36591, "1", 10, MPFR_RNDN);
        mpfr_init(r36592);
        mpfr_init(r36593);
        mpfr_init(r36594);
        mpfr_init(r36595);
        mpfr_init(r36596);
        mpfr_init(r36597);
}

double f_im(double x, double n) {
        mpfr_set_d(r36590, x, MPFR_RNDN);
        ;
        mpfr_add(r36592, r36590, r36591, MPFR_RNDN);
        mpfr_set_d(r36593, n, MPFR_RNDN);
        mpfr_div(r36594, r36591, r36593, MPFR_RNDN);
        mpfr_pow(r36595, r36592, r36594, MPFR_RNDN);
        mpfr_pow(r36596, r36590, r36594, MPFR_RNDN);
        mpfr_sub(r36597, r36595, r36596, MPFR_RNDN);
        return mpfr_get_d(r36597, MPFR_RNDN);
}

static mpfr_t r36598, r36599, r36600, r36601, r36602, r36603, r36604, r36605, r36606, r36607, r36608, r36609, r36610, r36611, r36612, r36613, r36614, r36615, r36616, r36617, r36618, r36619, r36620, r36621, r36622, r36623, r36624, r36625, r36626, r36627, r36628;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36598);
        mpfr_init_set_str(r36599, "-16217293.129781114", 10, MPFR_RNDN);
        mpfr_init(r36600);
        mpfr_init_set_str(r36601, "1", 10, MPFR_RNDN);
        mpfr_init(r36602);
        mpfr_init(r36603);
        mpfr_init(r36604);
        mpfr_init_set_str(r36605, "1/2", 10, MPFR_RNDN);
        mpfr_init(r36606);
        mpfr_init(r36607);
        mpfr_init(r36608);
        mpfr_init(r36609);
        mpfr_init(r36610);
        mpfr_init(r36611);
        mpfr_init(r36612);
        mpfr_init(r36613);
        mpfr_init(r36614);
        mpfr_init_set_str(r36615, "698268857478.727", 10, MPFR_RNDN);
        mpfr_init(r36616);
        mpfr_init(r36617);
        mpfr_init(r36618);
        mpfr_init(r36619);
        mpfr_init(r36620);
        mpfr_init(r36621);
        mpfr_init(r36622);
        mpfr_init(r36623);
        mpfr_init_set_str(r36624, "3", 10, MPFR_RNDN);
        mpfr_init(r36625);
        mpfr_init(r36626);
        mpfr_init(r36627);
        mpfr_init(r36628);
}

double f_fm(double x, double n) {
        mpfr_set_d(r36598, n, MPFR_RNDN);
        ;
        mpfr_set_si(r36600, mpfr_cmp(r36598, r36599) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r36602, x, MPFR_RNDN);
        mpfr_div(r36603, r36601, r36602, MPFR_RNDN);
        mpfr_div(r36604, r36603, r36598, MPFR_RNDN);
        ;
        mpfr_div(r36606, r36605, r36598, MPFR_RNDN);
        mpfr_mul(r36607, r36602, r36602, MPFR_RNDN);
        mpfr_div(r36608, r36606, r36607, MPFR_RNDN);
        mpfr_sub(r36609, r36604, r36608, MPFR_RNDN);
        mpfr_log(r36610, r36602, MPFR_RNDN);
        mpfr_mul(r36611, r36598, r36598, MPFR_RNDN);
        mpfr_div(r36612, r36610, r36611, MPFR_RNDN);
        mpfr_div(r36613, r36612, r36602, MPFR_RNDN);
        mpfr_sub(r36614, r36609, r36613, MPFR_RNDN);
        ;
        mpfr_set_si(r36616, mpfr_cmp(r36598, r36615) <= 0, MPFR_RNDN);
        mpfr_add(r36617, r36602, r36601, MPFR_RNDN);
        mpfr_div(r36618, r36601, r36598, MPFR_RNDN);
        mpfr_pow(r36619, r36617, r36618, MPFR_RNDN);
        mpfr_pow(r36620, r36602, r36618, MPFR_RNDN);
        mpfr_sub(r36621, r36619, r36620, MPFR_RNDN);
        mpfr_exp(r36622, r36621, MPFR_RNDN);
        mpfr_log(r36623, r36622, MPFR_RNDN);
        ;
        mpfr_pow(r36625, r36623, r36624, MPFR_RNDN);
        mpfr_cbrt(r36626, r36625, MPFR_RNDN);
        if (mpfr_get_si(r36616, MPFR_RNDN)) { mpfr_set(r36627, r36626, MPFR_RNDN); } else { mpfr_set(r36627, r36614, MPFR_RNDN); };
        if (mpfr_get_si(r36600, MPFR_RNDN)) { mpfr_set(r36628, r36614, MPFR_RNDN); } else { mpfr_set(r36628, r36627, MPFR_RNDN); };
        return mpfr_get_d(r36628, MPFR_RNDN);
}

static mpfr_t r36629, r36630, r36631, r36632, r36633, r36634, r36635, r36636, r36637, r36638, r36639, r36640, r36641, r36642, r36643, r36644, r36645, r36646, r36647, r36648, r36649, r36650, r36651, r36652, r36653, r36654, r36655, r36656, r36657, r36658, r36659;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36629);
        mpfr_init_set_str(r36630, "-16217293.129781114", 10, MPFR_RNDN);
        mpfr_init(r36631);
        mpfr_init_set_str(r36632, "1", 10, MPFR_RNDN);
        mpfr_init(r36633);
        mpfr_init(r36634);
        mpfr_init(r36635);
        mpfr_init_set_str(r36636, "1/2", 10, MPFR_RNDN);
        mpfr_init(r36637);
        mpfr_init(r36638);
        mpfr_init(r36639);
        mpfr_init(r36640);
        mpfr_init(r36641);
        mpfr_init(r36642);
        mpfr_init(r36643);
        mpfr_init(r36644);
        mpfr_init(r36645);
        mpfr_init_set_str(r36646, "698268857478.727", 10, MPFR_RNDN);
        mpfr_init(r36647);
        mpfr_init(r36648);
        mpfr_init(r36649);
        mpfr_init(r36650);
        mpfr_init(r36651);
        mpfr_init(r36652);
        mpfr_init(r36653);
        mpfr_init(r36654);
        mpfr_init_set_str(r36655, "3", 10, MPFR_RNDN);
        mpfr_init(r36656);
        mpfr_init(r36657);
        mpfr_init(r36658);
        mpfr_init(r36659);
}

double f_dm(double x, double n) {
        mpfr_set_d(r36629, n, MPFR_RNDN);
        ;
        mpfr_set_si(r36631, mpfr_cmp(r36629, r36630) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r36633, x, MPFR_RNDN);
        mpfr_div(r36634, r36632, r36633, MPFR_RNDN);
        mpfr_div(r36635, r36634, r36629, MPFR_RNDN);
        ;
        mpfr_div(r36637, r36636, r36629, MPFR_RNDN);
        mpfr_mul(r36638, r36633, r36633, MPFR_RNDN);
        mpfr_div(r36639, r36637, r36638, MPFR_RNDN);
        mpfr_sub(r36640, r36635, r36639, MPFR_RNDN);
        mpfr_log(r36641, r36633, MPFR_RNDN);
        mpfr_mul(r36642, r36629, r36629, MPFR_RNDN);
        mpfr_div(r36643, r36641, r36642, MPFR_RNDN);
        mpfr_div(r36644, r36643, r36633, MPFR_RNDN);
        mpfr_sub(r36645, r36640, r36644, MPFR_RNDN);
        ;
        mpfr_set_si(r36647, mpfr_cmp(r36629, r36646) <= 0, MPFR_RNDN);
        mpfr_add(r36648, r36633, r36632, MPFR_RNDN);
        mpfr_div(r36649, r36632, r36629, MPFR_RNDN);
        mpfr_pow(r36650, r36648, r36649, MPFR_RNDN);
        mpfr_pow(r36651, r36633, r36649, MPFR_RNDN);
        mpfr_sub(r36652, r36650, r36651, MPFR_RNDN);
        mpfr_exp(r36653, r36652, MPFR_RNDN);
        mpfr_log(r36654, r36653, MPFR_RNDN);
        ;
        mpfr_pow(r36656, r36654, r36655, MPFR_RNDN);
        mpfr_cbrt(r36657, r36656, MPFR_RNDN);
        if (mpfr_get_si(r36647, MPFR_RNDN)) { mpfr_set(r36658, r36657, MPFR_RNDN); } else { mpfr_set(r36658, r36645, MPFR_RNDN); };
        if (mpfr_get_si(r36631, MPFR_RNDN)) { mpfr_set(r36659, r36645, MPFR_RNDN); } else { mpfr_set(r36659, r36658, MPFR_RNDN); };
        return mpfr_get_d(r36659, MPFR_RNDN);
}

