#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 r5319835 = 1.0f;
        float r5319836 = x;
        float r5319837 = r5319836 + r5319835;
        float r5319838 = r5319835 / r5319837;
        float r5319839 = 2.0f;
        float r5319840 = r5319839 / r5319836;
        float r5319841 = r5319838 - r5319840;
        float r5319842 = r5319836 - r5319835;
        float r5319843 = r5319835 / r5319842;
        float r5319844 = r5319841 + r5319843;
        return r5319844;
}

double f_id(double x) {
        double r5319845 = 1.0;
        double r5319846 = x;
        double r5319847 = r5319846 + r5319845;
        double r5319848 = r5319845 / r5319847;
        double r5319849 = 2.0;
        double r5319850 = r5319849 / r5319846;
        double r5319851 = r5319848 - r5319850;
        double r5319852 = r5319846 - r5319845;
        double r5319853 = r5319845 / r5319852;
        double r5319854 = r5319851 + r5319853;
        return r5319854;
}


double f_of(float x) {
        float r5319855 = x;
        float r5319856 = -0.11817437388404825f;
        bool r5319857 = r5319855 <= r5319856;
        float r5319858 = 2.0f;
        float r5319859 = 4.0f;
        float r5319860 = pow(r5319855, r5319859);
        float r5319861 = r5319858 / r5319860;
        float r5319862 = r5319858 / r5319855;
        float r5319863 = r5319862 / r5319855;
        float r5319864 = r5319855 * (r5319855 * r5319855);
        float r5319865 = r5319858 / r5319864;
        float r5319866 = r5319863 - r5319865;
        float r5319867 = r5319861 + r5319866;
        float r5319868 = 1.0f;
        float r5319869 = r5319855 - r5319868;
        float r5319870 = r5319867 / r5319869;
        float r5319871 = 906705844.034969f;
        bool r5319872 = r5319855 <= r5319871;
        float r5319873 = r5319868 * r5319855;
        float r5319874 = r5319868 + r5319855;
        float r5319875 = r5319874 * r5319858;
        float r5319876 = r5319873 - r5319875;
        float r5319877 = r5319868 / r5319874;
        float r5319878 = r5319877 * r5319869;
        float r5319879 = r5319876 * r5319878;
        float r5319880 = r5319879 * r5319874;
        float r5319881 = r5319874 * r5319855;
        float r5319882 = r5319881 * r5319868;
        float r5319883 = r5319880 + r5319882;
        float r5319884 = r5319881 * r5319874;
        float r5319885 = r5319869 * r5319884;
        float r5319886 = r5319883 / r5319885;
        float r5319887 = r5319855 + r5319868;
        float r5319888 = r5319886 * r5319887;
        float r5319889 = 5.0f;
        float r5319890 = pow(r5319855, r5319889);
        float r5319891 = r5319858 / r5319890;
        float r5319892 = 7.0f;
        float r5319893 = pow(r5319855, r5319892);
        float r5319894 = r5319858 / r5319893;
        float r5319895 = r5319865 + r5319894;
        float r5319896 = r5319891 + r5319895;
        float r5319897 = r5319872 ? r5319888 : r5319896;
        float r5319898 = r5319857 ? r5319870 : r5319897;
        return r5319898;
}

double f_od(double x) {
        double r5319899 = x;
        double r5319900 = -0.11817437388404825;
        bool r5319901 = r5319899 <= r5319900;
        double r5319902 = 2.0;
        double r5319903 = 4.0;
        double r5319904 = pow(r5319899, r5319903);
        double r5319905 = r5319902 / r5319904;
        double r5319906 = r5319902 / r5319899;
        double r5319907 = r5319906 / r5319899;
        double r5319908 = r5319899 * (r5319899 * r5319899);
        double r5319909 = r5319902 / r5319908;
        double r5319910 = r5319907 - r5319909;
        double r5319911 = r5319905 + r5319910;
        double r5319912 = 1.0;
        double r5319913 = r5319899 - r5319912;
        double r5319914 = r5319911 / r5319913;
        double r5319915 = 906705844.034969;
        bool r5319916 = r5319899 <= r5319915;
        double r5319917 = r5319912 * r5319899;
        double r5319918 = r5319912 + r5319899;
        double r5319919 = r5319918 * r5319902;
        double r5319920 = r5319917 - r5319919;
        double r5319921 = r5319912 / r5319918;
        double r5319922 = r5319921 * r5319913;
        double r5319923 = r5319920 * r5319922;
        double r5319924 = r5319923 * r5319918;
        double r5319925 = r5319918 * r5319899;
        double r5319926 = r5319925 * r5319912;
        double r5319927 = r5319924 + r5319926;
        double r5319928 = r5319925 * r5319918;
        double r5319929 = r5319913 * r5319928;
        double r5319930 = r5319927 / r5319929;
        double r5319931 = r5319899 + r5319912;
        double r5319932 = r5319930 * r5319931;
        double r5319933 = 5.0;
        double r5319934 = pow(r5319899, r5319933);
        double r5319935 = r5319902 / r5319934;
        double r5319936 = 7.0;
        double r5319937 = pow(r5319899, r5319936);
        double r5319938 = r5319902 / r5319937;
        double r5319939 = r5319909 + r5319938;
        double r5319940 = r5319935 + r5319939;
        double r5319941 = r5319916 ? r5319932 : r5319940;
        double r5319942 = r5319901 ? r5319914 : r5319941;
        return r5319942;
}

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 r5319943, r5319944, r5319945, r5319946, r5319947, r5319948, r5319949, r5319950, r5319951, r5319952;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5319943, "1", 10, MPFR_RNDN);
        mpfr_init(r5319944);
        mpfr_init(r5319945);
        mpfr_init(r5319946);
        mpfr_init_set_str(r5319947, "2", 10, MPFR_RNDN);
        mpfr_init(r5319948);
        mpfr_init(r5319949);
        mpfr_init(r5319950);
        mpfr_init(r5319951);
        mpfr_init(r5319952);
}

