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

char *name = "NMSE problem 3.3.3";

double f_if(float x) {
        float r4618926 = 1.0f;
        float r4618927 = x;
        float r4618928 = r4618927 + r4618926;
        float r4618929 = r4618926 / r4618928;
        float r4618930 = 2.0f;
        float r4618931 = r4618930 / r4618927;
        float r4618932 = r4618929 - r4618931;
        float r4618933 = r4618927 - r4618926;
        float r4618934 = r4618926 / r4618933;
        float r4618935 = r4618932 + r4618934;
        return r4618935;
}

double f_id(double x) {
        double r4618936 = 1.0;
        double r4618937 = x;
        double r4618938 = r4618937 + r4618936;
        double r4618939 = r4618936 / r4618938;
        double r4618940 = 2.0;
        double r4618941 = r4618940 / r4618937;
        double r4618942 = r4618939 - r4618941;
        double r4618943 = r4618937 - r4618936;
        double r4618944 = r4618936 / r4618943;
        double r4618945 = r4618942 + r4618944;
        return r4618945;
}


double f_of(float x) {
        float r4618946 = x;
        float r4618947 = -8.658073314327725e-05f;
        bool r4618948 = r4618946 <= r4618947;
        float r4618949 = 2.0f;
        float r4618950 = 7.0f;
        float r4618951 = pow(r4618946, r4618950);
        float r4618952 = r4618949 / r4618951;
        float r4618953 = 5.0f;
        float r4618954 = pow(r4618946, r4618953);
        float r4618955 = r4618949 / r4618954;
        float r4618956 = r4618949 / r4618946;
        float r4618957 = r4618946 * r4618946;
        float r4618958 = r4618956 / r4618957;
        float r4618959 = r4618955 + r4618958;
        float r4618960 = r4618952 + r4618959;
        float r4618961 = 3.570692152999792f;
        bool r4618962 = r4618946 <= r4618961;
        float r4618963 = r4618946 * (r4618946 * r4618946);
        float r4618964 = 1.0f;
        float r4618965 = r4618964 / r4618946;
        float r4618966 = r4618963 + r4618965;
        float r4618967 = r4618946 + r4618966;
        float r4618968 = -r4618949;
        float r4618969 = r4618967 * r4618968;
        float r4618970 = r4618962 ? r4618969 : r4618960;
        float r4618971 = r4618948 ? r4618960 : r4618970;
        return r4618971;
}

double f_od(double x) {
        double r4618972 = x;
        double r4618973 = -8.658073314327725e-05;
        bool r4618974 = r4618972 <= r4618973;
        double r4618975 = 2.0;
        double r4618976 = 7.0;
        double r4618977 = pow(r4618972, r4618976);
        double r4618978 = r4618975 / r4618977;
        double r4618979 = 5.0;
        double r4618980 = pow(r4618972, r4618979);
        double r4618981 = r4618975 / r4618980;
        double r4618982 = r4618975 / r4618972;
        double r4618983 = r4618972 * r4618972;
        double r4618984 = r4618982 / r4618983;
        double r4618985 = r4618981 + r4618984;
        double r4618986 = r4618978 + r4618985;
        double r4618987 = 3.570692152999792;
        bool r4618988 = r4618972 <= r4618987;
        double r4618989 = r4618972 * (r4618972 * r4618972);
        double r4618990 = 1.0;
        double r4618991 = r4618990 / r4618972;
        double r4618992 = r4618989 + r4618991;
        double r4618993 = r4618972 + r4618992;
        double r4618994 = -r4618975;
        double r4618995 = r4618993 * r4618994;
        double r4618996 = r4618988 ? r4618995 : r4618986;
        double r4618997 = r4618974 ? r4618986 : r4618996;
        return r4618997;
}

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 r4618998, r4618999, r4619000, r4619001, r4619002, r4619003, r4619004, r4619005, r4619006, r4619007;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4618998, "1", 10, MPFR_RNDN);
        mpfr_init(r4618999);
        mpfr_init(r4619000);
        mpfr_init(r4619001);
        mpfr_init_set_str(r4619002, "2", 10, MPFR_RNDN);
        mpfr_init(r4619003);
        mpfr_init(r4619004);
        mpfr_init(r4619005);
        mpfr_init(r4619006);
        mpfr_init(r4619007);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4618999, x, MPFR_RNDN);
        mpfr_add(r4619000, r4618999, r4618998, MPFR_RNDN);
        mpfr_div(r4619001, r4618998, r4619000, MPFR_RNDN);
        ;
        mpfr_div(r4619003, r4619002, r4618999, MPFR_RNDN);
        mpfr_sub(r4619004, r4619001, r4619003, MPFR_RNDN);
        mpfr_sub(r4619005, r4618999, r4618998, MPFR_RNDN);
        mpfr_div(r4619006, r4618998, r4619005, MPFR_RNDN);
        mpfr_add(r4619007, r4619004, r4619006, MPFR_RNDN);
        return mpfr_get_d(r4619007, MPFR_RNDN);
}

