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

char *name = "NMSE problem 3.4.3";

double f_if(float eps) {
        float r4618708 = 1.0f;
        float r4618709 = eps;
        float r4618710 = r4618708 - r4618709;
        float r4618711 = r4618708 + r4618709;
        float r4618712 = r4618710 / r4618711;
        float r4618713 = log(r4618712);
        return r4618713;
}

double f_id(double eps) {
        double r4618714 = 1.0;
        double r4618715 = eps;
        double r4618716 = r4618714 - r4618715;
        double r4618717 = r4618714 + r4618715;
        double r4618718 = r4618716 / r4618717;
        double r4618719 = log(r4618718);
        return r4618719;
}


double f_of(float eps) {
        float r4618720 = 0.4f;
        float r4618721 = eps;
        float r4618722 = 5.0f;
        float r4618723 = pow(r4618721, r4618722);
        float r4618724 = r4618720 * r4618723;
        float r4618725 = 2.0f;
        float r4618726 = r4618725 * r4618721;
        float r4618727 = 0.6666666666666666f;
        float r4618728 = 3.0f;
        float r4618729 = pow(r4618721, r4618728);
        float r4618730 = r4618727 * r4618729;
        float r4618731 = r4618726 + r4618730;
        float r4618732 = r4618724 + r4618731;
        float r4618733 = -r4618732;
        return r4618733;
}

double f_od(double eps) {
        double r4618734 = 0.4;
        double r4618735 = eps;
        double r4618736 = 5.0;
        double r4618737 = pow(r4618735, r4618736);
        double r4618738 = r4618734 * r4618737;
        double r4618739 = 2.0;
        double r4618740 = r4618739 * r4618735;
        double r4618741 = 0.6666666666666666;
        double r4618742 = 3.0;
        double r4618743 = pow(r4618735, r4618742);
        double r4618744 = r4618741 * r4618743;
        double r4618745 = r4618740 + r4618744;
        double r4618746 = r4618738 + r4618745;
        double r4618747 = -r4618746;
        return r4618747;
}

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 r4618748, r4618749, r4618750, r4618751, r4618752, r4618753;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4618748, "1", 10, MPFR_RNDN);
        mpfr_init(r4618749);
        mpfr_init(r4618750);
        mpfr_init(r4618751);
        mpfr_init(r4618752);
        mpfr_init(r4618753);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r4618749, eps, MPFR_RNDN);
        mpfr_sub(r4618750, r4618748, r4618749, MPFR_RNDN);
        mpfr_add(r4618751, r4618748, r4618749, MPFR_RNDN);
        mpfr_div(r4618752, r4618750, r4618751, MPFR_RNDN);
        mpfr_log(r4618753, r4618752, MPFR_RNDN);
        return mpfr_get_d(r4618753, MPFR_RNDN);
}

static mpfr_t r4618754, r4618755, r4618756, r4618757, r4618758, r4618759, r4618760, r4618761, r4618762, r4618763, r4618764, r4618765, r4618766, r4618767;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4618754, "2/5", 10, MPFR_RNDN);
        mpfr_init(r4618755);
        mpfr_init_set_str(r4618756, "5", 10, MPFR_RNDN);
        mpfr_init(r4618757);
        mpfr_init(r4618758);
        mpfr_init_set_str(r4618759, "2", 10, MPFR_RNDN);
        mpfr_init(r4618760);
        mpfr_init_set_str(r4618761, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r4618762, "3", 10, MPFR_RNDN);
        mpfr_init(r4618763);
        mpfr_init(r4618764);
        mpfr_init(r4618765);
        mpfr_init(r4618766);
        mpfr_init(r4618767);
}

double f_fm(double eps) {
        ;
        mpfr_set_d(r4618755, eps, MPFR_RNDN);
        ;
        mpfr_pow(r4618757, r4618755, r4618756, MPFR_RNDN);
        mpfr_mul(r4618758, r4618754, r4618757, MPFR_RNDN);
        ;
        mpfr_mul(r4618760, r4618759, r4618755, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4618763, r4618755, r4618762, MPFR_RNDN);
        mpfr_mul(r4618764, r4618761, r4618763, MPFR_RNDN);
        mpfr_add(r4618765, r4618760, r4618764, MPFR_RNDN);
        mpfr_add(r4618766, r4618758, r4618765, MPFR_RNDN);
        mpfr_neg(r4618767, r4618766, MPFR_RNDN);
        return mpfr_get_d(r4618767, MPFR_RNDN);
}

static mpfr_t r4618768, r4618769, r4618770, r4618771, r4618772, r4618773, r4618774, r4618775, r4618776, r4618777, r4618778, r4618779, r4618780, r4618781;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4618768, "2/5", 10, MPFR_RNDN);
        mpfr_init(r4618769);
        mpfr_init_set_str(r4618770, "5", 10, MPFR_RNDN);
        mpfr_init(r4618771);
        mpfr_init(r4618772);
        mpfr_init_set_str(r4618773, "2", 10, MPFR_RNDN);
        mpfr_init(r4618774);
        mpfr_init_set_str(r4618775, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r4618776, "3", 10, MPFR_RNDN);
        mpfr_init(r4618777);
        mpfr_init(r4618778);
        mpfr_init(r4618779);
        mpfr_init(r4618780);
        mpfr_init(r4618781);
}

double f_dm(double eps) {
        ;
        mpfr_set_d(r4618769, eps, MPFR_RNDN);
        ;
        mpfr_pow(r4618771, r4618769, r4618770, MPFR_RNDN);
        mpfr_mul(r4618772, r4618768, r4618771, MPFR_RNDN);
        ;
        mpfr_mul(r4618774, r4618773, r4618769, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4618777, r4618769, r4618776, MPFR_RNDN);
        mpfr_mul(r4618778, r4618775, r4618777, MPFR_RNDN);
        mpfr_add(r4618779, r4618774, r4618778, MPFR_RNDN);
        mpfr_add(r4618780, r4618772, r4618779, MPFR_RNDN);
        mpfr_neg(r4618781, r4618780, MPFR_RNDN);
        return mpfr_get_d(r4618781, MPFR_RNDN);
}

