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

char *name = "NMSE problem 3.4.5";

double f_if(float x) {
        float r14831 = x;
        float r14832 = sin(r14831);
        float r14833 = r14831 - r14832;
        float r14834 = tan(r14831);
        float r14835 = r14831 - r14834;
        float r14836 = r14833 / r14835;
        return r14836;
}

double f_id(double x) {
        double r14837 = x;
        double r14838 = sin(r14837);
        double r14839 = r14837 - r14838;
        double r14840 = tan(r14837);
        double r14841 = r14837 - r14840;
        double r14842 = r14839 / r14841;
        return r14842;
}


double f_of(float x) {
        float r14843 = x;
        float r14844 = -8.61646249982272e-12f;
        bool r14845 = r14843 <= r14844;
        float r14846 = sin(r14843);
        float r14847 = r14843 - r14846;
        float r14848 = tan(r14843);
        float r14849 = r14843 - r14848;
        float r14850 = r14847 / r14849;
        float r14851 = expm1(r14850);
        float r14852 = log1p(r14851);
        float r14853 = 8.584780819621077f;
        bool r14854 = r14843 <= r14853;
        float r14855 = 0.225f;
        float r14856 = r14843 * r14843;
        float r14857 = r14855 * r14856;
        float r14858 = 0.009642857142857142f;
        float r14859 = 4.0f;
        float r14860 = pow(r14843, r14859);
        float r14861 = r14858 * r14860;
        float r14862 = 0.5f;
        float r14863 = r14861 + r14862;
        float r14864 = r14857 - r14863;
        float r14865 = r14843 / r14849;
        float r14866 = r14865 * (r14865 * r14865);
        float r14867 = r14846 / r14849;
        float r14868 = r14867 * (r14867 * r14867);
        float r14869 = r14866 - r14868;
        float r14870 = r14867 + r14865;
        float r14871 = r14867 * r14867;
        float r14872 = fma(r14865, r14870, r14871);
        float r14873 = r14869 / r14872;
        float r14874 = r14854 ? r14864 : r14873;
        float r14875 = r14845 ? r14852 : r14874;
        return r14875;
}

double f_od(double x) {
        double r14876 = x;
        double r14877 = -8.61646249982272e-12;
        bool r14878 = r14876 <= r14877;
        double r14879 = sin(r14876);
        double r14880 = r14876 - r14879;
        double r14881 = tan(r14876);
        double r14882 = r14876 - r14881;
        double r14883 = r14880 / r14882;
        double r14884 = expm1(r14883);
        double r14885 = log1p(r14884);
        double r14886 = 8.584780819621077;
        bool r14887 = r14876 <= r14886;
        double r14888 = 0.225;
        double r14889 = r14876 * r14876;
        double r14890 = r14888 * r14889;
        double r14891 = 0.009642857142857142;
        double r14892 = 4.0;
        double r14893 = pow(r14876, r14892);
        double r14894 = r14891 * r14893;
        double r14895 = 0.5;
        double r14896 = r14894 + r14895;
        double r14897 = r14890 - r14896;
        double r14898 = r14876 / r14882;
        double r14899 = r14898 * (r14898 * r14898);
        double r14900 = r14879 / r14882;
        double r14901 = r14900 * (r14900 * r14900);
        double r14902 = r14899 - r14901;
        double r14903 = r14900 + r14898;
        double r14904 = r14900 * r14900;
        double r14905 = fma(r14898, r14903, r14904);
        double r14906 = r14902 / r14905;
        double r14907 = r14887 ? r14897 : r14906;
        double r14908 = r14878 ? r14885 : r14907;
        return r14908;
}

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 r14909, r14910, r14911, r14912, r14913, r14914;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r14909);
        mpfr_init(r14910);
        mpfr_init(r14911);
        mpfr_init(r14912);
        mpfr_init(r14913);
        mpfr_init(r14914);
}

double f_im(double x) {
        mpfr_set_d(r14909, x, MPFR_RNDN);
        mpfr_sin(r14910, r14909, MPFR_RNDN);
        mpfr_sub(r14911, r14909, r14910, MPFR_RNDN);
        mpfr_tan(r14912, r14909, MPFR_RNDN);
        mpfr_sub(r14913, r14909, r14912, MPFR_RNDN);
        mpfr_div(r14914, r14911, r14913, MPFR_RNDN);
        return mpfr_get_d(r14914, MPFR_RNDN);
}

