#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 r21667 = 1;
        float r21668 = eps;
        float r21669 = r21667 / r21668;
        float r21670 = r21667 + r21669;
        float r21671 = r21667 - r21668;
        float r21672 = x;
        float r21673 = r21671 * r21672;
        float r21674 = -r21673;
        float r21675 = exp(r21674);
        float r21676 = r21670 * r21675;
        float r21677 = r21669 - r21667;
        float r21678 = r21667 + r21668;
        float r21679 = r21678 * r21672;
        float r21680 = -r21679;
        float r21681 = exp(r21680);
        float r21682 = r21677 * r21681;
        float r21683 = r21676 - r21682;
        float r21684 = 2;
        float r21685 = r21683 / r21684;
        return r21685;
}

double f_id(double x, double eps) {
        double r21686 = 1;
        double r21687 = eps;
        double r21688 = r21686 / r21687;
        double r21689 = r21686 + r21688;
        double r21690 = r21686 - r21687;
        double r21691 = x;
        double r21692 = r21690 * r21691;
        double r21693 = -r21692;
        double r21694 = exp(r21693);
        double r21695 = r21689 * r21694;
        double r21696 = r21688 - r21686;
        double r21697 = r21686 + r21687;
        double r21698 = r21697 * r21691;
        double r21699 = -r21698;
        double r21700 = exp(r21699);
        double r21701 = r21696 * r21700;
        double r21702 = r21695 - r21701;
        double r21703 = 2;
        double r21704 = r21702 / r21703;
        return r21704;
}


double f_of(float x, float eps) {
        float r21705 = x;
        float r21706 = 267.3067334888302;
        bool r21707 = r21705 <= r21706;
        float r21708 = 2;
        float r21709 = 2/3;
        float r21710 = 3;
        float r21711 = pow(r21705, r21710);
        float r21712 = r21709 * r21711;
        float r21713 = log1p(r21712);
        float r21714 = expm1(r21713);
        float r21715 = r21708 + r21714;
        float r21716 = pow(r21705, r21708);
        float r21717 = r21715 - r21716;
        float r21718 = r21717 / r21708;
        float r21719 = 1;
        float r21720 = eps;
        float r21721 = r21719 / r21720;
        float r21722 = r21719 + r21721;
        float r21723 = r21719 - r21720;
        float r21724 = r21723 * r21705;
        float r21725 = -r21724;
        float r21726 = exp(r21725);
        float r21727 = r21719 - r21721;
        float r21728 = fma(r21720, r21705, r21705);
        float r21729 = exp(r21728);
        float r21730 = r21727 / r21729;
        float r21731 = fma(r21722, r21726, r21730);
        float r21732 = r21731 / r21708;
        float r21733 = r21707 ? r21718 : r21732;
        return r21733;
}

double f_od(double x, double eps) {
        double r21734 = x;
        double r21735 = 267.3067334888302;
        bool r21736 = r21734 <= r21735;
        double r21737 = 2;
        double r21738 = 2/3;
        double r21739 = 3;
        double r21740 = pow(r21734, r21739);
        double r21741 = r21738 * r21740;
        double r21742 = log1p(r21741);
        double r21743 = expm1(r21742);
        double r21744 = r21737 + r21743;
        double r21745 = pow(r21734, r21737);
        double r21746 = r21744 - r21745;
        double r21747 = r21746 / r21737;
        double r21748 = 1;
        double r21749 = eps;
        double r21750 = r21748 / r21749;
        double r21751 = r21748 + r21750;
        double r21752 = r21748 - r21749;
        double r21753 = r21752 * r21734;
        double r21754 = -r21753;
        double r21755 = exp(r21754);
        double r21756 = r21748 - r21750;
        double r21757 = fma(r21749, r21734, r21734);
        double r21758 = exp(r21757);
        double r21759 = r21756 / r21758;
        double r21760 = fma(r21751, r21755, r21759);
        double r21761 = r21760 / r21737;
        double r21762 = r21736 ? r21747 : r21761;
        return r21762;
}

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 r21763, r21764, r21765, r21766, r21767, r21768, r21769, r21770, r21771, r21772, r21773, r21774, r21775, r21776, r21777, r21778, r21779, r21780, r21781;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r21763, "1", 10, MPFR_RNDN);
        mpfr_init(r21764);
        mpfr_init(r21765);
        mpfr_init(r21766);
        mpfr_init(r21767);
        mpfr_init(r21768);
        mpfr_init(r21769);
        mpfr_init(r21770);
        mpfr_init(r21771);
        mpfr_init(r21772);
        mpfr_init(r21773);
        mpfr_init(r21774);
        mpfr_init(r21775);
        mpfr_init(r21776);
        mpfr_init(r21777);
        mpfr_init(r21778);
        mpfr_init(r21779);
        mpfr_init_set_str(r21780, "2", 10, MPFR_RNDN);
        mpfr_init(r21781);
}

