#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 r4500557 = x;
        float r4500558 = 1.0f;
        float r4500559 = r4500557 + r4500558;
        float r4500560 = n;
        float r4500561 = r4500558 / r4500560;
        float r4500562 = pow(r4500559, r4500561);
        float r4500563 = pow(r4500557, r4500561);
        float r4500564 = r4500562 - r4500563;
        return r4500564;
}

double f_id(double x, double n) {
        double r4500565 = x;
        double r4500566 = 1.0;
        double r4500567 = r4500565 + r4500566;
        double r4500568 = n;
        double r4500569 = r4500566 / r4500568;
        double r4500570 = pow(r4500567, r4500569);
        double r4500571 = pow(r4500565, r4500569);
        double r4500572 = r4500570 - r4500571;
        return r4500572;
}


double f_of(float x, float n) {
        float r4500573 = n;
        float r4500574 = -13459018702146.598f;
        bool r4500575 = r4500573 <= r4500574;
        float r4500576 = 1.0f;
        float r4500577 = x;
        float r4500578 = r4500573 * r4500577;
        float r4500579 = r4500576 / r4500578;
        float r4500580 = 0.5f;
        float r4500581 = r4500580 / r4500573;
        float r4500582 = r4500577 * r4500577;
        float r4500583 = r4500581 / r4500582;
        float r4500584 = r4500579 - r4500583;
        float r4500585 = log(r4500577);
        float r4500586 = r4500585 / r4500577;
        float r4500587 = r4500573 * r4500573;
        float r4500588 = r4500586 / r4500587;
        float r4500589 = r4500584 - r4500588;
        float r4500590 = 3663814092.5485716f;
        bool r4500591 = r4500573 <= r4500590;
        float r4500592 = r4500577 + r4500576;
        float r4500593 = r4500576 / r4500573;
        float r4500594 = pow(r4500592, r4500593);
        float r4500595 = cbrt(r4500594);
        float r4500596 = r4500595 * (r4500595 * r4500595);
        float r4500597 = pow(r4500577, r4500593);
        float r4500598 = r4500596 - r4500597;
        float r4500599 = r4500591 ? r4500598 : r4500589;
        float r4500600 = r4500575 ? r4500589 : r4500599;
        return r4500600;
}

double f_od(double x, double n) {
        double r4500601 = n;
        double r4500602 = -13459018702146.598;
        bool r4500603 = r4500601 <= r4500602;
        double r4500604 = 1.0;
        double r4500605 = x;
        double r4500606 = r4500601 * r4500605;
        double r4500607 = r4500604 / r4500606;
        double r4500608 = 0.5;
        double r4500609 = r4500608 / r4500601;
        double r4500610 = r4500605 * r4500605;
        double r4500611 = r4500609 / r4500610;
        double r4500612 = r4500607 - r4500611;
        double r4500613 = log(r4500605);
        double r4500614 = r4500613 / r4500605;
        double r4500615 = r4500601 * r4500601;
        double r4500616 = r4500614 / r4500615;
        double r4500617 = r4500612 - r4500616;
        double r4500618 = 3663814092.5485716;
        bool r4500619 = r4500601 <= r4500618;
        double r4500620 = r4500605 + r4500604;
        double r4500621 = r4500604 / r4500601;
        double r4500622 = pow(r4500620, r4500621);
        double r4500623 = cbrt(r4500622);
        double r4500624 = r4500623 * (r4500623 * r4500623);
        double r4500625 = pow(r4500605, r4500621);
        double r4500626 = r4500624 - r4500625;
        double r4500627 = r4500619 ? r4500626 : r4500617;
        double r4500628 = r4500603 ? r4500617 : r4500627;
        return r4500628;
}

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 r4500629, r4500630, r4500631, r4500632, r4500633, r4500634, r4500635, r4500636;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4500629);
        mpfr_init_set_str(r4500630, "1", 10, MPFR_RNDN);
        mpfr_init(r4500631);
        mpfr_init(r4500632);
        mpfr_init(r4500633);
        mpfr_init(r4500634);
        mpfr_init(r4500635);
        mpfr_init(r4500636);
}

