#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "NMSE Section 6.1 mentioned, A";

double f_if(float x, float eps) {
        float r8575 = 1;
        float r8576 = eps;
        float r8577 = r8575 / r8576;
        float r8578 = r8575 + r8577;
        float r8579 = r8575 - r8576;
        float r8580 = x;
        float r8581 = r8579 * r8580;
        float r8582 = -r8581;
        float r8583 = exp(r8582);
        float r8584 = r8578 * r8583;
        float r8585 = r8577 - r8575;
        float r8586 = r8575 + r8576;
        float r8587 = r8586 * r8580;
        float r8588 = -r8587;
        float r8589 = exp(r8588);
        float r8590 = r8585 * r8589;
        float r8591 = r8584 - r8590;
        float r8592 = 2;
        float r8593 = r8591 / r8592;
        return r8593;
}

double f_id(double x, double eps) {
        double r8594 = 1;
        double r8595 = eps;
        double r8596 = r8594 / r8595;
        double r8597 = r8594 + r8596;
        double r8598 = r8594 - r8595;
        double r8599 = x;
        double r8600 = r8598 * r8599;
        double r8601 = -r8600;
        double r8602 = exp(r8601);
        double r8603 = r8597 * r8602;
        double r8604 = r8596 - r8594;
        double r8605 = r8594 + r8595;
        double r8606 = r8605 * r8599;
        double r8607 = -r8606;
        double r8608 = exp(r8607);
        double r8609 = r8604 * r8608;
        double r8610 = r8603 - r8609;
        double r8611 = 2;
        double r8612 = r8610 / r8611;
        return r8612;
}


double f_of(float x, float eps) {
        float r8613 = 2/3;
        float r8614 = x;
        float r8615 = 3;
        float r8616 = pow(r8614, r8615);
        float r8617 = r8613 * r8616;
        float r8618 = 2;
        float r8619 = r8617 + r8618;
        float r8620 = pow(r8614, r8618);
        float r8621 = r8619 - r8620;
        float r8622 = cbrt(r8621);
        float r8623 = r8622 * r8622;
        float r8624 = r8623 * r8622;
        float r8625 = r8624 / r8618;
        float r8626 = 3173368680.1185236;
        bool r8627 = r8625 <= r8626;
        float r8628 = 8;
        float r8629 = r8614 * r8614;
        float r8630 = r8628 * r8614;
        float r8631 = 12;
        float r8632 = r8630 - r8631;
        float r8633 = r8629 * r8632;
        float r8634 = r8628 + r8633;
        float r8635 = cbrt(r8634);
        float r8636 = r8635 / r8618;
        float r8637 = exp(r8614);
        float r8638 = eps;
        float r8639 = 1;
        float r8640 = r8638 - r8639;
        float r8641 = pow(r8637, r8640);
        float r8642 = sqrt(r8641);
        float r8643 = r8639 / r8638;
        float r8644 = r8643 + r8639;
        float r8645 = r8642 * r8644;
        float r8646 = r8639 - r8638;
        float r8647 = r8646 * r8614;
        float r8648 = -r8647;
        float r8649 = exp(r8648);
        float r8650 = sqrt(r8649);
        float r8651 = r8645 * r8650;
        float r8652 = r8643 - r8639;
        float r8653 = r8639 + r8638;
        float r8654 = r8653 * r8614;
        float r8655 = -r8654;
        float r8656 = exp(r8655);
        float r8657 = r8652 * r8656;
        float r8658 = r8651 - r8657;
        float r8659 = r8658 / r8618;
        float r8660 = r8627 ? r8636 : r8659;
        return r8660;
}