double f_im(double x, double eps) {
        ;
        mpfr_set_d(r21764, eps, MPFR_RNDN);
        mpfr_div(r21765, r21763, r21764, MPFR_RNDN);
        mpfr_add(r21766, r21763, r21765, MPFR_RNDN);
        mpfr_sub(r21767, r21763, r21764, MPFR_RNDN);
        mpfr_set_d(r21768, x, MPFR_RNDN);
        mpfr_mul(r21769, r21767, r21768, MPFR_RNDN);
        mpfr_neg(r21770, r21769, MPFR_RNDN);
        mpfr_exp(r21771, r21770, MPFR_RNDN);
        mpfr_mul(r21772, r21766, r21771, MPFR_RNDN);
        mpfr_sub(r21773, r21765, r21763, MPFR_RNDN);
        mpfr_add(r21774, r21763, r21764, MPFR_RNDN);
        mpfr_mul(r21775, r21774, r21768, MPFR_RNDN);
        mpfr_neg(r21776, r21775, MPFR_RNDN);
        mpfr_exp(r21777, r21776, MPFR_RNDN);
        mpfr_mul(r21778, r21773, r21777, MPFR_RNDN);
        mpfr_sub(r21779, r21772, r21778, MPFR_RNDN);
        ;
        mpfr_div(r21781, r21779, r21780, MPFR_RNDN);
        return mpfr_get_d(r21781, MPFR_RNDN);
}

static mpfr_t r21782, r21783, r21784, r21785, r21786, r21787, r21788, r21789, r21790, r21791, r21792, r21793, r21794, r21795, r21796, r21797, r21798, r21799, r21800, r21801, r21802, r21803, r21804, r21805, r21806, r21807, r21808, r21809, r21810;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21782);
        mpfr_init_set_str(r21783, "267.3067334888302", 10, MPFR_RNDN);
        mpfr_init(r21784);
        mpfr_init_set_str(r21785, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r21786, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r21787, "3", 10, MPFR_RNDN);
        mpfr_init(r21788);
        mpfr_init(r21789);
        mpfr_init(r21790);
        mpfr_init(r21791);
        mpfr_init(r21792);
        mpfr_init(r21793);
        mpfr_init(r21794);
        mpfr_init(r21795);
        mpfr_init_set_str(r21796, "1", 10, MPFR_RNDN);
        mpfr_init(r21797);
        mpfr_init(r21798);
        mpfr_init(r21799);
        mpfr_init(r21800);
        mpfr_init(r21801);
        mpfr_init(r21802);
        mpfr_init(r21803);
        mpfr_init(r21804);
        mpfr_init(r21805);
        mpfr_init(r21806);
        mpfr_init(r21807);
        mpfr_init(r21808);
        mpfr_init(r21809);
        mpfr_init(r21810);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r21782, x, MPFR_RNDN);
        ;
        mpfr_set_si(r21784, mpfr_cmp(r21782, r21783) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r21788, r21782, r21787, MPFR_RNDN);
        mpfr_mul(r21789, r21786, r21788, MPFR_RNDN);
        mpfr_log1p(r21790, r21789, MPFR_RNDN);
        mpfr_expm1(r21791, r21790, MPFR_RNDN);
        mpfr_add(r21792, r21785, r21791, MPFR_RNDN);
        mpfr_pow(r21793, r21782, r21785, MPFR_RNDN);
        mpfr_sub(r21794, r21792, r21793, MPFR_RNDN);
        mpfr_div(r21795, r21794, r21785, MPFR_RNDN);
        ;
        mpfr_set_d(r21797, eps, MPFR_RNDN);
        mpfr_div(r21798, r21796, r21797, MPFR_RNDN);
        mpfr_add(r21799, r21796, r21798, MPFR_RNDN);
        mpfr_sub(r21800, r21796, r21797, MPFR_RNDN);
        mpfr_mul(r21801, r21800, r21782, MPFR_RNDN);
        mpfr_neg(r21802, r21801, MPFR_RNDN);
        mpfr_exp(r21803, r21802, MPFR_RNDN);
        mpfr_sub(r21804, r21796, r21798, MPFR_RNDN);
        mpfr_fma(r21805, r21797, r21782, r21782, MPFR_RNDN);
        mpfr_exp(r21806, r21805, MPFR_RNDN);
        mpfr_div(r21807, r21804, r21806, MPFR_RNDN);
        mpfr_fma(r21808, r21799, r21803, r21807, MPFR_RNDN);
        mpfr_div(r21809, r21808, r21785, MPFR_RNDN);
        if (mpfr_get_si(r21784, MPFR_RNDN)) { mpfr_set(r21810, r21795, MPFR_RNDN); } else { mpfr_set(r21810, r21809, MPFR_RNDN); };
        return mpfr_get_d(r21810, MPFR_RNDN);
}

