#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 r9576 = x;
        float r9577 = 1;
        float r9578 = r9576 + r9577;
        float r9579 = n;
        float r9580 = r9577 / r9579;
        float r9581 = pow(r9578, r9580);
        float r9582 = pow(r9576, r9580);
        float r9583 = r9581 - r9582;
        return r9583;
}

double f_id(double x, double n) {
        double r9584 = x;
        double r9585 = 1;
        double r9586 = r9584 + r9585;
        double r9587 = n;
        double r9588 = r9585 / r9587;
        double r9589 = pow(r9586, r9588);
        double r9590 = pow(r9584, r9588);
        double r9591 = r9589 - r9590;
        return r9591;
}


double f_of(float x, float n) {
        float r9592 = x;
        float r9593 = log1p(r9592);
        float r9594 = n;
        float r9595 = r9593 / r9594;
        float r9596 = expm1(r9595);
        float r9597 = 1/2;
        float r9598 = r9597 / r9594;
        float r9599 = r9598 / r9594;
        float r9600 = log(r9592);
        float r9601 = r9600 * r9600;
        float r9602 = 1;
        float r9603 = r9594 / r9600;
        float r9604 = r9602 / r9603;
        float r9605 = fma(r9599, r9601, r9604);
        float r9606 = r9596 - r9605;
        float r9607 = -2.074005852959405e-17;
        bool r9608 = r9606 <= r9607;
        float r9609 = exp(r9595);
        float r9610 = r9602 / r9594;
        float r9611 = pow(r9592, r9610);
        float r9612 = r9609 - r9611;
        float r9613 = log1p(r9612);
        float r9614 = expm1(r9613);
        float r9615 = -2.318477557482887e-305;
        bool r9616 = r9606 <= r9615;
        float r9617 = r9600 * r9610;
        float r9618 = fma(r9599, r9601, r9617);
        float r9619 = r9596 - r9618;
        float r9620 = 9.479777899109092e-294;
        bool r9621 = r9606 <= r9620;
        float r9622 = r9600 / r9594;
        float r9623 = r9594 * r9592;
        float r9624 = r9602 / r9623;
        float r9625 = r9592 * r9592;
        float r9626 = r9598 / r9625;
        float r9627 = r9624 - r9626;
        float r9628 = fma(r9622, r9622, r9627);
        float r9629 = r9621 ? r9628 : r9619;
        float r9630 = r9616 ? r9619 : r9629;
        float r9631 = r9608 ? r9614 : r9630;
        return r9631;
}

double f_od(double x, double n) {
        double r9632 = x;
        double r9633 = log1p(r9632);
        double r9634 = n;
        double r9635 = r9633 / r9634;
        double r9636 = expm1(r9635);
        double r9637 = 1/2;
        double r9638 = r9637 / r9634;
        double r9639 = r9638 / r9634;
        double r9640 = log(r9632);
        double r9641 = r9640 * r9640;
        double r9642 = 1;
        double r9643 = r9634 / r9640;
        double r9644 = r9642 / r9643;
        double r9645 = fma(r9639, r9641, r9644);
        double r9646 = r9636 - r9645;
        double r9647 = -2.074005852959405e-17;
        bool r9648 = r9646 <= r9647;
        double r9649 = exp(r9635);
        double r9650 = r9642 / r9634;
        double r9651 = pow(r9632, r9650);
        double r9652 = r9649 - r9651;
        double r9653 = log1p(r9652);
        double r9654 = expm1(r9653);
        double r9655 = -2.318477557482887e-305;
        bool r9656 = r9646 <= r9655;
        double r9657 = r9640 * r9650;
        double r9658 = fma(r9639, r9641, r9657);
        double r9659 = r9636 - r9658;
        double r9660 = 9.479777899109092e-294;
        bool r9661 = r9646 <= r9660;
        double r9662 = r9640 / r9634;
        double r9663 = r9634 * r9632;
        double r9664 = r9642 / r9663;
        double r9665 = r9632 * r9632;
        double r9666 = r9638 / r9665;
        double r9667 = r9664 - r9666;
        double r9668 = fma(r9662, r9662, r9667);
        double r9669 = r9661 ? r9668 : r9659;
        double r9670 = r9656 ? r9659 : r9669;
        double r9671 = r9648 ? r9654 : r9670;
        return r9671;
}

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 r9672, r9673, r9674, r9675, r9676, r9677, r9678, r9679;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9672);
        mpfr_init_set_str(r9673, "1", 10, MPFR_RNDN);
        mpfr_init(r9674);
        mpfr_init(r9675);
        mpfr_init(r9676);
        mpfr_init(r9677);
        mpfr_init(r9678);
        mpfr_init(r9679);
}

