#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 r9540 = x;
        float r9541 = 1;
        float r9542 = r9540 + r9541;
        float r9543 = n;
        float r9544 = r9541 / r9543;
        float r9545 = pow(r9542, r9544);
        float r9546 = pow(r9540, r9544);
        float r9547 = r9545 - r9546;
        return r9547;
}

double f_id(double x, double n) {
        double r9548 = x;
        double r9549 = 1;
        double r9550 = r9548 + r9549;
        double r9551 = n;
        double r9552 = r9549 / r9551;
        double r9553 = pow(r9550, r9552);
        double r9554 = pow(r9548, r9552);
        double r9555 = r9553 - r9554;
        return r9555;
}


double f_of(float x, float n) {
        float r9556 = x;
        float r9557 = log1p(r9556);
        float r9558 = n;
        float r9559 = r9557 / r9558;
        float r9560 = expm1(r9559);
        float r9561 = 1/2;
        float r9562 = r9558 * r9558;
        float r9563 = r9561 / r9562;
        float r9564 = log(r9556);
        float r9565 = r9564 * r9564;
        float r9566 = r9564 / r9558;
        float r9567 = fma(r9563, r9565, r9566);
        float r9568 = r9560 - r9567;
        float r9569 = -1.5779069424576656e-15;
        bool r9570 = r9568 <= r9569;
        float r9571 = exp(r9559);
        float r9572 = 1;
        float r9573 = r9572 / r9558;
        float r9574 = pow(r9556, r9573);
        float r9575 = r9571 - r9574;
        float r9576 = log1p(r9575);
        float r9577 = expm1(r9576);
        float r9578 = -2.8978052857401013e-308;
        bool r9579 = r9568 <= r9578;
        float r9580 = r9558 / r9564;
        float r9581 = r9572 / r9580;
        float r9582 = fma(r9563, r9565, r9581);
        float r9583 = r9560 - r9582;
        float r9584 = 2.126219926370099e-304;
        bool r9585 = r9568 <= r9584;
        float r9586 = r9558 * r9556;
        float r9587 = r9558 * r9586;
        float r9588 = r9564 / r9587;
        float r9589 = r9561 / r9558;
        float r9590 = r9556 * r9556;
        float r9591 = r9589 / r9590;
        float r9592 = r9572 / r9586;
        float r9593 = r9591 - r9592;
        float r9594 = r9588 - r9593;
        float r9595 = r9564 * r9573;
        float r9596 = fma(r9563, r9565, r9595);
        float r9597 = r9560 - r9596;
        float r9598 = r9585 ? r9594 : r9597;
        float r9599 = r9579 ? r9583 : r9598;
        float r9600 = r9570 ? r9577 : r9599;
        return r9600;
}

double f_od(double x, double n) {
        double r9601 = x;
        double r9602 = log1p(r9601);
        double r9603 = n;
        double r9604 = r9602 / r9603;
        double r9605 = expm1(r9604);
        double r9606 = 1/2;
        double r9607 = r9603 * r9603;
        double r9608 = r9606 / r9607;
        double r9609 = log(r9601);
        double r9610 = r9609 * r9609;
        double r9611 = r9609 / r9603;
        double r9612 = fma(r9608, r9610, r9611);
        double r9613 = r9605 - r9612;
        double r9614 = -1.5779069424576656e-15;
        bool r9615 = r9613 <= r9614;
        double r9616 = exp(r9604);
        double r9617 = 1;
        double r9618 = r9617 / r9603;
        double r9619 = pow(r9601, r9618);
        double r9620 = r9616 - r9619;
        double r9621 = log1p(r9620);
        double r9622 = expm1(r9621);
        double r9623 = -2.8978052857401013e-308;
        bool r9624 = r9613 <= r9623;
        double r9625 = r9603 / r9609;
        double r9626 = r9617 / r9625;
        double r9627 = fma(r9608, r9610, r9626);
        double r9628 = r9605 - r9627;
        double r9629 = 2.126219926370099e-304;
        bool r9630 = r9613 <= r9629;
        double r9631 = r9603 * r9601;
        double r9632 = r9603 * r9631;
        double r9633 = r9609 / r9632;
        double r9634 = r9606 / r9603;
        double r9635 = r9601 * r9601;
        double r9636 = r9634 / r9635;
        double r9637 = r9617 / r9631;
        double r9638 = r9636 - r9637;
        double r9639 = r9633 - r9638;
        double r9640 = r9609 * r9618;
        double r9641 = fma(r9608, r9610, r9640);
        double r9642 = r9605 - r9641;
        double r9643 = r9630 ? r9639 : r9642;
        double r9644 = r9624 ? r9628 : r9643;
        double r9645 = r9615 ? r9622 : r9644;
        return r9645;
}

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 r9646, r9647, r9648, r9649, r9650, r9651, r9652, r9653;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9646);
        mpfr_init_set_str(r9647, "1", 10, MPFR_RNDN);
        mpfr_init(r9648);
        mpfr_init(r9649);
        mpfr_init(r9650);
        mpfr_init(r9651);
        mpfr_init(r9652);
        mpfr_init(r9653);
}

