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

char *name = "NMSE problem 3.3.4";

double f_if(float x) {
        float r4773965 = x;
        float r4773966 = 1.0f;
        float r4773967 = r4773965 + r4773966;
        float r4773968 = 3.0f;
        float r4773969 = r4773966 / r4773968;
        float r4773970 = pow(r4773967, r4773969);
        float r4773971 = pow(r4773965, r4773969);
        float r4773972 = r4773970 - r4773971;
        return r4773972;
}

double f_id(double x) {
        double r4773973 = x;
        double r4773974 = 1.0;
        double r4773975 = r4773973 + r4773974;
        double r4773976 = 3.0;
        double r4773977 = r4773974 / r4773976;
        double r4773978 = pow(r4773975, r4773977);
        double r4773979 = pow(r4773973, r4773977);
        double r4773980 = r4773978 - r4773979;
        return r4773980;
}


double f_of(float x) {
        float r4773981 = 1.0f;
        float r4773982 = x;
        float r4773983 = r4773981 + r4773982;
        float r4773984 = cbrt(r4773983);
        float r4773985 = r4773984 * r4773984;
        float r4773986 = 3.0f;
        float r4773987 = r4773981 / r4773986;
        float r4773988 = pow(r4773982, r4773987);
        float r4773989 = r4773988 + r4773984;
        float r4773990 = r4773988 * r4773989;
        float r4773991 = r4773985 + r4773990;
        float r4773992 = r4773981 / r4773991;
        return r4773992;
}

double f_od(double x) {
        double r4773993 = 1.0;
        double r4773994 = x;
        double r4773995 = r4773993 + r4773994;
        double r4773996 = cbrt(r4773995);
        double r4773997 = r4773996 * r4773996;
        double r4773998 = 3.0;
        double r4773999 = r4773993 / r4773998;
        double r4774000 = pow(r4773994, r4773999);
        double r4774001 = r4774000 + r4773996;
        double r4774002 = r4774000 * r4774001;
        double r4774003 = r4773997 + r4774002;
        double r4774004 = r4773993 / r4774003;
        return r4774004;
}

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 r4774005, r4774006, r4774007, r4774008, r4774009, r4774010, r4774011, r4774012;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4774005);
        mpfr_init_set_str(r4774006, "1", 10, MPFR_RNDN);
        mpfr_init(r4774007);
        mpfr_init_set_str(r4774008, "3", 10, MPFR_RNDN);
        mpfr_init(r4774009);
        mpfr_init(r4774010);
        mpfr_init(r4774011);
        mpfr_init(r4774012);
}

double f_im(double x) {
        mpfr_set_d(r4774005, x, MPFR_RNDN);
        ;
        mpfr_add(r4774007, r4774005, r4774006, MPFR_RNDN);
        ;
        mpfr_div(r4774009, r4774006, r4774008, MPFR_RNDN);
        mpfr_pow(r4774010, r4774007, r4774009, MPFR_RNDN);
        mpfr_pow(r4774011, r4774005, r4774009, MPFR_RNDN);
        mpfr_sub(r4774012, r4774010, r4774011, MPFR_RNDN);
        return mpfr_get_d(r4774012, MPFR_RNDN);
}

static mpfr_t r4774013, r4774014, r4774015, r4774016, r4774017, r4774018, r4774019, r4774020, r4774021, r4774022, r4774023, r4774024;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4774013, "1", 10, MPFR_RNDN);
        mpfr_init(r4774014);
        mpfr_init(r4774015);
        mpfr_init(r4774016);
        mpfr_init(r4774017);
        mpfr_init_set_str(r4774018, "3", 10, MPFR_RNDN);
        mpfr_init(r4774019);
        mpfr_init(r4774020);
        mpfr_init(r4774021);
        mpfr_init(r4774022);
        mpfr_init(r4774023);
        mpfr_init(r4774024);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r4774014, x, MPFR_RNDN);
        mpfr_add(r4774015, r4774013, r4774014, MPFR_RNDN);
        mpfr_cbrt(r4774016, r4774015, MPFR_RNDN);
        mpfr_sqr(r4774017, r4774016, MPFR_RNDN);
        ;
        mpfr_div(r4774019, r4774013, r4774018, MPFR_RNDN);
        mpfr_pow(r4774020, r4774014, r4774019, MPFR_RNDN);
        mpfr_add(r4774021, r4774020, r4774016, MPFR_RNDN);
        mpfr_mul(r4774022, r4774020, r4774021, MPFR_RNDN);
        mpfr_add(r4774023, r4774017, r4774022, MPFR_RNDN);
        mpfr_div(r4774024, r4774013, r4774023, MPFR_RNDN);
        return mpfr_get_d(r4774024, MPFR_RNDN);
}

static mpfr_t r4774025, r4774026, r4774027, r4774028, r4774029, r4774030, r4774031, r4774032, r4774033, r4774034, r4774035, r4774036;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4774025, "1", 10, MPFR_RNDN);
        mpfr_init(r4774026);
        mpfr_init(r4774027);
        mpfr_init(r4774028);
        mpfr_init(r4774029);
        mpfr_init_set_str(r4774030, "3", 10, MPFR_RNDN);
        mpfr_init(r4774031);
        mpfr_init(r4774032);
        mpfr_init(r4774033);
        mpfr_init(r4774034);
        mpfr_init(r4774035);
        mpfr_init(r4774036);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r4774026, x, MPFR_RNDN);
        mpfr_add(r4774027, r4774025, r4774026, MPFR_RNDN);
        mpfr_cbrt(r4774028, r4774027, MPFR_RNDN);
        mpfr_sqr(r4774029, r4774028, MPFR_RNDN);
        ;
        mpfr_div(r4774031, r4774025, r4774030, MPFR_RNDN);
        mpfr_pow(r4774032, r4774026, r4774031, MPFR_RNDN);
        mpfr_add(r4774033, r4774032, r4774028, MPFR_RNDN);
        mpfr_mul(r4774034, r4774032, r4774033, MPFR_RNDN);
        mpfr_add(r4774035, r4774029, r4774034, MPFR_RNDN);
        mpfr_div(r4774036, r4774025, r4774035, MPFR_RNDN);
        return mpfr_get_d(r4774036, MPFR_RNDN);
}

