#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 r4774846 = 1.0f;
        float r4774847 = x;
        float r4774848 = r4774847 + r4774846;
        float r4774849 = r4774846 / r4774848;
        float r4774850 = 2.0f;
        float r4774851 = r4774850 / r4774847;
        float r4774852 = r4774849 - r4774851;
        float r4774853 = r4774847 - r4774846;
        float r4774854 = r4774846 / r4774853;
        float r4774855 = r4774852 + r4774854;
        return r4774855;
}

double f_id(double x) {
        double r4774856 = 1.0;
        double r4774857 = x;
        double r4774858 = r4774857 + r4774856;
        double r4774859 = r4774856 / r4774858;
        double r4774860 = 2.0;
        double r4774861 = r4774860 / r4774857;
        double r4774862 = r4774859 - r4774861;
        double r4774863 = r4774857 - r4774856;
        double r4774864 = r4774856 / r4774863;
        double r4774865 = r4774862 + r4774864;
        return r4774865;
}


double f_of(float x) {
        float r4774866 = x;
        float r4774867 = -8.658073314327725e-05f;
        bool r4774868 = r4774866 <= r4774867;
        float r4774869 = 2.0f;
        float r4774870 = r4774869 / r4774866;
        float r4774871 = r4774866 * r4774866;
        float r4774872 = r4774870 / r4774871;
        float r4774873 = 7.0f;
        float r4774874 = pow(r4774866, r4774873);
        float r4774875 = r4774869 / r4774874;
        float r4774876 = 5.0f;
        float r4774877 = pow(r4774866, r4774876);
        float r4774878 = r4774869 / r4774877;
        float r4774879 = r4774875 + r4774878;
        float r4774880 = r4774872 + r4774879;
        float r4774881 = 3.570692152999792f;
        bool r4774882 = r4774866 <= r4774881;
        float r4774883 = -r4774869;
        float r4774884 = r4774866 * (r4774866 * r4774866);
        float r4774885 = 1.0f;
        float r4774886 = r4774885 / r4774866;
        float r4774887 = r4774884 + r4774886;
        float r4774888 = r4774866 + r4774887;
        float r4774889 = r4774883 * r4774888;
        float r4774890 = r4774882 ? r4774889 : r4774880;
        float r4774891 = r4774868 ? r4774880 : r4774890;
        return r4774891;
}

double f_od(double x) {
        double r4774892 = x;
        double r4774893 = -8.658073314327725e-05;
        bool r4774894 = r4774892 <= r4774893;
        double r4774895 = 2.0;
        double r4774896 = r4774895 / r4774892;
        double r4774897 = r4774892 * r4774892;
        double r4774898 = r4774896 / r4774897;
        double r4774899 = 7.0;
        double r4774900 = pow(r4774892, r4774899);
        double r4774901 = r4774895 / r4774900;
        double r4774902 = 5.0;
        double r4774903 = pow(r4774892, r4774902);
        double r4774904 = r4774895 / r4774903;
        double r4774905 = r4774901 + r4774904;
        double r4774906 = r4774898 + r4774905;
        double r4774907 = 3.570692152999792;
        bool r4774908 = r4774892 <= r4774907;
        double r4774909 = -r4774895;
        double r4774910 = r4774892 * (r4774892 * r4774892);
        double r4774911 = 1.0;
        double r4774912 = r4774911 / r4774892;
        double r4774913 = r4774910 + r4774912;
        double r4774914 = r4774892 + r4774913;
        double r4774915 = r4774909 * r4774914;
        double r4774916 = r4774908 ? r4774915 : r4774906;
        double r4774917 = r4774894 ? r4774906 : r4774916;
        return r4774917;
}

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 r4774918, r4774919, r4774920, r4774921, r4774922, r4774923, r4774924, r4774925, r4774926, r4774927;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4774918, "1", 10, MPFR_RNDN);
        mpfr_init(r4774919);
        mpfr_init(r4774920);
        mpfr_init(r4774921);
        mpfr_init_set_str(r4774922, "2", 10, MPFR_RNDN);
        mpfr_init(r4774923);
        mpfr_init(r4774924);
        mpfr_init(r4774925);
        mpfr_init(r4774926);
        mpfr_init(r4774927);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4774919, x, MPFR_RNDN);
        mpfr_add(r4774920, r4774919, r4774918, MPFR_RNDN);
        mpfr_div(r4774921, r4774918, r4774920, MPFR_RNDN);
        ;
        mpfr_div(r4774923, r4774922, r4774919, MPFR_RNDN);
        mpfr_sub(r4774924, r4774921, r4774923, MPFR_RNDN);
        mpfr_sub(r4774925, r4774919, r4774918, MPFR_RNDN);
        mpfr_div(r4774926, r4774918, r4774925, MPFR_RNDN);
        mpfr_add(r4774927, r4774924, r4774926, MPFR_RNDN);
        return mpfr_get_d(r4774927, MPFR_RNDN);
}

