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

char *name = "NMSE problem 3.2.1, negative";

double f_if(float a, float b2, float c) {
        float r27132 = b2;
        float r27133 = -r27132;
        float r27134 = r27132 * r27132;
        float r27135 = a;
        float r27136 = c;
        float r27137 = r27135 * r27136;
        float r27138 = r27134 - r27137;
        float r27139 = sqrt(r27138);
        float r27140 = r27133 - r27139;
        float r27141 = r27140 / r27135;
        return r27141;
}

double f_id(double a, double b2, double c) {
        double r27142 = b2;
        double r27143 = -r27142;
        double r27144 = r27142 * r27142;
        double r27145 = a;
        double r27146 = c;
        double r27147 = r27145 * r27146;
        double r27148 = r27144 - r27147;
        double r27149 = sqrt(r27148);
        double r27150 = r27143 - r27149;
        double r27151 = r27150 / r27145;
        return r27151;
}


double f_of(float a, float b2, float c) {
        float r27152 = b2;
        float r27153 = -4.930770214232589e+18f;
        bool r27154 = r27152 <= r27153;
        float r27155 = c;
        float r27156 = 0.5f;
        float r27157 = r27156 * r27155;
        float r27158 = a;
        float r27159 = r27158 / r27152;
        float r27160 = r27157 * r27159;
        float r27161 = -r27152;
        float r27162 = r27152 - r27161;
        float r27163 = r27160 - r27162;
        float r27164 = r27155 / r27163;
        float r27165 = -4.4891519221511533e-128f;
        bool r27166 = r27152 <= r27165;
        float r27167 = r27155 * r27158;
        float r27168 = r27152 * r27152;
        float r27169 = r27158 * r27155;
        float r27170 = r27168 - r27169;
        float r27171 = sqrt(r27170);
        float r27172 = r27161 + r27171;
        float r27173 = sqrt(r27172);
        float r27174 = r27173 * r27173;
        float r27175 = r27167 / r27174;
        float r27176 = r27175 / r27158;
        float r27177 = 4.983767219933664e+51f;
        bool r27178 = r27152 <= r27177;
        float r27179 = r27161 - r27171;
        float r27180 = r27179 / r27158;
        float r27181 = -2.0f;
        float r27182 = r27152 / r27158;
        float r27183 = r27181 * r27182;
        float r27184 = r27178 ? r27180 : r27183;
        float r27185 = r27166 ? r27176 : r27184;
        float r27186 = r27154 ? r27164 : r27185;
        return r27186;
}

double f_od(double a, double b2, double c) {
        double r27187 = b2;
        double r27188 = -4.930770214232589e+18;
        bool r27189 = r27187 <= r27188;
        double r27190 = c;
        double r27191 = 0.5;
        double r27192 = r27191 * r27190;
        double r27193 = a;
        double r27194 = r27193 / r27187;
        double r27195 = r27192 * r27194;
        double r27196 = -r27187;
        double r27197 = r27187 - r27196;
        double r27198 = r27195 - r27197;
        double r27199 = r27190 / r27198;
        double r27200 = -4.4891519221511533e-128;
        bool r27201 = r27187 <= r27200;
        double r27202 = r27190 * r27193;
        double r27203 = r27187 * r27187;
        double r27204 = r27193 * r27190;
        double r27205 = r27203 - r27204;
        double r27206 = sqrt(r27205);
        double r27207 = r27196 + r27206;
        double r27208 = sqrt(r27207);
        double r27209 = r27208 * r27208;
        double r27210 = r27202 / r27209;
        double r27211 = r27210 / r27193;
        double r27212 = 4.983767219933664e+51;
        bool r27213 = r27187 <= r27212;
        double r27214 = r27196 - r27206;
        double r27215 = r27214 / r27193;
        double r27216 = -2.0;
        double r27217 = r27187 / r27193;
        double r27218 = r27216 * r27217;
        double r27219 = r27213 ? r27215 : r27218;
        double r27220 = r27201 ? r27211 : r27219;
        double r27221 = r27189 ? r27199 : r27220;
        return r27221;
}

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 r27222, r27223, r27224, r27225, r27226, r27227, r27228, r27229, r27230, r27231;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r27222);
        mpfr_init(r27223);
        mpfr_init(r27224);
        mpfr_init(r27225);
        mpfr_init(r27226);
        mpfr_init(r27227);
        mpfr_init(r27228);
        mpfr_init(r27229);
        mpfr_init(r27230);
        mpfr_init(r27231);
}

double f_im(double a, double b2, double c) {
        mpfr_set_d(r27222, b2, MPFR_RNDN);
        mpfr_neg(r27223, r27222, MPFR_RNDN);
        mpfr_mul(r27224, r27222, r27222, MPFR_RNDN);
        mpfr_set_d(r27225, a, MPFR_RNDN);
        mpfr_set_d(r27226, c, MPFR_RNDN);
        mpfr_mul(r27227, r27225, r27226, MPFR_RNDN);
        mpfr_sub(r27228, r27224, r27227, MPFR_RNDN);
        mpfr_sqrt(r27229, r27228, MPFR_RNDN);
        mpfr_sub(r27230, r27223, r27229, MPFR_RNDN);
        mpfr_div(r27231, r27230, r27225, MPFR_RNDN);
        return mpfr_get_d(r27231, MPFR_RNDN);
}