double f_im(double x, double n) {
        mpfr_set_d(r9672, x, MPFR_RNDN);
        ;
        mpfr_add(r9674, r9672, r9673, MPFR_RNDN);
        mpfr_set_d(r9675, n, MPFR_RNDN);
        mpfr_div(r9676, r9673, r9675, MPFR_RNDN);
        mpfr_pow(r9677, r9674, r9676, MPFR_RNDN);
        mpfr_pow(r9678, r9672, r9676, MPFR_RNDN);
        mpfr_sub(r9679, r9677, r9678, MPFR_RNDN);
        return mpfr_get_d(r9679, MPFR_RNDN);
}

static mpfr_t r9680, r9681, r9682, r9683, r9684, r9685, r9686, r9687, r9688, r9689, r9690, r9691, r9692, r9693, r9694, r9695, r9696, r9697, r9698, r9699, r9700, r9701, r9702, r9703, r9704, r9705, r9706, r9707, r9708, r9709, r9710, r9711, r9712, r9713, r9714, r9715, r9716, r9717, r9718, r9719;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9680);
        mpfr_init(r9681);
        mpfr_init(r9682);
        mpfr_init(r9683);
        mpfr_init(r9684);
        mpfr_init_set_str(r9685, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9686);
        mpfr_init(r9687);
        mpfr_init(r9688);
        mpfr_init(r9689);
        mpfr_init_set_str(r9690, "1", 10, MPFR_RNDN);
        mpfr_init(r9691);
        mpfr_init(r9692);
        mpfr_init(r9693);
        mpfr_init(r9694);
        mpfr_init_set_str(r9695, "-2.074005852959405e-17", 10, MPFR_RNDN);
        mpfr_init(r9696);
        mpfr_init(r9697);
        mpfr_init(r9698);
        mpfr_init(r9699);
        mpfr_init(r9700);
        mpfr_init(r9701);
        mpfr_init(r9702);
        mpfr_init_set_str(r9703, "-2.318477557482887e-305", 10, MPFR_RNDN);
        mpfr_init(r9704);
        mpfr_init(r9705);
        mpfr_init(r9706);
        mpfr_init(r9707);
        mpfr_init_set_str(r9708, "9.479777899109092e-294", 10, MPFR_RNDN);
        mpfr_init(r9709);
        mpfr_init(r9710);
        mpfr_init(r9711);
        mpfr_init(r9712);
        mpfr_init(r9713);
        mpfr_init(r9714);
        mpfr_init(r9715);
        mpfr_init(r9716);
        mpfr_init(r9717);
        mpfr_init(r9718);
        mpfr_init(r9719);
}