static mpfr_t r4774928, r4774929, r4774930, r4774931, r4774932, r4774933, r4774934, r4774935, r4774936, r4774937, r4774938, r4774939, r4774940, r4774941, r4774942, r4774943, r4774944, r4774945, r4774946, r4774947, r4774948, r4774949, r4774950, r4774951, r4774952, r4774953;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4774928);
        mpfr_init_set_str(r4774929, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4774930);
        mpfr_init_set_str(r4774931, "2", 10, MPFR_RNDN);
        mpfr_init(r4774932);
        mpfr_init(r4774933);
        mpfr_init(r4774934);
        mpfr_init_set_str(r4774935, "7", 10, MPFR_RNDN);
        mpfr_init(r4774936);
        mpfr_init(r4774937);
        mpfr_init_set_str(r4774938, "5", 10, MPFR_RNDN);
        mpfr_init(r4774939);
        mpfr_init(r4774940);
        mpfr_init(r4774941);
        mpfr_init(r4774942);
        mpfr_init_set_str(r4774943, "3.570692152999792", 10, MPFR_RNDN);
        mpfr_init(r4774944);
        mpfr_init(r4774945);
        mpfr_init(r4774946);
        mpfr_init_set_str(r4774947, "1", 10, MPFR_RNDN);
        mpfr_init(r4774948);
        mpfr_init(r4774949);
        mpfr_init(r4774950);
        mpfr_init(r4774951);
        mpfr_init(r4774952);
        mpfr_init(r4774953);
}

double f_fm(double x) {
        mpfr_set_d(r4774928, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4774930, mpfr_cmp(r4774928, r4774929) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r4774932, r4774931, r4774928, MPFR_RNDN);
        mpfr_sqr(r4774933, r4774928, MPFR_RNDN);
        mpfr_div(r4774934, r4774932, r4774933, MPFR_RNDN);
        ;
        mpfr_pow(r4774936, r4774928, r4774935, MPFR_RNDN);
        mpfr_div(r4774937, r4774931, r4774936, MPFR_RNDN);
        ;
        mpfr_pow(r4774939, r4774928, r4774938, MPFR_RNDN);
        mpfr_div(r4774940, r4774931, r4774939, MPFR_RNDN);
        mpfr_add(r4774941, r4774937, r4774940, MPFR_RNDN);
        mpfr_add(r4774942, r4774934, r4774941, MPFR_RNDN);
        ;
        mpfr_set_si(r4774944, mpfr_cmp(r4774928, r4774943) <= 0, MPFR_RNDN);
        mpfr_neg(r4774945, r4774931, MPFR_RNDN);
        mpfr_mul(r4774946, r4774928, r4774928, MPFR_RNDN); mpfr_mul(r4774946, r4774946, r4774928, MPFR_RNDN);
        ;
        mpfr_div(r4774948, r4774947, r4774928, MPFR_RNDN);
        mpfr_add(r4774949, r4774946, r4774948, MPFR_RNDN);
        mpfr_add(r4774950, r4774928, r4774949, MPFR_RNDN);
        mpfr_mul(r4774951, r4774945, r4774950, MPFR_RNDN);
        if (mpfr_get_si(r4774944, MPFR_RNDN)) { mpfr_set(r4774952, r4774951, MPFR_RNDN); } else { mpfr_set(r4774952, r4774942, MPFR_RNDN); };
        if (mpfr_get_si(r4774930, MPFR_RNDN)) { mpfr_set(r4774953, r4774942, MPFR_RNDN); } else { mpfr_set(r4774953, r4774952, MPFR_RNDN); };
        return mpfr_get_d(r4774953, MPFR_RNDN);
}