double f_im(double x, double n) {
        mpfr_set_d(r9646, x, MPFR_RNDN);
        ;
        mpfr_add(r9648, r9646, r9647, MPFR_RNDN);
        mpfr_set_d(r9649, n, MPFR_RNDN);
        mpfr_div(r9650, r9647, r9649, MPFR_RNDN);
        mpfr_pow(r9651, r9648, r9650, MPFR_RNDN);
        mpfr_pow(r9652, r9646, r9650, MPFR_RNDN);
        mpfr_sub(r9653, r9651, r9652, MPFR_RNDN);
        return mpfr_get_d(r9653, MPFR_RNDN);
}

static mpfr_t r9654, r9655, r9656, r9657, r9658, r9659, r9660, r9661, r9662, r9663, r9664, r9665, r9666, r9667, r9668, r9669, r9670, r9671, r9672, r9673, r9674, r9675, r9676, r9677, r9678, r9679, r9680, r9681, r9682, r9683, r9684, r9685, r9686, r9687, r9688, r9689, r9690, r9691, r9692, r9693, r9694, r9695, r9696, r9697, r9698;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9654);
        mpfr_init(r9655);
        mpfr_init(r9656);
        mpfr_init(r9657);
        mpfr_init(r9658);
        mpfr_init_set_str(r9659, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9660);
        mpfr_init(r9661);
        mpfr_init(r9662);
        mpfr_init(r9663);
        mpfr_init(r9664);
        mpfr_init(r9665);
        mpfr_init(r9666);
        mpfr_init_set_str(r9667, "-1.5779069424576656e-15", 10, MPFR_RNDN);
        mpfr_init(r9668);
        mpfr_init(r9669);
        mpfr_init_set_str(r9670, "1", 10, MPFR_RNDN);
        mpfr_init(r9671);
        mpfr_init(r9672);
        mpfr_init(r9673);
        mpfr_init(r9674);
        mpfr_init(r9675);
        mpfr_init_set_str(r9676, "-2.8978052857401013e-308", 10, MPFR_RNDN);
        mpfr_init(r9677);
        mpfr_init(r9678);
        mpfr_init(r9679);
        mpfr_init(r9680);
        mpfr_init(r9681);
        mpfr_init_set_str(r9682, "2.126219926370099e-304", 10, MPFR_RNDN);
        mpfr_init(r9683);
        mpfr_init(r9684);
        mpfr_init(r9685);
        mpfr_init(r9686);
        mpfr_init(r9687);
        mpfr_init(r9688);
        mpfr_init(r9689);
        mpfr_init(r9690);
        mpfr_init(r9691);
        mpfr_init(r9692);
        mpfr_init(r9693);
        mpfr_init(r9694);
        mpfr_init(r9695);
        mpfr_init(r9696);
        mpfr_init(r9697);
        mpfr_init(r9698);
}

