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

char *name = "NMSE problem 3.3.1";

double f_if(float x) {
        float r5318930 = 1.0f;
        float r5318931 = x;
        float r5318932 = r5318931 + r5318930;
        float r5318933 = r5318930 / r5318932;
        float r5318934 = r5318930 / r5318931;
        float r5318935 = r5318933 - r5318934;
        return r5318935;
}

double f_id(double x) {
        double r5318936 = 1.0;
        double r5318937 = x;
        double r5318938 = r5318937 + r5318936;
        double r5318939 = r5318936 / r5318938;
        double r5318940 = r5318936 / r5318937;
        double r5318941 = r5318939 - r5318940;
        return r5318941;
}


double f_of(float x) {
        float r5318942 = x;
        float r5318943 = -0.11817437388404825f;
        bool r5318944 = r5318942 <= r5318943;
        float r5318945 = 1.0f;
        float r5318946 = 3.0f;
        float r5318947 = pow(r5318942, r5318946);
        float r5318948 = r5318945 / r5318947;
        float r5318949 = 4.0f;
        float r5318950 = pow(r5318942, r5318949);
        float r5318951 = r5318945 / r5318950;
        float r5318952 = r5318945 / r5318942;
        float r5318953 = r5318952 / r5318942;
        float r5318954 = r5318951 + r5318953;
        float r5318955 = r5318948 - r5318954;
        float r5318956 = 4.119393484819504e+18f;
        bool r5318957 = r5318942 <= r5318956;
        float r5318958 = r5318945 + r5318942;
        float r5318959 = r5318942 - r5318958;
        float r5318960 = r5318942 + r5318945;
        float r5318961 = r5318960 * r5318942;
        float r5318962 = r5318959 / r5318961;
        float r5318963 = r5318957 ? r5318962 : r5318955;
        float r5318964 = r5318944 ? r5318955 : r5318963;
        return r5318964;
}

double f_od(double x) {
        double r5318965 = x;
        double r5318966 = -0.11817437388404825;
        bool r5318967 = r5318965 <= r5318966;
        double r5318968 = 1.0;
        double r5318969 = 3.0;
        double r5318970 = pow(r5318965, r5318969);
        double r5318971 = r5318968 / r5318970;
        double r5318972 = 4.0;
        double r5318973 = pow(r5318965, r5318972);
        double r5318974 = r5318968 / r5318973;
        double r5318975 = r5318968 / r5318965;
        double r5318976 = r5318975 / r5318965;
        double r5318977 = r5318974 + r5318976;
        double r5318978 = r5318971 - r5318977;
        double r5318979 = 4.119393484819504e+18;
        bool r5318980 = r5318965 <= r5318979;
        double r5318981 = r5318968 + r5318965;
        double r5318982 = r5318965 - r5318981;
        double r5318983 = r5318965 + r5318968;
        double r5318984 = r5318983 * r5318965;
        double r5318985 = r5318982 / r5318984;
        double r5318986 = r5318980 ? r5318985 : r5318978;
        double r5318987 = r5318967 ? r5318978 : r5318986;
        return r5318987;
}

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 r5318988, r5318989, r5318990, r5318991, r5318992, r5318993;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5318988, "1", 10, MPFR_RNDN);
        mpfr_init(r5318989);
        mpfr_init(r5318990);
        mpfr_init(r5318991);
        mpfr_init(r5318992);
        mpfr_init(r5318993);
}

double f_im(double x) {
        ;
        mpfr_set_d(r5318989, x, MPFR_RNDN);
        mpfr_add(r5318990, r5318989, r5318988, MPFR_RNDN);
        mpfr_div(r5318991, r5318988, r5318990, MPFR_RNDN);
        mpfr_div(r5318992, r5318988, r5318989, MPFR_RNDN);
        mpfr_sub(r5318993, r5318991, r5318992, MPFR_RNDN);
        return mpfr_get_d(r5318993, MPFR_RNDN);
}

static mpfr_t r5318994, r5318995, r5318996, r5318997, r5318998, r5318999, r5319000, r5319001, r5319002, r5319003, r5319004, r5319005, r5319006, r5319007, r5319008, r5319009, r5319010, r5319011, r5319012, r5319013, r5319014, r5319015, r5319016;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5318994);
        mpfr_init_set_str(r5318995, "-0.11817437388404825", 10, MPFR_RNDN);
        mpfr_init(r5318996);
        mpfr_init_set_str(r5318997, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r5318998, "3", 10, MPFR_RNDN);
        mpfr_init(r5318999);
        mpfr_init(r5319000);
        mpfr_init_set_str(r5319001, "4", 10, MPFR_RNDN);
        mpfr_init(r5319002);
        mpfr_init(r5319003);
        mpfr_init(r5319004);
        mpfr_init(r5319005);
        mpfr_init(r5319006);
        mpfr_init(r5319007);
        mpfr_init_set_str(r5319008, "4.119393484819504e+18", 10, MPFR_RNDN);
        mpfr_init(r5319009);
        mpfr_init(r5319010);
        mpfr_init(r5319011);
        mpfr_init(r5319012);
        mpfr_init(r5319013);
        mpfr_init(r5319014);
        mpfr_init(r5319015);
        mpfr_init(r5319016);
}