double f_fm(double x, double n) {
        mpfr_set_d(r9680, x, MPFR_RNDN);
        mpfr_log1p(r9681, r9680, MPFR_RNDN);
        mpfr_set_d(r9682, n, MPFR_RNDN);
        mpfr_div(r9683, r9681, r9682, MPFR_RNDN);
        mpfr_expm1(r9684, r9683, MPFR_RNDN);
        ;
        mpfr_div(r9686, r9685, r9682, MPFR_RNDN);
        mpfr_div(r9687, r9686, r9682, MPFR_RNDN);
        mpfr_log(r9688, r9680, MPFR_RNDN);
        mpfr_mul(r9689, r9688, r9688, MPFR_RNDN);
        ;
        mpfr_div(r9691, r9682, r9688, MPFR_RNDN);
        mpfr_div(r9692, r9690, r9691, MPFR_RNDN);
        mpfr_fma(r9693, r9687, r9689, r9692, MPFR_RNDN);
        mpfr_sub(r9694, r9684, r9693, MPFR_RNDN);
        ;
        mpfr_set_si(r9696, mpfr_cmp(r9694, r9695) <= 0, MPFR_RNDN);
        mpfr_exp(r9697, r9683, MPFR_RNDN);
        mpfr_div(r9698, r9690, r9682, MPFR_RNDN);
        mpfr_pow(r9699, r9680, r9698, MPFR_RNDN);
        mpfr_sub(r9700, r9697, r9699, MPFR_RNDN);
        mpfr_log1p(r9701, r9700, MPFR_RNDN);
        mpfr_expm1(r9702, r9701, MPFR_RNDN);
        ;
        mpfr_set_si(r9704, mpfr_cmp(r9694, r9703) <= 0, MPFR_RNDN);
        mpfr_mul(r9705, r9688, r9698, MPFR_RNDN);
        mpfr_fma(r9706, r9687, r9689, r9705, MPFR_RNDN);
        mpfr_sub(r9707, r9684, r9706, MPFR_RNDN);
        ;
        mpfr_set_si(r9709, mpfr_cmp(r9694, r9708) <= 0, MPFR_RNDN);
        mpfr_div(r9710, r9688, r9682, MPFR_RNDN);
        mpfr_mul(r9711, r9682, r9680, MPFR_RNDN);
        mpfr_div(r9712, r9690, r9711, MPFR_RNDN);
        mpfr_mul(r9713, r9680, r9680, MPFR_RNDN);
        mpfr_div(r9714, r9686, r9713, MPFR_RNDN);
        mpfr_sub(r9715, r9712, r9714, MPFR_RNDN);
        mpfr_fma(r9716, r9710, r9710, r9715, MPFR_RNDN);
        if (mpfr_get_si(r9709, MPFR_RNDN)) { mpfr_set(r9717, r9716, MPFR_RNDN); } else { mpfr_set(r9717, r9707, MPFR_RNDN); };
        if (mpfr_get_si(r9704, MPFR_RNDN)) { mpfr_set(r9718, r9707, MPFR_RNDN); } else { mpfr_set(r9718, r9717, MPFR_RNDN); };
        if (mpfr_get_si(r9696, MPFR_RNDN)) { mpfr_set(r9719, r9702, MPFR_RNDN); } else { mpfr_set(r9719, r9718, MPFR_RNDN); };
        return mpfr_get_d(r9719, MPFR_RNDN);
}

static mpfr_t r9720, r9721, r9722, r9723, r9724, r9725, r9726, r9727, r9728, r9729, r9730, r9731, r9732, r9733, r9734, r9735, r9736, r9737, r9738, r9739, r9740, r9741, r9742, r9743, r9744, r9745, r9746, r9747, r9748, r9749, r9750, r9751, r9752, r9753, r9754, r9755, r9756, r9757, r9758, r9759;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9720);
        mpfr_init(r9721);
        mpfr_init(r9722);
        mpfr_init(r9723);
        mpfr_init(r9724);
        mpfr_init_set_str(r9725, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9726);
        mpfr_init(r9727);
        mpfr_init(r9728);
        mpfr_init(r9729);
        mpfr_init_set_str(r9730, "1", 10, MPFR_RNDN);
        mpfr_init(r9731);
        mpfr_init(r9732);
        mpfr_init(r9733);
        mpfr_init(r9734);
        mpfr_init_set_str(r9735, "-2.074005852959405e-17", 10, MPFR_RNDN);
        mpfr_init(r9736);
        mpfr_init(r9737);
        mpfr_init(r9738);
        mpfr_init(r9739);
        mpfr_init(r9740);
        mpfr_init(r9741);
        mpfr_init(r9742);
        mpfr_init_set_str(r9743, "-2.318477557482887e-305", 10, MPFR_RNDN);
        mpfr_init(r9744);
        mpfr_init(r9745);
        mpfr_init(r9746);
        mpfr_init(r9747);
        mpfr_init_set_str(r9748, "9.479777899109092e-294", 10, MPFR_RNDN);
        mpfr_init(r9749);
        mpfr_init(r9750);
        mpfr_init(r9751);
        mpfr_init(r9752);
        mpfr_init(r9753);
        mpfr_init(r9754);
        mpfr_init(r9755);
        mpfr_init(r9756);
        mpfr_init(r9757);
        mpfr_init(r9758);
        mpfr_init(r9759);
}