double f_fm(double x, double n) {
        mpfr_set_d(r9654, x, MPFR_RNDN);
        mpfr_log1p(r9655, r9654, MPFR_RNDN);
        mpfr_set_d(r9656, n, MPFR_RNDN);
        mpfr_div(r9657, r9655, r9656, MPFR_RNDN);
        mpfr_expm1(r9658, r9657, MPFR_RNDN);
        ;
        mpfr_mul(r9660, r9656, r9656, MPFR_RNDN);
        mpfr_div(r9661, r9659, r9660, MPFR_RNDN);
        mpfr_log(r9662, r9654, MPFR_RNDN);
        mpfr_mul(r9663, r9662, r9662, MPFR_RNDN);
        mpfr_div(r9664, r9662, r9656, MPFR_RNDN);
        mpfr_fma(r9665, r9661, r9663, r9664, MPFR_RNDN);
        mpfr_sub(r9666, r9658, r9665, MPFR_RNDN);
        ;
        mpfr_set_si(r9668, mpfr_cmp(r9666, r9667) <= 0, MPFR_RNDN);
        mpfr_exp(r9669, r9657, MPFR_RNDN);
        ;
        mpfr_div(r9671, r9670, r9656, MPFR_RNDN);
        mpfr_pow(r9672, r9654, r9671, MPFR_RNDN);
        mpfr_sub(r9673, r9669, r9672, MPFR_RNDN);
        mpfr_log1p(r9674, r9673, MPFR_RNDN);
        mpfr_expm1(r9675, r9674, MPFR_RNDN);
        ;
        mpfr_set_si(r9677, mpfr_cmp(r9666, r9676) <= 0, MPFR_RNDN);
        mpfr_div(r9678, r9656, r9662, MPFR_RNDN);
        mpfr_div(r9679, r9670, r9678, MPFR_RNDN);
        mpfr_fma(r9680, r9661, r9663, r9679, MPFR_RNDN);
        mpfr_sub(r9681, r9658, r9680, MPFR_RNDN);
        ;
        mpfr_set_si(r9683, mpfr_cmp(r9666, r9682) <= 0, MPFR_RNDN);
        mpfr_mul(r9684, r9656, r9654, MPFR_RNDN);
        mpfr_mul(r9685, r9656, r9684, MPFR_RNDN);
        mpfr_div(r9686, r9662, r9685, MPFR_RNDN);
        mpfr_div(r9687, r9659, r9656, MPFR_RNDN);
        mpfr_mul(r9688, r9654, r9654, MPFR_RNDN);
        mpfr_div(r9689, r9687, r9688, MPFR_RNDN);
        mpfr_div(r9690, r9670, r9684, MPFR_RNDN);
        mpfr_sub(r9691, r9689, r9690, MPFR_RNDN);
        mpfr_sub(r9692, r9686, r9691, MPFR_RNDN);
        mpfr_mul(r9693, r9662, r9671, MPFR_RNDN);
        mpfr_fma(r9694, r9661, r9663, r9693, MPFR_RNDN);
        mpfr_sub(r9695, r9658, r9694, MPFR_RNDN);
        if (mpfr_get_si(r9683, MPFR_RNDN)) { mpfr_set(r9696, r9692, MPFR_RNDN); } else { mpfr_set(r9696, r9695, MPFR_RNDN); };
        if (mpfr_get_si(r9677, MPFR_RNDN)) { mpfr_set(r9697, r9681, MPFR_RNDN); } else { mpfr_set(r9697, r9696, MPFR_RNDN); };
        if (mpfr_get_si(r9668, MPFR_RNDN)) { mpfr_set(r9698, r9675, MPFR_RNDN); } else { mpfr_set(r9698, r9697, MPFR_RNDN); };
        return mpfr_get_d(r9698, MPFR_RNDN);
}

static mpfr_t r9699, r9700, r9701, r9702, r9703, r9704, r9705, r9706, r9707, r9708, r9709, r9710, r9711, r9712, r9713, r9714, r9715, r9716, r9717, r9718, r9719, r9720, r9721, r9722, r9723, r9724, r9725, r9726, r9727, r9728, r9729, r9730, r9731, r9732, r9733, r9734, r9735, r9736, r9737, r9738, r9739, r9740, r9741, r9742, r9743;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9699);
        mpfr_init(r9700);
        mpfr_init(r9701);
        mpfr_init(r9702);
        mpfr_init(r9703);
        mpfr_init_set_str(r9704, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9705);
        mpfr_init(r9706);
        mpfr_init(r9707);
        mpfr_init(r9708);
        mpfr_init(r9709);
        mpfr_init(r9710);
        mpfr_init(r9711);
        mpfr_init_set_str(r9712, "-1.5779069424576656e-15", 10, MPFR_RNDN);
        mpfr_init(r9713);
        mpfr_init(r9714);
        mpfr_init_set_str(r9715, "1", 10, MPFR_RNDN);
        mpfr_init(r9716);
        mpfr_init(r9717);
        mpfr_init(r9718);
        mpfr_init(r9719);
        mpfr_init(r9720);
        mpfr_init_set_str(r9721, "-2.8978052857401013e-308", 10, MPFR_RNDN);
        mpfr_init(r9722);
        mpfr_init(r9723);
        mpfr_init(r9724);
        mpfr_init(r9725);
        mpfr_init(r9726);
        mpfr_init_set_str(r9727, "2.126219926370099e-304", 10, MPFR_RNDN);
        mpfr_init(r9728);
        mpfr_init(r9729);
        mpfr_init(r9730);
        mpfr_init(r9731);
        mpfr_init(r9732);
        mpfr_init(r9733);
        mpfr_init(r9734);
        mpfr_init(r9735);
        mpfr_init(r9736);
        mpfr_init(r9737);
        mpfr_init(r9738);
        mpfr_init(r9739);
        mpfr_init(r9740);
        mpfr_init(r9741);
        mpfr_init(r9742);
        mpfr_init(r9743);
}