double f_od(double x, double eps) {
        double r8661 = 2/3;
        double r8662 = x;
        double r8663 = 3;
        double r8664 = pow(r8662, r8663);
        double r8665 = r8661 * r8664;
        double r8666 = 2;
        double r8667 = r8665 + r8666;
        double r8668 = pow(r8662, r8666);
        double r8669 = r8667 - r8668;
        double r8670 = cbrt(r8669);
        double r8671 = r8670 * r8670;
        double r8672 = r8671 * r8670;
        double r8673 = r8672 / r8666;
        double r8674 = 3173368680.1185236;
        bool r8675 = r8673 <= r8674;
        double r8676 = 8;
        double r8677 = r8662 * r8662;
        double r8678 = r8676 * r8662;
        double r8679 = 12;
        double r8680 = r8678 - r8679;
        double r8681 = r8677 * r8680;
        double r8682 = r8676 + r8681;
        double r8683 = cbrt(r8682);
        double r8684 = r8683 / r8666;
        double r8685 = exp(r8662);
        double r8686 = eps;
        double r8687 = 1;
        double r8688 = r8686 - r8687;
        double r8689 = pow(r8685, r8688);
        double r8690 = sqrt(r8689);
        double r8691 = r8687 / r8686;
        double r8692 = r8691 + r8687;
        double r8693 = r8690 * r8692;
        double r8694 = r8687 - r8686;
        double r8695 = r8694 * r8662;
        double r8696 = -r8695;
        double r8697 = exp(r8696);
        double r8698 = sqrt(r8697);
        double r8699 = r8693 * r8698;
        double r8700 = r8691 - r8687;
        double r8701 = r8687 + r8686;
        double r8702 = r8701 * r8662;
        double r8703 = -r8702;
        double r8704 = exp(r8703);
        double r8705 = r8700 * r8704;
        double r8706 = r8699 - r8705;
        double r8707 = r8706 / r8666;
        double r8708 = r8675 ? r8684 : r8707;
        return r8708;
}

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 r8709, r8710, r8711, r8712, r8713, r8714, r8715, r8716, r8717, r8718, r8719, r8720, r8721, r8722, r8723, r8724, r8725, r8726, r8727;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8709, "1", 10, MPFR_RNDN);
        mpfr_init(r8710);
        mpfr_init(r8711);
        mpfr_init(r8712);
        mpfr_init(r8713);
        mpfr_init(r8714);
        mpfr_init(r8715);
        mpfr_init(r8716);
        mpfr_init(r8717);
        mpfr_init(r8718);
        mpfr_init(r8719);
        mpfr_init(r8720);
        mpfr_init(r8721);
        mpfr_init(r8722);
        mpfr_init(r8723);
        mpfr_init(r8724);
        mpfr_init(r8725);
        mpfr_init_set_str(r8726, "2", 10, MPFR_RNDN);
        mpfr_init(r8727);
}

double f_im(double x, double eps) {
        ;
        mpfr_set_d(r8710, eps, MPFR_RNDN);
        mpfr_div(r8711, r8709, r8710, MPFR_RNDN);
        mpfr_add(r8712, r8709, r8711, MPFR_RNDN);
        mpfr_sub(r8713, r8709, r8710, MPFR_RNDN);
        mpfr_set_d(r8714, x, MPFR_RNDN);
        mpfr_mul(r8715, r8713, r8714, MPFR_RNDN);
        mpfr_neg(r8716, r8715, MPFR_RNDN);
        mpfr_exp(r8717, r8716, MPFR_RNDN);
        mpfr_mul(r8718, r8712, r8717, MPFR_RNDN);
        mpfr_sub(r8719, r8711, r8709, MPFR_RNDN);
        mpfr_add(r8720, r8709, r8710, MPFR_RNDN);
        mpfr_mul(r8721, r8720, r8714, MPFR_RNDN);
        mpfr_neg(r8722, r8721, MPFR_RNDN);
        mpfr_exp(r8723, r8722, MPFR_RNDN);
        mpfr_mul(r8724, r8719, r8723, MPFR_RNDN);
        mpfr_sub(r8725, r8718, r8724, MPFR_RNDN);
        ;
        mpfr_div(r8727, r8725, r8726, MPFR_RNDN);
        return mpfr_get_d(r8727, MPFR_RNDN);
}