double f_dm(double x, double n) {
        mpfr_set_d(r9720, x, MPFR_RNDN);
        mpfr_log1p(r9721, r9720, MPFR_RNDN);
        mpfr_set_d(r9722, n, MPFR_RNDN);
        mpfr_div(r9723, r9721, r9722, MPFR_RNDN);
        mpfr_expm1(r9724, r9723, MPFR_RNDN);
        ;
        mpfr_div(r9726, r9725, r9722, MPFR_RNDN);
        mpfr_div(r9727, r9726, r9722, MPFR_RNDN);
        mpfr_log(r9728, r9720, MPFR_RNDN);
        mpfr_mul(r9729, r9728, r9728, MPFR_RNDN);
        ;
        mpfr_div(r9731, r9722, r9728, MPFR_RNDN);
        mpfr_div(r9732, r9730, r9731, MPFR_RNDN);
        mpfr_fma(r9733, r9727, r9729, r9732, MPFR_RNDN);
        mpfr_sub(r9734, r9724, r9733, MPFR_RNDN);
        ;
        mpfr_set_si(r9736, mpfr_cmp(r9734, r9735) <= 0, MPFR_RNDN);
        mpfr_exp(r9737, r9723, MPFR_RNDN);
        mpfr_div(r9738, r9730, r9722, MPFR_RNDN);
        mpfr_pow(r9739, r9720, r9738, MPFR_RNDN);
        mpfr_sub(r9740, r9737, r9739, MPFR_RNDN);
        mpfr_log1p(r9741, r9740, MPFR_RNDN);
        mpfr_expm1(r9742, r9741, MPFR_RNDN);
        ;
        mpfr_set_si(r9744, mpfr_cmp(r9734, r9743) <= 0, MPFR_RNDN);
        mpfr_mul(r9745, r9728, r9738, MPFR_RNDN);
        mpfr_fma(r9746, r9727, r9729, r9745, MPFR_RNDN);
        mpfr_sub(r9747, r9724, r9746, MPFR_RNDN);
        ;
        mpfr_set_si(r9749, mpfr_cmp(r9734, r9748) <= 0, MPFR_RNDN);
        mpfr_div(r9750, r9728, r9722, MPFR_RNDN);
        mpfr_mul(r9751, r9722, r9720, MPFR_RNDN);
        mpfr_div(r9752, r9730, r9751, MPFR_RNDN);
        mpfr_mul(r9753, r9720, r9720, MPFR_RNDN);
        mpfr_div(r9754, r9726, r9753, MPFR_RNDN);
        mpfr_sub(r9755, r9752, r9754, MPFR_RNDN);
        mpfr_fma(r9756, r9750, r9750, r9755, MPFR_RNDN);
        if (mpfr_get_si(r9749, MPFR_RNDN)) { mpfr_set(r9757, r9756, MPFR_RNDN); } else { mpfr_set(r9757, r9747, MPFR_RNDN); };
        if (mpfr_get_si(r9744, MPFR_RNDN)) { mpfr_set(r9758, r9747, MPFR_RNDN); } else { mpfr_set(r9758, r9757, MPFR_RNDN); };
        if (mpfr_get_si(r9736, MPFR_RNDN)) { mpfr_set(r9759, r9742, MPFR_RNDN); } else { mpfr_set(r9759, r9758, MPFR_RNDN); };
        return mpfr_get_d(r9759, MPFR_RNDN);
}