static mpfr_t r14915, r14916, r14917, r14918, r14919, r14920, r14921, r14922, r14923, r14924, r14925, r14926, r14927, r14928, r14929, r14930, r14931, r14932, r14933, r14934, r14935, r14936, r14937, r14938, r14939, r14940, r14941, r14942, r14943, r14944, r14945, r14946, r14947;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14915);
        mpfr_init_set_str(r14916, "-8.61646249982272e-12", 10, MPFR_RNDN);
        mpfr_init(r14917);
        mpfr_init(r14918);
        mpfr_init(r14919);
        mpfr_init(r14920);
        mpfr_init(r14921);
        mpfr_init(r14922);
        mpfr_init(r14923);
        mpfr_init(r14924);
        mpfr_init_set_str(r14925, "8.584780819621077", 10, MPFR_RNDN);
        mpfr_init(r14926);
        mpfr_init_set_str(r14927, "9/40", 10, MPFR_RNDN);
        mpfr_init(r14928);
        mpfr_init(r14929);
        mpfr_init_set_str(r14930, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r14931, "4", 10, MPFR_RNDN);
        mpfr_init(r14932);
        mpfr_init(r14933);
        mpfr_init_set_str(r14934, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14935);
        mpfr_init(r14936);
        mpfr_init(r14937);
        mpfr_init(r14938);
        mpfr_init(r14939);
        mpfr_init(r14940);
        mpfr_init(r14941);
        mpfr_init(r14942);
        mpfr_init(r14943);
        mpfr_init(r14944);
        mpfr_init(r14945);
        mpfr_init(r14946);
        mpfr_init(r14947);
}

double f_fm(double x) {
        mpfr_set_d(r14915, x, MPFR_RNDN);
        ;
        mpfr_set_si(r14917, mpfr_cmp(r14915, r14916) <= 0, MPFR_RNDN);
        mpfr_sin(r14918, r14915, MPFR_RNDN);
        mpfr_sub(r14919, r14915, r14918, MPFR_RNDN);
        mpfr_tan(r14920, r14915, MPFR_RNDN);
        mpfr_sub(r14921, r14915, r14920, MPFR_RNDN);
        mpfr_div(r14922, r14919, r14921, MPFR_RNDN);
        mpfr_expm1(r14923, r14922, MPFR_RNDN);
        mpfr_log1p(r14924, r14923, MPFR_RNDN);
        ;
        mpfr_set_si(r14926, mpfr_cmp(r14915, r14925) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r14928, r14915, MPFR_RNDN);
        mpfr_mul(r14929, r14927, r14928, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r14932, r14915, r14931, MPFR_RNDN);
        mpfr_mul(r14933, r14930, r14932, MPFR_RNDN);
        ;
        mpfr_add(r14935, r14933, r14934, MPFR_RNDN);
        mpfr_sub(r14936, r14929, r14935, MPFR_RNDN);
        mpfr_div(r14937, r14915, r14921, MPFR_RNDN);
        mpfr_mul(r14938, r14937, r14937, MPFR_RNDN); mpfr_mul(r14938, r14938, r14937, MPFR_RNDN);
        mpfr_div(r14939, r14918, r14921, MPFR_RNDN);
        mpfr_mul(r14940, r14939, r14939, MPFR_RNDN); mpfr_mul(r14940, r14940, r14939, MPFR_RNDN);
        mpfr_sub(r14941, r14938, r14940, MPFR_RNDN);
        mpfr_add(r14942, r14939, r14937, MPFR_RNDN);
        mpfr_sqr(r14943, r14939, MPFR_RNDN);
        mpfr_fma(r14944, r14937, r14942, r14943, MPFR_RNDN);
        mpfr_div(r14945, r14941, r14944, MPFR_RNDN);
        if (mpfr_get_si(r14926, MPFR_RNDN)) { mpfr_set(r14946, r14936, MPFR_RNDN); } else { mpfr_set(r14946, r14945, MPFR_RNDN); };
        if (mpfr_get_si(r14917, MPFR_RNDN)) { mpfr_set(r14947, r14924, MPFR_RNDN); } else { mpfr_set(r14947, r14946, MPFR_RNDN); };
        return mpfr_get_d(r14947, MPFR_RNDN);
}