double f_im(double x) {
        ;
        mpfr_set_d(r5319944, x, MPFR_RNDN);
        mpfr_add(r5319945, r5319944, r5319943, MPFR_RNDN);
        mpfr_div(r5319946, r5319943, r5319945, MPFR_RNDN);
        ;
        mpfr_div(r5319948, r5319947, r5319944, MPFR_RNDN);
        mpfr_sub(r5319949, r5319946, r5319948, MPFR_RNDN);
        mpfr_sub(r5319950, r5319944, r5319943, MPFR_RNDN);
        mpfr_div(r5319951, r5319943, r5319950, MPFR_RNDN);
        mpfr_add(r5319952, r5319949, r5319951, MPFR_RNDN);
        return mpfr_get_d(r5319952, MPFR_RNDN);
}

static mpfr_t r5319953, r5319954, r5319955, r5319956, r5319957, r5319958, r5319959, r5319960, r5319961, r5319962, r5319963, r5319964, r5319965, r5319966, r5319967, r5319968, r5319969, r5319970, r5319971, r5319972, r5319973, r5319974, r5319975, r5319976, r5319977, r5319978, r5319979, r5319980, r5319981, r5319982, r5319983, r5319984, r5319985, r5319986, r5319987, r5319988, r5319989, r5319990, r5319991, r5319992, r5319993, r5319994, r5319995, r5319996;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5319953);
        mpfr_init_set_str(r5319954, "-0.11817437388404825", 10, MPFR_RNDN);
        mpfr_init(r5319955);
        mpfr_init_set_str(r5319956, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r5319957, "4", 10, MPFR_RNDN);
        mpfr_init(r5319958);
        mpfr_init(r5319959);
        mpfr_init(r5319960);
        mpfr_init(r5319961);
        mpfr_init(r5319962);
        mpfr_init(r5319963);
        mpfr_init(r5319964);
        mpfr_init(r5319965);
        mpfr_init_set_str(r5319966, "1", 10, MPFR_RNDN);
        mpfr_init(r5319967);
        mpfr_init(r5319968);
        mpfr_init_set_str(r5319969, "906705844.034969", 10, MPFR_RNDN);
        mpfr_init(r5319970);
        mpfr_init(r5319971);
        mpfr_init(r5319972);
        mpfr_init(r5319973);
        mpfr_init(r5319974);
        mpfr_init(r5319975);
        mpfr_init(r5319976);
        mpfr_init(r5319977);
        mpfr_init(r5319978);
        mpfr_init(r5319979);
        mpfr_init(r5319980);
        mpfr_init(r5319981);
        mpfr_init(r5319982);
        mpfr_init(r5319983);
        mpfr_init(r5319984);
        mpfr_init(r5319985);
        mpfr_init(r5319986);
        mpfr_init_set_str(r5319987, "5", 10, MPFR_RNDN);
        mpfr_init(r5319988);
        mpfr_init(r5319989);
        mpfr_init_set_str(r5319990, "7", 10, MPFR_RNDN);
        mpfr_init(r5319991);
        mpfr_init(r5319992);
        mpfr_init(r5319993);
        mpfr_init(r5319994);
        mpfr_init(r5319995);
        mpfr_init(r5319996);
}