double f_im(double x, double n) {
        mpfr_set_d(r4500629, x, MPFR_RNDN);
        ;
        mpfr_add(r4500631, r4500629, r4500630, MPFR_RNDN);
        mpfr_set_d(r4500632, n, MPFR_RNDN);
        mpfr_div(r4500633, r4500630, r4500632, MPFR_RNDN);
        mpfr_pow(r4500634, r4500631, r4500633, MPFR_RNDN);
        mpfr_pow(r4500635, r4500629, r4500633, MPFR_RNDN);
        mpfr_sub(r4500636, r4500634, r4500635, MPFR_RNDN);
        return mpfr_get_d(r4500636, MPFR_RNDN);
}

static mpfr_t r4500637, r4500638, r4500639, r4500640, r4500641, r4500642, r4500643, r4500644, r4500645, r4500646, r4500647, r4500648, r4500649, r4500650, r4500651, r4500652, r4500653, r4500654, r4500655, r4500656, r4500657, r4500658, r4500659, r4500660, r4500661, r4500662, r4500663, r4500664;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4500637);
        mpfr_init_set_str(r4500638, "-13459018702146.598", 10, MPFR_RNDN);
        mpfr_init(r4500639);
        mpfr_init_set_str(r4500640, "1", 10, MPFR_RNDN);
        mpfr_init(r4500641);
        mpfr_init(r4500642);
        mpfr_init(r4500643);
        mpfr_init_set_str(r4500644, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4500645);
        mpfr_init(r4500646);
        mpfr_init(r4500647);
        mpfr_init(r4500648);
        mpfr_init(r4500649);
        mpfr_init(r4500650);
        mpfr_init(r4500651);
        mpfr_init(r4500652);
        mpfr_init(r4500653);
        mpfr_init_set_str(r4500654, "3663814092.5485716", 10, MPFR_RNDN);
        mpfr_init(r4500655);
        mpfr_init(r4500656);
        mpfr_init(r4500657);
        mpfr_init(r4500658);
        mpfr_init(r4500659);
        mpfr_init(r4500660);
        mpfr_init(r4500661);
        mpfr_init(r4500662);
        mpfr_init(r4500663);
        mpfr_init(r4500664);
}

double f_fm(double x, double n) {
        mpfr_set_d(r4500637, n, MPFR_RNDN);
        ;
        mpfr_set_si(r4500639, mpfr_cmp(r4500637, r4500638) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4500641, x, MPFR_RNDN);
        mpfr_mul(r4500642, r4500637, r4500641, MPFR_RNDN);
        mpfr_div(r4500643, r4500640, r4500642, MPFR_RNDN);
        ;
        mpfr_div(r4500645, r4500644, r4500637, MPFR_RNDN);
        mpfr_sqr(r4500646, r4500641, MPFR_RNDN);
        mpfr_div(r4500647, r4500645, r4500646, MPFR_RNDN);
        mpfr_sub(r4500648, r4500643, r4500647, MPFR_RNDN);
        mpfr_log(r4500649, r4500641, MPFR_RNDN);
        mpfr_div(r4500650, r4500649, r4500641, MPFR_RNDN);
        mpfr_sqr(r4500651, r4500637, MPFR_RNDN);
        mpfr_div(r4500652, r4500650, r4500651, MPFR_RNDN);
        mpfr_sub(r4500653, r4500648, r4500652, MPFR_RNDN);
        ;
        mpfr_set_si(r4500655, mpfr_cmp(r4500637, r4500654) <= 0, MPFR_RNDN);
        mpfr_add(r4500656, r4500641, r4500640, MPFR_RNDN);
        mpfr_div(r4500657, r4500640, r4500637, MPFR_RNDN);
        mpfr_pow(r4500658, r4500656, r4500657, MPFR_RNDN);
        mpfr_cbrt(r4500659, r4500658, MPFR_RNDN);
        mpfr_mul(r4500660, r4500659, r4500659, MPFR_RNDN); mpfr_mul(r4500660, r4500660, r4500659, MPFR_RNDN);
        mpfr_pow(r4500661, r4500641, r4500657, MPFR_RNDN);
        mpfr_sub(r4500662, r4500660, r4500661, MPFR_RNDN);
        if (mpfr_get_si(r4500655, MPFR_RNDN)) { mpfr_set(r4500663, r4500662, MPFR_RNDN); } else { mpfr_set(r4500663, r4500653, MPFR_RNDN); };
        if (mpfr_get_si(r4500639, MPFR_RNDN)) { mpfr_set(r4500664, r4500653, MPFR_RNDN); } else { mpfr_set(r4500664, r4500663, MPFR_RNDN); };
        return mpfr_get_d(r4500664, MPFR_RNDN);
}