static mpfr_t r8728, r8729, r8730, r8731, r8732, r8733, r8734, r8735, r8736, r8737, r8738, r8739, r8740, r8741, r8742, r8743, r8744, r8745, r8746, r8747, r8748, r8749, r8750, r8751, r8752, r8753, r8754, r8755, r8756, r8757, r8758, r8759, r8760, r8761, r8762, r8763, r8764, r8765, r8766, r8767, r8768, r8769, r8770, r8771, r8772, r8773, r8774, r8775;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8728, "2/3", 10, MPFR_RNDN);
        mpfr_init(r8729);
        mpfr_init_set_str(r8730, "3", 10, MPFR_RNDN);
        mpfr_init(r8731);
        mpfr_init(r8732);
        mpfr_init_set_str(r8733, "2", 10, MPFR_RNDN);
        mpfr_init(r8734);
        mpfr_init(r8735);
        mpfr_init(r8736);
        mpfr_init(r8737);
        mpfr_init(r8738);
        mpfr_init(r8739);
        mpfr_init(r8740);
        mpfr_init_set_str(r8741, "3173368680.1185236", 10, MPFR_RNDN);
        mpfr_init(r8742);
        mpfr_init_set_str(r8743, "8", 10, MPFR_RNDN);
        mpfr_init(r8744);
        mpfr_init(r8745);
        mpfr_init_set_str(r8746, "12", 10, MPFR_RNDN);
        mpfr_init(r8747);
        mpfr_init(r8748);
        mpfr_init(r8749);
        mpfr_init(r8750);
        mpfr_init(r8751);
        mpfr_init(r8752);
        mpfr_init(r8753);
        mpfr_init_set_str(r8754, "1", 10, MPFR_RNDN);
        mpfr_init(r8755);
        mpfr_init(r8756);
        mpfr_init(r8757);
        mpfr_init(r8758);
        mpfr_init(r8759);
        mpfr_init(r8760);
        mpfr_init(r8761);
        mpfr_init(r8762);
        mpfr_init(r8763);
        mpfr_init(r8764);
        mpfr_init(r8765);
        mpfr_init(r8766);
        mpfr_init(r8767);
        mpfr_init(r8768);
        mpfr_init(r8769);
        mpfr_init(r8770);
        mpfr_init(r8771);
        mpfr_init(r8772);
        mpfr_init(r8773);
        mpfr_init(r8774);
        mpfr_init(r8775);
}