static mpfr_t r4619008, r4619009, r4619010, r4619011, r4619012, r4619013, r4619014, r4619015, r4619016, r4619017, r4619018, r4619019, r4619020, r4619021, r4619022, r4619023, r4619024, r4619025, r4619026, r4619027, r4619028, r4619029, r4619030, r4619031, r4619032, r4619033;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4619008);
        mpfr_init_set_str(r4619009, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4619010);
        mpfr_init_set_str(r4619011, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4619012, "7", 10, MPFR_RNDN);
        mpfr_init(r4619013);
        mpfr_init(r4619014);
        mpfr_init_set_str(r4619015, "5", 10, MPFR_RNDN);
        mpfr_init(r4619016);
        mpfr_init(r4619017);
        mpfr_init(r4619018);
        mpfr_init(r4619019);
        mpfr_init(r4619020);
        mpfr_init(r4619021);
        mpfr_init(r4619022);
        mpfr_init_set_str(r4619023, "3.570692152999792", 10, MPFR_RNDN);
        mpfr_init(r4619024);
        mpfr_init(r4619025);
        mpfr_init_set_str(r4619026, "1", 10, MPFR_RNDN);
        mpfr_init(r4619027);
        mpfr_init(r4619028);
        mpfr_init(r4619029);
        mpfr_init(r4619030);
        mpfr_init(r4619031);
        mpfr_init(r4619032);
        mpfr_init(r4619033);
}

double f_fm(double x) {
        mpfr_set_d(r4619008, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4619010, mpfr_cmp(r4619008, r4619009) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4619013, r4619008, r4619012, MPFR_RNDN);
        mpfr_div(r4619014, r4619011, r4619013, MPFR_RNDN);
        ;
        mpfr_pow(r4619016, r4619008, r4619015, MPFR_RNDN);
        mpfr_div(r4619017, r4619011, r4619016, MPFR_RNDN);
        mpfr_div(r4619018, r4619011, r4619008, MPFR_RNDN);
        mpfr_sqr(r4619019, r4619008, MPFR_RNDN);
        mpfr_div(r4619020, r4619018, r4619019, MPFR_RNDN);
        mpfr_add(r4619021, r4619017, r4619020, MPFR_RNDN);
        mpfr_add(r4619022, r4619014, r4619021, MPFR_RNDN);
        ;
        mpfr_set_si(r4619024, mpfr_cmp(r4619008, r4619023) <= 0, MPFR_RNDN);
        mpfr_mul(r4619025, r4619008, r4619008, MPFR_RNDN); mpfr_mul(r4619025, r4619025, r4619008, MPFR_RNDN);
        ;
        mpfr_div(r4619027, r4619026, r4619008, MPFR_RNDN);
        mpfr_add(r4619028, r4619025, r4619027, MPFR_RNDN);
        mpfr_add(r4619029, r4619008, r4619028, MPFR_RNDN);
        mpfr_neg(r4619030, r4619011, MPFR_RNDN);
        mpfr_mul(r4619031, r4619029, r4619030, MPFR_RNDN);
        if (mpfr_get_si(r4619024, MPFR_RNDN)) { mpfr_set(r4619032, r4619031, MPFR_RNDN); } else { mpfr_set(r4619032, r4619022, MPFR_RNDN); };
        if (mpfr_get_si(r4619010, MPFR_RNDN)) { mpfr_set(r4619033, r4619022, MPFR_RNDN); } else { mpfr_set(r4619033, r4619032, MPFR_RNDN); };
        return mpfr_get_d(r4619033, MPFR_RNDN);
}