static mpfr_t r27232, r27233, r27234, r27235, r27236, r27237, r27238, r27239, r27240, r27241, r27242, r27243, r27244, r27245, r27246, r27247, r27248, r27249, r27250, r27251, r27252, r27253, r27254, r27255, r27256, r27257, r27258, r27259, r27260, r27261, r27262, r27263, r27264, r27265, r27266;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r27232);
        mpfr_init_set_str(r27233, "-4.930770214232589e+18", 10, MPFR_RNDN);
        mpfr_init(r27234);
        mpfr_init(r27235);
        mpfr_init_set_str(r27236, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27237);
        mpfr_init(r27238);
        mpfr_init(r27239);
        mpfr_init(r27240);
        mpfr_init(r27241);
        mpfr_init(r27242);
        mpfr_init(r27243);
        mpfr_init(r27244);
        mpfr_init_set_str(r27245, "-4.4891519221511533e-128", 10, MPFR_RNDN);
        mpfr_init(r27246);
        mpfr_init(r27247);
        mpfr_init(r27248);
        mpfr_init(r27249);
        mpfr_init(r27250);
        mpfr_init(r27251);
        mpfr_init(r27252);
        mpfr_init(r27253);
        mpfr_init(r27254);
        mpfr_init(r27255);
        mpfr_init(r27256);
        mpfr_init_set_str(r27257, "4.983767219933664e+51", 10, MPFR_RNDN);
        mpfr_init(r27258);
        mpfr_init(r27259);
        mpfr_init(r27260);
        mpfr_init_set_str(r27261, "-2", 10, MPFR_RNDN);
        mpfr_init(r27262);
        mpfr_init(r27263);
        mpfr_init(r27264);
        mpfr_init(r27265);
        mpfr_init(r27266);
}

double f_fm(double a, double b2, double c) {
        mpfr_set_d(r27232, b2, MPFR_RNDN);
        ;
        mpfr_set_si(r27234, mpfr_cmp(r27232, r27233) <= 0, MPFR_RNDN);
        mpfr_set_d(r27235, c, MPFR_RNDN);
        ;
        mpfr_mul(r27237, r27236, r27235, MPFR_RNDN);
        mpfr_set_d(r27238, a, MPFR_RNDN);
        mpfr_div(r27239, r27238, r27232, MPFR_RNDN);
        mpfr_mul(r27240, r27237, r27239, MPFR_RNDN);
        mpfr_neg(r27241, r27232, MPFR_RNDN);
        mpfr_sub(r27242, r27232, r27241, MPFR_RNDN);
        mpfr_sub(r27243, r27240, r27242, MPFR_RNDN);
        mpfr_div(r27244, r27235, r27243, MPFR_RNDN);
        ;
        mpfr_set_si(r27246, mpfr_cmp(r27232, r27245) <= 0, MPFR_RNDN);
        mpfr_mul(r27247, r27235, r27238, MPFR_RNDN);
        mpfr_mul(r27248, r27232, r27232, MPFR_RNDN);
        mpfr_mul(r27249, r27238, r27235, MPFR_RNDN);
        mpfr_sub(r27250, r27248, r27249, MPFR_RNDN);
        mpfr_sqrt(r27251, r27250, MPFR_RNDN);
        mpfr_add(r27252, r27241, r27251, MPFR_RNDN);
        mpfr_sqrt(r27253, r27252, MPFR_RNDN);
        mpfr_sqr(r27254, r27253, MPFR_RNDN);
        mpfr_div(r27255, r27247, r27254, MPFR_RNDN);
        mpfr_div(r27256, r27255, r27238, MPFR_RNDN);
        ;
        mpfr_set_si(r27258, mpfr_cmp(r27232, r27257) <= 0, MPFR_RNDN);
        mpfr_sub(r27259, r27241, r27251, MPFR_RNDN);
        mpfr_div(r27260, r27259, r27238, MPFR_RNDN);
        ;
        mpfr_div(r27262, r27232, r27238, MPFR_RNDN);
        mpfr_mul(r27263, r27261, r27262, MPFR_RNDN);
        if (mpfr_get_si(r27258, MPFR_RNDN)) { mpfr_set(r27264, r27260, MPFR_RNDN); } else { mpfr_set(r27264, r27263, MPFR_RNDN); };
        if (mpfr_get_si(r27246, MPFR_RNDN)) { mpfr_set(r27265, r27256, MPFR_RNDN); } else { mpfr_set(r27265, r27264, MPFR_RNDN); };
        if (mpfr_get_si(r27234, MPFR_RNDN)) { mpfr_set(r27266, r27244, MPFR_RNDN); } else { mpfr_set(r27266, r27265, MPFR_RNDN); };
        return mpfr_get_d(r27266, MPFR_RNDN);
}