double f_fm(double x) {
        mpfr_set_d(r5318994, x, MPFR_RNDN);
        ;
        mpfr_set_si(r5318996, mpfr_cmp(r5318994, r5318995) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r5318999, r5318994, r5318998, MPFR_RNDN);
        mpfr_div(r5319000, r5318997, r5318999, MPFR_RNDN);
        ;
        mpfr_pow(r5319002, r5318994, r5319001, MPFR_RNDN);
        mpfr_div(r5319003, r5318997, r5319002, MPFR_RNDN);
        mpfr_div(r5319004, r5318997, r5318994, MPFR_RNDN);
        mpfr_div(r5319005, r5319004, r5318994, MPFR_RNDN);
        mpfr_add(r5319006, r5319003, r5319005, MPFR_RNDN);
        mpfr_sub(r5319007, r5319000, r5319006, MPFR_RNDN);
        ;
        mpfr_set_si(r5319009, mpfr_cmp(r5318994, r5319008) <= 0, MPFR_RNDN);
        mpfr_add(r5319010, r5318997, r5318994, MPFR_RNDN);
        mpfr_sub(r5319011, r5318994, r5319010, MPFR_RNDN);
        mpfr_add(r5319012, r5318994, r5318997, MPFR_RNDN);
        mpfr_mul(r5319013, r5319012, r5318994, MPFR_RNDN);
        mpfr_div(r5319014, r5319011, r5319013, MPFR_RNDN);
        if (mpfr_get_si(r5319009, MPFR_RNDN)) { mpfr_set(r5319015, r5319014, MPFR_RNDN); } else { mpfr_set(r5319015, r5319007, MPFR_RNDN); };
        if (mpfr_get_si(r5318996, MPFR_RNDN)) { mpfr_set(r5319016, r5319007, MPFR_RNDN); } else { mpfr_set(r5319016, r5319015, MPFR_RNDN); };
        return mpfr_get_d(r5319016, MPFR_RNDN);
}

static mpfr_t r5319017, r5319018, r5319019, r5319020, r5319021, r5319022, r5319023, r5319024, r5319025, r5319026, r5319027, r5319028, r5319029, r5319030, r5319031, r5319032, r5319033, r5319034, r5319035, r5319036, r5319037, r5319038, r5319039;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5319017);
        mpfr_init_set_str(r5319018, "-0.11817437388404825", 10, MPFR_RNDN);
        mpfr_init(r5319019);
        mpfr_init_set_str(r5319020, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r5319021, "3", 10, MPFR_RNDN);
        mpfr_init(r5319022);
        mpfr_init(r5319023);
        mpfr_init_set_str(r5319024, "4", 10, MPFR_RNDN);
        mpfr_init(r5319025);
        mpfr_init(r5319026);
        mpfr_init(r5319027);
        mpfr_init(r5319028);
        mpfr_init(r5319029);
        mpfr_init(r5319030);
        mpfr_init_set_str(r5319031, "4.119393484819504e+18", 10, MPFR_RNDN);
        mpfr_init(r5319032);
        mpfr_init(r5319033);
        mpfr_init(r5319034);
        mpfr_init(r5319035);
        mpfr_init(r5319036);
        mpfr_init(r5319037);
        mpfr_init(r5319038);
        mpfr_init(r5319039);
}

double f_dm(double x) {
        mpfr_set_d(r5319017, x, MPFR_RNDN);
        ;
        mpfr_set_si(r5319019, mpfr_cmp(r5319017, r5319018) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r5319022, r5319017, r5319021, MPFR_RNDN);
        mpfr_div(r5319023, r5319020, r5319022, MPFR_RNDN);
        ;
        mpfr_pow(r5319025, r5319017, r5319024, MPFR_RNDN);
        mpfr_div(r5319026, r5319020, r5319025, MPFR_RNDN);
        mpfr_div(r5319027, r5319020, r5319017, MPFR_RNDN);
        mpfr_div(r5319028, r5319027, r5319017, MPFR_RNDN);
        mpfr_add(r5319029, r5319026, r5319028, MPFR_RNDN);
        mpfr_sub(r5319030, r5319023, r5319029, MPFR_RNDN);
        ;
        mpfr_set_si(r5319032, mpfr_cmp(r5319017, r5319031) <= 0, MPFR_RNDN);
        mpfr_add(r5319033, r5319020, r5319017, MPFR_RNDN);
        mpfr_sub(r5319034, r5319017, r5319033, MPFR_RNDN);
        mpfr_add(r5319035, r5319017, r5319020, MPFR_RNDN);
        mpfr_mul(r5319036, r5319035, r5319017, MPFR_RNDN);
        mpfr_div(r5319037, r5319034, r5319036, MPFR_RNDN);
        if (mpfr_get_si(r5319032, MPFR_RNDN)) { mpfr_set(r5319038, r5319037, MPFR_RNDN); } else { mpfr_set(r5319038, r5319030, MPFR_RNDN); };
        if (mpfr_get_si(r5319019, MPFR_RNDN)) { mpfr_set(r5319039, r5319030, MPFR_RNDN); } else { mpfr_set(r5319039, r5319038, MPFR_RNDN); };
        return mpfr_get_d(r5319039, MPFR_RNDN);
}