static mpfr_t r4774954, r4774955, r4774956, r4774957, r4774958, r4774959, r4774960, r4774961, r4774962, r4774963, r4774964, r4774965, r4774966, r4774967, r4774968, r4774969, r4774970, r4774971, r4774972, r4774973, r4774974, r4774975, r4774976, r4774977, r4774978, r4774979;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4774954);
        mpfr_init_set_str(r4774955, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4774956);
        mpfr_init_set_str(r4774957, "2", 10, MPFR_RNDN);
        mpfr_init(r4774958);
        mpfr_init(r4774959);
        mpfr_init(r4774960);
        mpfr_init_set_str(r4774961, "7", 10, MPFR_RNDN);
        mpfr_init(r4774962);
        mpfr_init(r4774963);
        mpfr_init_set_str(r4774964, "5", 10, MPFR_RNDN);
        mpfr_init(r4774965);
        mpfr_init(r4774966);
        mpfr_init(r4774967);
        mpfr_init(r4774968);
        mpfr_init_set_str(r4774969, "3.570692152999792", 10, MPFR_RNDN);
        mpfr_init(r4774970);
        mpfr_init(r4774971);
        mpfr_init(r4774972);
        mpfr_init_set_str(r4774973, "1", 10, MPFR_RNDN);
        mpfr_init(r4774974);
        mpfr_init(r4774975);
        mpfr_init(r4774976);
        mpfr_init(r4774977);
        mpfr_init(r4774978);
        mpfr_init(r4774979);
}

double f_dm(double x) {
        mpfr_set_d(r4774954, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4774956, mpfr_cmp(r4774954, r4774955) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r4774958, r4774957, r4774954, MPFR_RNDN);
        mpfr_sqr(r4774959, r4774954, MPFR_RNDN);
        mpfr_div(r4774960, r4774958, r4774959, MPFR_RNDN);
        ;
        mpfr_pow(r4774962, r4774954, r4774961, MPFR_RNDN);
        mpfr_div(r4774963, r4774957, r4774962, MPFR_RNDN);
        ;
        mpfr_pow(r4774965, r4774954, r4774964, MPFR_RNDN);
        mpfr_div(r4774966, r4774957, r4774965, MPFR_RNDN);
        mpfr_add(r4774967, r4774963, r4774966, MPFR_RNDN);
        mpfr_add(r4774968, r4774960, r4774967, MPFR_RNDN);
        ;
        mpfr_set_si(r4774970, mpfr_cmp(r4774954, r4774969) <= 0, MPFR_RNDN);
        mpfr_neg(r4774971, r4774957, MPFR_RNDN);
        mpfr_mul(r4774972, r4774954, r4774954, MPFR_RNDN); mpfr_mul(r4774972, r4774972, r4774954, MPFR_RNDN);
        ;
        mpfr_div(r4774974, r4774973, r4774954, MPFR_RNDN);
        mpfr_add(r4774975, r4774972, r4774974, MPFR_RNDN);
        mpfr_add(r4774976, r4774954, r4774975, MPFR_RNDN);
        mpfr_mul(r4774977, r4774971, r4774976, MPFR_RNDN);
        if (mpfr_get_si(r4774970, MPFR_RNDN)) { mpfr_set(r4774978, r4774977, MPFR_RNDN); } else { mpfr_set(r4774978, r4774968, MPFR_RNDN); };
        if (mpfr_get_si(r4774956, MPFR_RNDN)) { mpfr_set(r4774979, r4774968, MPFR_RNDN); } else { mpfr_set(r4774979, r4774978, MPFR_RNDN); };
        return mpfr_get_d(r4774979, MPFR_RNDN);
}