static mpfr_t r27267, r27268, r27269, r27270, r27271, r27272, r27273, r27274, r27275, r27276, r27277, r27278, r27279, r27280, r27281, r27282, r27283, r27284, r27285, r27286, r27287, r27288, r27289, r27290, r27291, r27292, r27293, r27294, r27295, r27296, r27297, r27298, r27299, r27300, r27301;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r27267);
        mpfr_init_set_str(r27268, "-4.930770214232589e+18", 10, MPFR_RNDN);
        mpfr_init(r27269);
        mpfr_init(r27270);
        mpfr_init_set_str(r27271, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27272);
        mpfr_init(r27273);
        mpfr_init(r27274);
        mpfr_init(r27275);
        mpfr_init(r27276);
        mpfr_init(r27277);
        mpfr_init(r27278);
        mpfr_init(r27279);
        mpfr_init_set_str(r27280, "-4.4891519221511533e-128", 10, MPFR_RNDN);
        mpfr_init(r27281);
        mpfr_init(r27282);
        mpfr_init(r27283);
        mpfr_init(r27284);
        mpfr_init(r27285);
        mpfr_init(r27286);
        mpfr_init(r27287);
        mpfr_init(r27288);
        mpfr_init(r27289);
        mpfr_init(r27290);
        mpfr_init(r27291);
        mpfr_init_set_str(r27292, "4.983767219933664e+51", 10, MPFR_RNDN);
        mpfr_init(r27293);
        mpfr_init(r27294);
        mpfr_init(r27295);
        mpfr_init_set_str(r27296, "-2", 10, MPFR_RNDN);
        mpfr_init(r27297);
        mpfr_init(r27298);
        mpfr_init(r27299);
        mpfr_init(r27300);
        mpfr_init(r27301);
}

double f_dm(double a, double b2, double c) {
        mpfr_set_d(r27267, b2, MPFR_RNDN);
        ;
        mpfr_set_si(r27269, mpfr_cmp(r27267, r27268) <= 0, MPFR_RNDN);
        mpfr_set_d(r27270, c, MPFR_RNDN);
        ;
        mpfr_mul(r27272, r27271, r27270, MPFR_RNDN);
        mpfr_set_d(r27273, a, MPFR_RNDN);
        mpfr_div(r27274, r27273, r27267, MPFR_RNDN);
        mpfr_mul(r27275, r27272, r27274, MPFR_RNDN);
        mpfr_neg(r27276, r27267, MPFR_RNDN);
        mpfr_sub(r27277, r27267, r27276, MPFR_RNDN);
        mpfr_sub(r27278, r27275, r27277, MPFR_RNDN);
        mpfr_div(r27279, r27270, r27278, MPFR_RNDN);
        ;
        mpfr_set_si(r27281, mpfr_cmp(r27267, r27280) <= 0, MPFR_RNDN);
        mpfr_mul(r27282, r27270, r27273, MPFR_RNDN);
        mpfr_mul(r27283, r27267, r27267, MPFR_RNDN);
        mpfr_mul(r27284, r27273, r27270, MPFR_RNDN);
        mpfr_sub(r27285, r27283, r27284, MPFR_RNDN);
        mpfr_sqrt(r27286, r27285, MPFR_RNDN);
        mpfr_add(r27287, r27276, r27286, MPFR_RNDN);
        mpfr_sqrt(r27288, r27287, MPFR_RNDN);
        mpfr_sqr(r27289, r27288, MPFR_RNDN);
        mpfr_div(r27290, r27282, r27289, MPFR_RNDN);
        mpfr_div(r27291, r27290, r27273, MPFR_RNDN);
        ;
        mpfr_set_si(r27293, mpfr_cmp(r27267, r27292) <= 0, MPFR_RNDN);
        mpfr_sub(r27294, r27276, r27286, MPFR_RNDN);
        mpfr_div(r27295, r27294, r27273, MPFR_RNDN);
        ;
        mpfr_div(r27297, r27267, r27273, MPFR_RNDN);
        mpfr_mul(r27298, r27296, r27297, MPFR_RNDN);
        if (mpfr_get_si(r27293, MPFR_RNDN)) { mpfr_set(r27299, r27295, MPFR_RNDN); } else { mpfr_set(r27299, r27298, MPFR_RNDN); };
        if (mpfr_get_si(r27281, MPFR_RNDN)) { mpfr_set(r27300, r27291, MPFR_RNDN); } else { mpfr_set(r27300, r27299, MPFR_RNDN); };
        if (mpfr_get_si(r27269, MPFR_RNDN)) { mpfr_set(r27301, r27279, MPFR_RNDN); } else { mpfr_set(r27301, r27300, MPFR_RNDN); };
        return mpfr_get_d(r27301, MPFR_RNDN);
}