double f_dm(double x, double n) {
        mpfr_set_d(r9699, x, MPFR_RNDN);
        mpfr_log1p(r9700, r9699, MPFR_RNDN);
        mpfr_set_d(r9701, n, MPFR_RNDN);
        mpfr_div(r9702, r9700, r9701, MPFR_RNDN);
        mpfr_expm1(r9703, r9702, MPFR_RNDN);
        ;
        mpfr_mul(r9705, r9701, r9701, MPFR_RNDN);
        mpfr_div(r9706, r9704, r9705, MPFR_RNDN);
        mpfr_log(r9707, r9699, MPFR_RNDN);
        mpfr_mul(r9708, r9707, r9707, MPFR_RNDN);
        mpfr_div(r9709, r9707, r9701, MPFR_RNDN);
        mpfr_fma(r9710, r9706, r9708, r9709, MPFR_RNDN);
        mpfr_sub(r9711, r9703, r9710, MPFR_RNDN);
        ;
        mpfr_set_si(r9713, mpfr_cmp(r9711, r9712) <= 0, MPFR_RNDN);
        mpfr_exp(r9714, r9702, MPFR_RNDN);
        ;
        mpfr_div(r9716, r9715, r9701, MPFR_RNDN);
        mpfr_pow(r9717, r9699, r9716, MPFR_RNDN);
        mpfr_sub(r9718, r9714, r9717, MPFR_RNDN);
        mpfr_log1p(r9719, r9718, MPFR_RNDN);
        mpfr_expm1(r9720, r9719, MPFR_RNDN);
        ;
        mpfr_set_si(r9722, mpfr_cmp(r9711, r9721) <= 0, MPFR_RNDN);
        mpfr_div(r9723, r9701, r9707, MPFR_RNDN);
        mpfr_div(r9724, r9715, r9723, MPFR_RNDN);
        mpfr_fma(r9725, r9706, r9708, r9724, MPFR_RNDN);
        mpfr_sub(r9726, r9703, r9725, MPFR_RNDN);
        ;
        mpfr_set_si(r9728, mpfr_cmp(r9711, r9727) <= 0, MPFR_RNDN);
        mpfr_mul(r9729, r9701, r9699, MPFR_RNDN);
        mpfr_mul(r9730, r9701, r9729, MPFR_RNDN);
        mpfr_div(r9731, r9707, r9730, MPFR_RNDN);
        mpfr_div(r9732, r9704, r9701, MPFR_RNDN);
        mpfr_mul(r9733, r9699, r9699, MPFR_RNDN);
        mpfr_div(r9734, r9732, r9733, MPFR_RNDN);
        mpfr_div(r9735, r9715, r9729, MPFR_RNDN);
        mpfr_sub(r9736, r9734, r9735, MPFR_RNDN);
        mpfr_sub(r9737, r9731, r9736, MPFR_RNDN);
        mpfr_mul(r9738, r9707, r9716, MPFR_RNDN);
        mpfr_fma(r9739, r9706, r9708, r9738, MPFR_RNDN);
        mpfr_sub(r9740, r9703, r9739, MPFR_RNDN);
        if (mpfr_get_si(r9728, MPFR_RNDN)) { mpfr_set(r9741, r9737, MPFR_RNDN); } else { mpfr_set(r9741, r9740, MPFR_RNDN); };
        if (mpfr_get_si(r9722, MPFR_RNDN)) { mpfr_set(r9742, r9726, MPFR_RNDN); } else { mpfr_set(r9742, r9741, MPFR_RNDN); };
        if (mpfr_get_si(r9713, MPFR_RNDN)) { mpfr_set(r9743, r9720, MPFR_RNDN); } else { mpfr_set(r9743, r9742, MPFR_RNDN); };
        return mpfr_get_d(r9743, MPFR_RNDN);
}