static mpfr_t r14948, r14949, r14950, r14951, r14952, r14953, r14954, r14955, r14956, r14957, r14958, r14959, r14960, r14961, r14962, r14963, r14964, r14965, r14966, r14967, r14968, r14969, r14970, r14971, r14972, r14973, r14974, r14975, r14976, r14977, r14978, r14979, r14980;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14948);
        mpfr_init_set_str(r14949, "-8.61646249982272e-12", 10, MPFR_RNDN);
        mpfr_init(r14950);
        mpfr_init(r14951);
        mpfr_init(r14952);
        mpfr_init(r14953);
        mpfr_init(r14954);
        mpfr_init(r14955);
        mpfr_init(r14956);
        mpfr_init(r14957);
        mpfr_init_set_str(r14958, "8.584780819621077", 10, MPFR_RNDN);
        mpfr_init(r14959);
        mpfr_init_set_str(r14960, "9/40", 10, MPFR_RNDN);
        mpfr_init(r14961);
        mpfr_init(r14962);
        mpfr_init_set_str(r14963, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r14964, "4", 10, MPFR_RNDN);
        mpfr_init(r14965);
        mpfr_init(r14966);
        mpfr_init_set_str(r14967, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14968);
        mpfr_init(r14969);
        mpfr_init(r14970);
        mpfr_init(r14971);
        mpfr_init(r14972);
        mpfr_init(r14973);
        mpfr_init(r14974);
        mpfr_init(r14975);
        mpfr_init(r14976);
        mpfr_init(r14977);
        mpfr_init(r14978);
        mpfr_init(r14979);
        mpfr_init(r14980);
}

double f_dm(double x) {
        mpfr_set_d(r14948, x, MPFR_RNDN);
        ;
        mpfr_set_si(r14950, mpfr_cmp(r14948, r14949) <= 0, MPFR_RNDN);
        mpfr_sin(r14951, r14948, MPFR_RNDN);
        mpfr_sub(r14952, r14948, r14951, MPFR_RNDN);
        mpfr_tan(r14953, r14948, MPFR_RNDN);
        mpfr_sub(r14954, r14948, r14953, MPFR_RNDN);
        mpfr_div(r14955, r14952, r14954, MPFR_RNDN);
        mpfr_expm1(r14956, r14955, MPFR_RNDN);
        mpfr_log1p(r14957, r14956, MPFR_RNDN);
        ;
        mpfr_set_si(r14959, mpfr_cmp(r14948, r14958) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r14961, r14948, MPFR_RNDN);
        mpfr_mul(r14962, r14960, r14961, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r14965, r14948, r14964, MPFR_RNDN);
        mpfr_mul(r14966, r14963, r14965, MPFR_RNDN);
        ;
        mpfr_add(r14968, r14966, r14967, MPFR_RNDN);
        mpfr_sub(r14969, r14962, r14968, MPFR_RNDN);
        mpfr_div(r14970, r14948, r14954, MPFR_RNDN);
        mpfr_mul(r14971, r14970, r14970, MPFR_RNDN); mpfr_mul(r14971, r14971, r14970, MPFR_RNDN);
        mpfr_div(r14972, r14951, r14954, MPFR_RNDN);
        mpfr_mul(r14973, r14972, r14972, MPFR_RNDN); mpfr_mul(r14973, r14973, r14972, MPFR_RNDN);
        mpfr_sub(r14974, r14971, r14973, MPFR_RNDN);
        mpfr_add(r14975, r14972, r14970, MPFR_RNDN);
        mpfr_sqr(r14976, r14972, MPFR_RNDN);
        mpfr_fma(r14977, r14970, r14975, r14976, MPFR_RNDN);
        mpfr_div(r14978, r14974, r14977, MPFR_RNDN);
        if (mpfr_get_si(r14959, MPFR_RNDN)) { mpfr_set(r14979, r14969, MPFR_RNDN); } else { mpfr_set(r14979, r14978, MPFR_RNDN); };
        if (mpfr_get_si(r14950, MPFR_RNDN)) { mpfr_set(r14980, r14957, MPFR_RNDN); } else { mpfr_set(r14980, r14979, MPFR_RNDN); };
        return mpfr_get_d(r14980, MPFR_RNDN);
}

