#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 r4774628 = 1.0f;
        float r4774629 = eps;
        float r4774630 = r4774628 - r4774629;
        float r4774631 = r4774628 + r4774629;
        float r4774632 = r4774630 / r4774631;
        float r4774633 = log(r4774632);
        return r4774633;
}

double f_id(double eps) {
        double r4774634 = 1.0;
        double r4774635 = eps;
        double r4774636 = r4774634 - r4774635;
        double r4774637 = r4774634 + r4774635;
        double r4774638 = r4774636 / r4774637;
        double r4774639 = log(r4774638);
        return r4774639;
}


double f_of(float eps) {
        float r4774640 = 2.0f;
        float r4774641 = eps;
        float r4774642 = r4774640 * r4774641;
        float r4774643 = 0.6666666666666666f;
        float r4774644 = 3.0f;
        float r4774645 = pow(r4774641, r4774644);
        float r4774646 = r4774643 * r4774645;
        float r4774647 = 0.4f;
        float r4774648 = 5.0f;
        float r4774649 = pow(r4774641, r4774648);
        float r4774650 = r4774647 * r4774649;
        float r4774651 = r4774646 + r4774650;
        float r4774652 = r4774642 + r4774651;
        float r4774653 = -r4774652;
        return r4774653;
}

double f_od(double eps) {
        double r4774654 = 2.0;
        double r4774655 = eps;
        double r4774656 = r4774654 * r4774655;
        double r4774657 = 0.6666666666666666;
        double r4774658 = 3.0;
        double r4774659 = pow(r4774655, r4774658);
        double r4774660 = r4774657 * r4774659;
        double r4774661 = 0.4;
        double r4774662 = 5.0;
        double r4774663 = pow(r4774655, r4774662);
        double r4774664 = r4774661 * r4774663;
        double r4774665 = r4774660 + r4774664;
        double r4774666 = r4774656 + r4774665;
        double r4774667 = -r4774666;
        return r4774667;
}

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 r4774668, r4774669, r4774670, r4774671, r4774672, r4774673;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4774668, "1", 10, MPFR_RNDN);
        mpfr_init(r4774669);
        mpfr_init(r4774670);
        mpfr_init(r4774671);
        mpfr_init(r4774672);
        mpfr_init(r4774673);
}

double f_im(double eps) {
        ;
        mpfr_set_d(r4774669, eps, MPFR_RNDN);
        mpfr_sub(r4774670, r4774668, r4774669, MPFR_RNDN);
        mpfr_add(r4774671, r4774668, r4774669, MPFR_RNDN);
        mpfr_div(r4774672, r4774670, r4774671, MPFR_RNDN);
        mpfr_log(r4774673, r4774672, MPFR_RNDN);
        return mpfr_get_d(r4774673, MPFR_RNDN);
}

static mpfr_t r4774674, r4774675, r4774676, r4774677, r4774678, r4774679, r4774680, r4774681, r4774682, r4774683, r4774684, r4774685, r4774686, r4774687;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4774674, "2", 10, MPFR_RNDN);
        mpfr_init(r4774675);
        mpfr_init(r4774676);
        mpfr_init_set_str(r4774677, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r4774678, "3", 10, MPFR_RNDN);
        mpfr_init(r4774679);
        mpfr_init(r4774680);
        mpfr_init_set_str(r4774681, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r4774682, "5", 10, MPFR_RNDN);
        mpfr_init(r4774683);
        mpfr_init(r4774684);
        mpfr_init(r4774685);
        mpfr_init(r4774686);
        mpfr_init(r4774687);
}

double f_fm(double eps) {
        ;
        mpfr_set_d(r4774675, eps, MPFR_RNDN);
        mpfr_mul(r4774676, r4774674, r4774675, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4774679, r4774675, r4774678, MPFR_RNDN);
        mpfr_mul(r4774680, r4774677, r4774679, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4774683, r4774675, r4774682, MPFR_RNDN);
        mpfr_mul(r4774684, r4774681, r4774683, MPFR_RNDN);
        mpfr_add(r4774685, r4774680, r4774684, MPFR_RNDN);
        mpfr_add(r4774686, r4774676, r4774685, MPFR_RNDN);
        mpfr_neg(r4774687, r4774686, MPFR_RNDN);
        return mpfr_get_d(r4774687, MPFR_RNDN);
}

static mpfr_t r4774688, r4774689, r4774690, r4774691, r4774692, r4774693, r4774694, r4774695, r4774696, r4774697, r4774698, r4774699, r4774700, r4774701;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4774688, "2", 10, MPFR_RNDN);
        mpfr_init(r4774689);
        mpfr_init(r4774690);
        mpfr_init_set_str(r4774691, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r4774692, "3", 10, MPFR_RNDN);
        mpfr_init(r4774693);
        mpfr_init(r4774694);
        mpfr_init_set_str(r4774695, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r4774696, "5", 10, MPFR_RNDN);
        mpfr_init(r4774697);
        mpfr_init(r4774698);
        mpfr_init(r4774699);
        mpfr_init(r4774700);
        mpfr_init(r4774701);
}

double f_dm(double eps) {
        ;
        mpfr_set_d(r4774689, eps, MPFR_RNDN);
        mpfr_mul(r4774690, r4774688, r4774689, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4774693, r4774689, r4774692, MPFR_RNDN);
        mpfr_mul(r4774694, r4774691, r4774693, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4774697, r4774689, r4774696, MPFR_RNDN);
        mpfr_mul(r4774698, r4774695, r4774697, MPFR_RNDN);
        mpfr_add(r4774699, r4774694, r4774698, MPFR_RNDN);
        mpfr_add(r4774700, r4774690, r4774699, MPFR_RNDN);
        mpfr_neg(r4774701, r4774700, MPFR_RNDN);
        return mpfr_get_d(r4774701, MPFR_RNDN);
}