static mpfr_t r4500665, r4500666, r4500667, r4500668, r4500669, r4500670, r4500671, r4500672, r4500673, r4500674, r4500675, r4500676, r4500677, r4500678, r4500679, r4500680, r4500681, r4500682, r4500683, r4500684, r4500685, r4500686, r4500687, r4500688, r4500689, r4500690, r4500691, r4500692;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4500665);
        mpfr_init_set_str(r4500666, "-13459018702146.598", 10, MPFR_RNDN);
        mpfr_init(r4500667);
        mpfr_init_set_str(r4500668, "1", 10, MPFR_RNDN);
        mpfr_init(r4500669);
        mpfr_init(r4500670);
        mpfr_init(r4500671);
        mpfr_init_set_str(r4500672, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4500673);
        mpfr_init(r4500674);
        mpfr_init(r4500675);
        mpfr_init(r4500676);
        mpfr_init(r4500677);
        mpfr_init(r4500678);
        mpfr_init(r4500679);
        mpfr_init(r4500680);
        mpfr_init(r4500681);
        mpfr_init_set_str(r4500682, "3663814092.5485716", 10, MPFR_RNDN);
        mpfr_init(r4500683);
        mpfr_init(r4500684);
        mpfr_init(r4500685);
        mpfr_init(r4500686);
        mpfr_init(r4500687);
        mpfr_init(r4500688);
        mpfr_init(r4500689);
        mpfr_init(r4500690);
        mpfr_init(r4500691);
        mpfr_init(r4500692);
}

double f_dm(double x, double n) {
        mpfr_set_d(r4500665, n, MPFR_RNDN);
        ;
        mpfr_set_si(r4500667, mpfr_cmp(r4500665, r4500666) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4500669, x, MPFR_RNDN);
        mpfr_mul(r4500670, r4500665, r4500669, MPFR_RNDN);
        mpfr_div(r4500671, r4500668, r4500670, MPFR_RNDN);
        ;
        mpfr_div(r4500673, r4500672, r4500665, MPFR_RNDN);
        mpfr_sqr(r4500674, r4500669, MPFR_RNDN);
        mpfr_div(r4500675, r4500673, r4500674, MPFR_RNDN);
        mpfr_sub(r4500676, r4500671, r4500675, MPFR_RNDN);
        mpfr_log(r4500677, r4500669, MPFR_RNDN);
        mpfr_div(r4500678, r4500677, r4500669, MPFR_RNDN);
        mpfr_sqr(r4500679, r4500665, MPFR_RNDN);
        mpfr_div(r4500680, r4500678, r4500679, MPFR_RNDN);
        mpfr_sub(r4500681, r4500676, r4500680, MPFR_RNDN);
        ;
        mpfr_set_si(r4500683, mpfr_cmp(r4500665, r4500682) <= 0, MPFR_RNDN);
        mpfr_add(r4500684, r4500669, r4500668, MPFR_RNDN);
        mpfr_div(r4500685, r4500668, r4500665, MPFR_RNDN);
        mpfr_pow(r4500686, r4500684, r4500685, MPFR_RNDN);
        mpfr_cbrt(r4500687, r4500686, MPFR_RNDN);
        mpfr_mul(r4500688, r4500687, r4500687, MPFR_RNDN); mpfr_mul(r4500688, r4500688, r4500687, MPFR_RNDN);
        mpfr_pow(r4500689, r4500669, r4500685, MPFR_RNDN);
        mpfr_sub(r4500690, r4500688, r4500689, MPFR_RNDN);
        if (mpfr_get_si(r4500683, MPFR_RNDN)) { mpfr_set(r4500691, r4500690, MPFR_RNDN); } else { mpfr_set(r4500691, r4500681, MPFR_RNDN); };
        if (mpfr_get_si(r4500667, MPFR_RNDN)) { mpfr_set(r4500692, r4500681, MPFR_RNDN); } else { mpfr_set(r4500692, r4500691, MPFR_RNDN); };
        return mpfr_get_d(r4500692, MPFR_RNDN);
}