double f_fm(double x, double eps) {
        ;
        mpfr_set_d(r8729, x, MPFR_RNDN);
        ;
        mpfr_pow(r8731, r8729, r8730, MPFR_RNDN);
        mpfr_mul(r8732, r8728, r8731, MPFR_RNDN);
        ;
        mpfr_add(r8734, r8732, r8733, MPFR_RNDN);
        mpfr_pow(r8735, r8729, r8733, MPFR_RNDN);
        mpfr_sub(r8736, r8734, r8735, MPFR_RNDN);
        mpfr_cbrt(r8737, r8736, MPFR_RNDN);
        mpfr_mul(r8738, r8737, r8737, MPFR_RNDN);
        mpfr_mul(r8739, r8738, r8737, MPFR_RNDN);
        mpfr_div(r8740, r8739, r8733, MPFR_RNDN);
        ;
        mpfr_set_si(r8742, mpfr_cmp(r8740, r8741) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8744, r8729, r8729, MPFR_RNDN);
        mpfr_mul(r8745, r8743, r8729, MPFR_RNDN);
        ;
        mpfr_sub(r8747, r8745, r8746, MPFR_RNDN);
        mpfr_mul(r8748, r8744, r8747, MPFR_RNDN);
        mpfr_add(r8749, r8743, r8748, MPFR_RNDN);
        mpfr_cbrt(r8750, r8749, MPFR_RNDN);
        mpfr_div(r8751, r8750, r8733, MPFR_RNDN);
        mpfr_exp(r8752, r8729, MPFR_RNDN);
        mpfr_set_d(r8753, eps, MPFR_RNDN);
        ;
        mpfr_sub(r8755, r8753, r8754, MPFR_RNDN);
        mpfr_pow(r8756, r8752, r8755, MPFR_RNDN);
        mpfr_sqrt(r8757, r8756, MPFR_RNDN);
        mpfr_div(r8758, r8754, r8753, MPFR_RNDN);
        mpfr_add(r8759, r8758, r8754, MPFR_RNDN);
        mpfr_mul(r8760, r8757, r8759, MPFR_RNDN);
        mpfr_sub(r8761, r8754, r8753, MPFR_RNDN);
        mpfr_mul(r8762, r8761, r8729, MPFR_RNDN);
        mpfr_neg(r8763, r8762, MPFR_RNDN);
        mpfr_exp(r8764, r8763, MPFR_RNDN);
        mpfr_sqrt(r8765, r8764, MPFR_RNDN);
        mpfr_mul(r8766, r8760, r8765, MPFR_RNDN);
        mpfr_sub(r8767, r8758, r8754, MPFR_RNDN);
        mpfr_add(r8768, r8754, r8753, MPFR_RNDN);
        mpfr_mul(r8769, r8768, r8729, MPFR_RNDN);
        mpfr_neg(r8770, r8769, MPFR_RNDN);
        mpfr_exp(r8771, r8770, MPFR_RNDN);
        mpfr_mul(r8772, r8767, r8771, MPFR_RNDN);
        mpfr_sub(r8773, r8766, r8772, MPFR_RNDN);
        mpfr_div(r8774, r8773, r8733, MPFR_RNDN);
        if (mpfr_get_si(r8742, MPFR_RNDN)) { mpfr_set(r8775, r8751, MPFR_RNDN); } else { mpfr_set(r8775, r8774, MPFR_RNDN); };
        return mpfr_get_d(r8775, MPFR_RNDN);
}

static mpfr_t r8776, r8777, r8778, r8779, r8780, r8781, r8782, r8783, r8784, r8785, r8786, r8787, r8788, r8789, r8790, r8791, r8792, r8793, r8794, r8795, r8796, r8797, r8798, r8799, r8800, r8801, r8802, r8803, r8804, r8805, r8806, r8807, r8808, r8809, r8810, r8811, r8812, r8813, r8814, r8815, r8816, r8817, r8818, r8819, r8820, r8821, r8822, r8823;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8776, "2/3", 10, MPFR_RNDN);
        mpfr_init(r8777);
        mpfr_init_set_str(r8778, "3", 10, MPFR_RNDN);
        mpfr_init(r8779);
        mpfr_init(r8780);
        mpfr_init_set_str(r8781, "2", 10, MPFR_RNDN);
        mpfr_init(r8782);
        mpfr_init(r8783);
        mpfr_init(r8784);
        mpfr_init(r8785);
        mpfr_init(r8786);
        mpfr_init(r8787);
        mpfr_init(r8788);
        mpfr_init_set_str(r8789, "3173368680.1185236", 10, MPFR_RNDN);
        mpfr_init(r8790);
        mpfr_init_set_str(r8791, "8", 10, MPFR_RNDN);
        mpfr_init(r8792);
        mpfr_init(r8793);
        mpfr_init_set_str(r8794, "12", 10, MPFR_RNDN);
        mpfr_init(r8795);
        mpfr_init(r8796);
        mpfr_init(r8797);
        mpfr_init(r8798);
        mpfr_init(r8799);
        mpfr_init(r8800);
        mpfr_init(r8801);
        mpfr_init_set_str(r8802, "1", 10, MPFR_RNDN);
        mpfr_init(r8803);
        mpfr_init(r8804);
        mpfr_init(r8805);
        mpfr_init(r8806);
        mpfr_init(r8807);
        mpfr_init(r8808);
        mpfr_init(r8809);
        mpfr_init(r8810);
        mpfr_init(r8811);
        mpfr_init(r8812);
        mpfr_init(r8813);
        mpfr_init(r8814);
        mpfr_init(r8815);
        mpfr_init(r8816);
        mpfr_init(r8817);
        mpfr_init(r8818);
        mpfr_init(r8819);
        mpfr_init(r8820);
        mpfr_init(r8821);
        mpfr_init(r8822);
        mpfr_init(r8823);
}