static mpfr_t r21811, r21812, r21813, r21814, r21815, r21816, r21817, r21818, r21819, r21820, r21821, r21822, r21823, r21824, r21825, r21826, r21827, r21828, r21829, r21830, r21831, r21832, r21833, r21834, r21835, r21836, r21837, r21838, r21839;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21811);
        mpfr_init_set_str(r21812, "267.3067334888302", 10, MPFR_RNDN);
        mpfr_init(r21813);
        mpfr_init_set_str(r21814, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r21815, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r21816, "3", 10, MPFR_RNDN);
        mpfr_init(r21817);
        mpfr_init(r21818);
        mpfr_init(r21819);
        mpfr_init(r21820);
        mpfr_init(r21821);
        mpfr_init(r21822);
        mpfr_init(r21823);
        mpfr_init(r21824);
        mpfr_init_set_str(r21825, "1", 10, MPFR_RNDN);
        mpfr_init(r21826);
        mpfr_init(r21827);
        mpfr_init(r21828);
        mpfr_init(r21829);
        mpfr_init(r21830);
        mpfr_init(r21831);
        mpfr_init(r21832);
        mpfr_init(r21833);
        mpfr_init(r21834);
        mpfr_init(r21835);
        mpfr_init(r21836);
        mpfr_init(r21837);
        mpfr_init(r21838);
        mpfr_init(r21839);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r21811, x, MPFR_RNDN);
        ;
        mpfr_set_si(r21813, mpfr_cmp(r21811, r21812) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r21817, r21811, r21816, MPFR_RNDN);
        mpfr_mul(r21818, r21815, r21817, MPFR_RNDN);
        mpfr_log1p(r21819, r21818, MPFR_RNDN);
        mpfr_expm1(r21820, r21819, MPFR_RNDN);
        mpfr_add(r21821, r21814, r21820, MPFR_RNDN);
        mpfr_pow(r21822, r21811, r21814, MPFR_RNDN);
        mpfr_sub(r21823, r21821, r21822, MPFR_RNDN);
        mpfr_div(r21824, r21823, r21814, MPFR_RNDN);
        ;
        mpfr_set_d(r21826, eps, MPFR_RNDN);
        mpfr_div(r21827, r21825, r21826, MPFR_RNDN);
        mpfr_add(r21828, r21825, r21827, MPFR_RNDN);
        mpfr_sub(r21829, r21825, r21826, MPFR_RNDN);
        mpfr_mul(r21830, r21829, r21811, MPFR_RNDN);
        mpfr_neg(r21831, r21830, MPFR_RNDN);
        mpfr_exp(r21832, r21831, MPFR_RNDN);
        mpfr_sub(r21833, r21825, r21827, MPFR_RNDN);
        mpfr_fma(r21834, r21826, r21811, r21811, MPFR_RNDN);
        mpfr_exp(r21835, r21834, MPFR_RNDN);
        mpfr_div(r21836, r21833, r21835, MPFR_RNDN);
        mpfr_fma(r21837, r21828, r21832, r21836, MPFR_RNDN);
        mpfr_div(r21838, r21837, r21814, MPFR_RNDN);
        if (mpfr_get_si(r21813, MPFR_RNDN)) { mpfr_set(r21839, r21824, MPFR_RNDN); } else { mpfr_set(r21839, r21838, MPFR_RNDN); };
        return mpfr_get_d(r21839, MPFR_RNDN);
}