static mpfr_t r4619034, r4619035, r4619036, r4619037, r4619038, r4619039, r4619040, r4619041, r4619042, r4619043, r4619044, r4619045, r4619046, r4619047, r4619048, r4619049, r4619050, r4619051, r4619052, r4619053, r4619054, r4619055, r4619056, r4619057, r4619058, r4619059;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4619034);
        mpfr_init_set_str(r4619035, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4619036);
        mpfr_init_set_str(r4619037, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4619038, "7", 10, MPFR_RNDN);
        mpfr_init(r4619039);
        mpfr_init(r4619040);
        mpfr_init_set_str(r4619041, "5", 10, MPFR_RNDN);
        mpfr_init(r4619042);
        mpfr_init(r4619043);
        mpfr_init(r4619044);
        mpfr_init(r4619045);
        mpfr_init(r4619046);
        mpfr_init(r4619047);
        mpfr_init(r4619048);
        mpfr_init_set_str(r4619049, "3.570692152999792", 10, MPFR_RNDN);
        mpfr_init(r4619050);
        mpfr_init(r4619051);
        mpfr_init_set_str(r4619052, "1", 10, MPFR_RNDN);
        mpfr_init(r4619053);
        mpfr_init(r4619054);
        mpfr_init(r4619055);
        mpfr_init(r4619056);
        mpfr_init(r4619057);
        mpfr_init(r4619058);
        mpfr_init(r4619059);
}

double f_dm(double x) {
        mpfr_set_d(r4619034, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4619036, mpfr_cmp(r4619034, r4619035) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4619039, r4619034, r4619038, MPFR_RNDN);
        mpfr_div(r4619040, r4619037, r4619039, MPFR_RNDN);
        ;
        mpfr_pow(r4619042, r4619034, r4619041, MPFR_RNDN);
        mpfr_div(r4619043, r4619037, r4619042, MPFR_RNDN);
        mpfr_div(r4619044, r4619037, r4619034, MPFR_RNDN);
        mpfr_sqr(r4619045, r4619034, MPFR_RNDN);
        mpfr_div(r4619046, r4619044, r4619045, MPFR_RNDN);
        mpfr_add(r4619047, r4619043, r4619046, MPFR_RNDN);
        mpfr_add(r4619048, r4619040, r4619047, MPFR_RNDN);
        ;
        mpfr_set_si(r4619050, mpfr_cmp(r4619034, r4619049) <= 0, MPFR_RNDN);
        mpfr_mul(r4619051, r4619034, r4619034, MPFR_RNDN); mpfr_mul(r4619051, r4619051, r4619034, MPFR_RNDN);
        ;
        mpfr_div(r4619053, r4619052, r4619034, MPFR_RNDN);
        mpfr_add(r4619054, r4619051, r4619053, MPFR_RNDN);
        mpfr_add(r4619055, r4619034, r4619054, MPFR_RNDN);
        mpfr_neg(r4619056, r4619037, MPFR_RNDN);
        mpfr_mul(r4619057, r4619055, r4619056, MPFR_RNDN);
        if (mpfr_get_si(r4619050, MPFR_RNDN)) { mpfr_set(r4619058, r4619057, MPFR_RNDN); } else { mpfr_set(r4619058, r4619048, MPFR_RNDN); };
        if (mpfr_get_si(r4619036, MPFR_RNDN)) { mpfr_set(r4619059, r4619048, MPFR_RNDN); } else { mpfr_set(r4619059, r4619058, MPFR_RNDN); };
        return mpfr_get_d(r4619059, MPFR_RNDN);
}