double f_dm(double x, double eps) {
        ;
        mpfr_set_d(r8777, x, MPFR_RNDN);
        ;
        mpfr_pow(r8779, r8777, r8778, MPFR_RNDN);
        mpfr_mul(r8780, r8776, r8779, MPFR_RNDN);
        ;
        mpfr_add(r8782, r8780, r8781, MPFR_RNDN);
        mpfr_pow(r8783, r8777, r8781, MPFR_RNDN);
        mpfr_sub(r8784, r8782, r8783, MPFR_RNDN);
        mpfr_cbrt(r8785, r8784, MPFR_RNDN);
        mpfr_mul(r8786, r8785, r8785, MPFR_RNDN);
        mpfr_mul(r8787, r8786, r8785, MPFR_RNDN);
        mpfr_div(r8788, r8787, r8781, MPFR_RNDN);
        ;
        mpfr_set_si(r8790, mpfr_cmp(r8788, r8789) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8792, r8777, r8777, MPFR_RNDN);
        mpfr_mul(r8793, r8791, r8777, MPFR_RNDN);
        ;
        mpfr_sub(r8795, r8793, r8794, MPFR_RNDN);
        mpfr_mul(r8796, r8792, r8795, MPFR_RNDN);
        mpfr_add(r8797, r8791, r8796, MPFR_RNDN);
        mpfr_cbrt(r8798, r8797, MPFR_RNDN);
        mpfr_div(r8799, r8798, r8781, MPFR_RNDN);
        mpfr_exp(r8800, r8777, MPFR_RNDN);
        mpfr_set_d(r8801, eps, MPFR_RNDN);
        ;
        mpfr_sub(r8803, r8801, r8802, MPFR_RNDN);
        mpfr_pow(r8804, r8800, r8803, MPFR_RNDN);
        mpfr_sqrt(r8805, r8804, MPFR_RNDN);
        mpfr_div(r8806, r8802, r8801, MPFR_RNDN);
        mpfr_add(r8807, r8806, r8802, MPFR_RNDN);
        mpfr_mul(r8808, r8805, r8807, MPFR_RNDN);
        mpfr_sub(r8809, r8802, r8801, MPFR_RNDN);
        mpfr_mul(r8810, r8809, r8777, MPFR_RNDN);
        mpfr_neg(r8811, r8810, MPFR_RNDN);
        mpfr_exp(r8812, r8811, MPFR_RNDN);
        mpfr_sqrt(r8813, r8812, MPFR_RNDN);
        mpfr_mul(r8814, r8808, r8813, MPFR_RNDN);
        mpfr_sub(r8815, r8806, r8802, MPFR_RNDN);
        mpfr_add(r8816, r8802, r8801, MPFR_RNDN);
        mpfr_mul(r8817, r8816, r8777, MPFR_RNDN);
        mpfr_neg(r8818, r8817, MPFR_RNDN);
        mpfr_exp(r8819, r8818, MPFR_RNDN);
        mpfr_mul(r8820, r8815, r8819, MPFR_RNDN);
        mpfr_sub(r8821, r8814, r8820, MPFR_RNDN);
        mpfr_div(r8822, r8821, r8781, MPFR_RNDN);
        if (mpfr_get_si(r8790, MPFR_RNDN)) { mpfr_set(r8823, r8799, MPFR_RNDN); } else { mpfr_set(r8823, r8822, MPFR_RNDN); };
        return mpfr_get_d(r8823, MPFR_RNDN);
}