double f_fm(double x) {
        mpfr_set_d(r5319953, x, MPFR_RNDN);
        ;
        mpfr_set_si(r5319955, mpfr_cmp(r5319953, r5319954) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r5319958, r5319953, r5319957, MPFR_RNDN);
        mpfr_div(r5319959, r5319956, r5319958, MPFR_RNDN);
        mpfr_div(r5319960, r5319956, r5319953, MPFR_RNDN);
        mpfr_div(r5319961, r5319960, r5319953, MPFR_RNDN);
        mpfr_mul(r5319962, r5319953, r5319953, MPFR_RNDN); mpfr_mul(r5319962, r5319962, r5319953, MPFR_RNDN);
        mpfr_div(r5319963, r5319956, r5319962, MPFR_RNDN);
        mpfr_sub(r5319964, r5319961, r5319963, MPFR_RNDN);
        mpfr_add(r5319965, r5319959, r5319964, MPFR_RNDN);
        ;
        mpfr_sub(r5319967, r5319953, r5319966, MPFR_RNDN);
        mpfr_div(r5319968, r5319965, r5319967, MPFR_RNDN);
        ;
        mpfr_set_si(r5319970, mpfr_cmp(r5319953, r5319969) <= 0, MPFR_RNDN);
        mpfr_mul(r5319971, r5319966, r5319953, MPFR_RNDN);
        mpfr_add(r5319972, r5319966, r5319953, MPFR_RNDN);
        mpfr_mul(r5319973, r5319972, r5319956, MPFR_RNDN);
        mpfr_sub(r5319974, r5319971, r5319973, MPFR_RNDN);
        mpfr_div(r5319975, r5319966, r5319972, MPFR_RNDN);
        mpfr_mul(r5319976, r5319975, r5319967, MPFR_RNDN);
        mpfr_mul(r5319977, r5319974, r5319976, MPFR_RNDN);
        mpfr_mul(r5319978, r5319977, r5319972, MPFR_RNDN);
        mpfr_mul(r5319979, r5319972, r5319953, MPFR_RNDN);
        mpfr_mul(r5319980, r5319979, r5319966, MPFR_RNDN);
        mpfr_add(r5319981, r5319978, r5319980, MPFR_RNDN);
        mpfr_mul(r5319982, r5319979, r5319972, MPFR_RNDN);
        mpfr_mul(r5319983, r5319967, r5319982, MPFR_RNDN);
        mpfr_div(r5319984, r5319981, r5319983, MPFR_RNDN);
        mpfr_add(r5319985, r5319953, r5319966, MPFR_RNDN);
        mpfr_mul(r5319986, r5319984, r5319985, MPFR_RNDN);
        ;
        mpfr_pow(r5319988, r5319953, r5319987, MPFR_RNDN);
        mpfr_div(r5319989, r5319956, r5319988, MPFR_RNDN);
        ;
        mpfr_pow(r5319991, r5319953, r5319990, MPFR_RNDN);
        mpfr_div(r5319992, r5319956, r5319991, MPFR_RNDN);
        mpfr_add(r5319993, r5319963, r5319992, MPFR_RNDN);
        mpfr_add(r5319994, r5319989, r5319993, MPFR_RNDN);
        if (mpfr_get_si(r5319970, MPFR_RNDN)) { mpfr_set(r5319995, r5319986, MPFR_RNDN); } else { mpfr_set(r5319995, r5319994, MPFR_RNDN); };
        if (mpfr_get_si(r5319955, MPFR_RNDN)) { mpfr_set(r5319996, r5319968, MPFR_RNDN); } else { mpfr_set(r5319996, r5319995, MPFR_RNDN); };
        return mpfr_get_d(r5319996, MPFR_RNDN);
}

static mpfr_t r5319997, r5319998, r5319999, r5320000, r5320001, r5320002, r5320003, r5320004, r5320005, r5320006, r5320007, r5320008, r5320009, r5320010, r5320011, r5320012, r5320013, r5320014, r5320015, r5320016, r5320017, r5320018, r5320019, r5320020, r5320021, r5320022, r5320023, r5320024, r5320025, r5320026, r5320027, r5320028, r5320029, r5320030, r5320031, r5320032, r5320033, r5320034, r5320035, r5320036, r5320037, r5320038, r5320039, r5320040;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5319997);
        mpfr_init_set_str(r5319998, "-0.11817437388404825", 10, MPFR_RNDN);
        mpfr_init(r5319999);
        mpfr_init_set_str(r5320000, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r5320001, "4", 10, MPFR_RNDN);
        mpfr_init(r5320002);
        mpfr_init(r5320003);
        mpfr_init(r5320004);
        mpfr_init(r5320005);
        mpfr_init(r5320006);
        mpfr_init(r5320007);
        mpfr_init(r5320008);
        mpfr_init(r5320009);
        mpfr_init_set_str(r5320010, "1", 10, MPFR_RNDN);
        mpfr_init(r5320011);
        mpfr_init(r5320012);
        mpfr_init_set_str(r5320013, "906705844.034969", 10, MPFR_RNDN);
        mpfr_init(r5320014);
        mpfr_init(r5320015);
        mpfr_init(r5320016);
        mpfr_init(r5320017);
        mpfr_init(r5320018);
        mpfr_init(r5320019);
        mpfr_init(r5320020);
        mpfr_init(r5320021);
        mpfr_init(r5320022);
        mpfr_init(r5320023);
        mpfr_init(r5320024);
        mpfr_init(r5320025);
        mpfr_init(r5320026);
        mpfr_init(r5320027);
        mpfr_init(r5320028);
        mpfr_init(r5320029);
        mpfr_init(r5320030);
        mpfr_init_set_str(r5320031, "5", 10, MPFR_RNDN);
        mpfr_init(r5320032);
        mpfr_init(r5320033);
        mpfr_init_set_str(r5320034, "7", 10, MPFR_RNDN);
        mpfr_init(r5320035);
        mpfr_init(r5320036);
        mpfr_init(r5320037);
        mpfr_init(r5320038);
        mpfr_init(r5320039);
        mpfr_init(r5320040);
}

double f_dm(double x) {
        mpfr_set_d(r5319997, x, MPFR_RNDN);
        ;
        mpfr_set_si(r5319999, mpfr_cmp(r5319997, r5319998) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r5320002, r5319997, r5320001, MPFR_RNDN);
        mpfr_div(r5320003, r5320000, r5320002, MPFR_RNDN);
        mpfr_div(r5320004, r5320000, r5319997, MPFR_RNDN);
        mpfr_div(r5320005, r5320004, r5319997, MPFR_RNDN);
        mpfr_mul(r5320006, r5319997, r5319997, MPFR_RNDN); mpfr_mul(r5320006, r5320006, r5319997, MPFR_RNDN);
        mpfr_div(r5320007, r5320000, r5320006, MPFR_RNDN);
        mpfr_sub(r5320008, r5320005, r5320007, MPFR_RNDN);
        mpfr_add(r5320009, r5320003, r5320008, MPFR_RNDN);
        ;
        mpfr_sub(r5320011, r5319997, r5320010, MPFR_RNDN);
        mpfr_div(r5320012, r5320009, r5320011, MPFR_RNDN);
        ;
        mpfr_set_si(r5320014, mpfr_cmp(r5319997, r5320013) <= 0, MPFR_RNDN);
        mpfr_mul(r5320015, r5320010, r5319997, MPFR_RNDN);
        mpfr_add(r5320016, r5320010, r5319997, MPFR_RNDN);
        mpfr_mul(r5320017, r5320016, r5320000, MPFR_RNDN);
        mpfr_sub(r5320018, r5320015, r5320017, MPFR_RNDN);
        mpfr_div(r5320019, r5320010, r5320016, MPFR_RNDN);
        mpfr_mul(r5320020, r5320019, r5320011, MPFR_RNDN);
        mpfr_mul(r5320021, r5320018, r5320020, MPFR_RNDN);
        mpfr_mul(r5320022, r5320021, r5320016, MPFR_RNDN);
        mpfr_mul(r5320023, r5320016, r5319997, MPFR_RNDN);
        mpfr_mul(r5320024, r5320023, r5320010, MPFR_RNDN);
        mpfr_add(r5320025, r5320022, r5320024, MPFR_RNDN);
        mpfr_mul(r5320026, r5320023, r5320016, MPFR_RNDN);
        mpfr_mul(r5320027, r5320011, r5320026, MPFR_RNDN);
        mpfr_div(r5320028, r5320025, r5320027, MPFR_RNDN);
        mpfr_add(r5320029, r5319997, r5320010, MPFR_RNDN);
        mpfr_mul(r5320030, r5320028, r5320029, MPFR_RNDN);
        ;
        mpfr_pow(r5320032, r5319997, r5320031, MPFR_RNDN);
        mpfr_div(r5320033, r5320000, r5320032, MPFR_RNDN);
        ;
        mpfr_pow(r5320035, r5319997, r5320034, MPFR_RNDN);
        mpfr_div(r5320036, r5320000, r5320035, MPFR_RNDN);
        mpfr_add(r5320037, r5320007, r5320036, MPFR_RNDN);
        mpfr_add(r5320038, r5320033, r5320037, MPFR_RNDN);
        if (mpfr_get_si(r5320014, MPFR_RNDN)) { mpfr_set(r5320039, r5320030, MPFR_RNDN); } else { mpfr_set(r5320039, r5320038, MPFR_RNDN); };
        if (mpfr_get_si(r5319999, MPFR_RNDN)) { mpfr_set(r5320040, r5320012, MPFR_RNDN); } else { mpfr_set(r5320040, r5320039, MPFR_RNDN); };
        return mpfr_get_d(r5320040, MPFR_RNDN);
}

