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

char *name = "NMSE problem 3.2.1";

double f_if(float a, float b_2, float c) {
        float r9165 = b_2;
        float r9166 = -r9165;
        float r9167 = r9165 * r9165;
        float r9168 = a;
        float r9169 = c;
        float r9170 = r9168 * r9169;
        float r9171 = r9167 - r9170;
        float r9172 = sqrt(r9171);
        float r9173 = r9166 - r9172;
        float r9174 = r9173 / r9168;
        return r9174;
}

double f_id(double a, double b_2, double c) {
        double r9175 = b_2;
        double r9176 = -r9175;
        double r9177 = r9175 * r9175;
        double r9178 = a;
        double r9179 = c;
        double r9180 = r9178 * r9179;
        double r9181 = r9177 - r9180;
        double r9182 = sqrt(r9181);
        double r9183 = r9176 - r9182;
        double r9184 = r9183 / r9178;
        return r9184;
}


double f_of(float a, float b_2, float c) {
        float r9185 = b_2;
        float r9186 = -1.338815475246526e+154f;
        bool r9187 = r9185 <= r9186;
        float r9188 = c;
        float r9189 = a;
        float r9190 = r9189 * r9188;
        float r9191 = r9190 / r9185;
        float r9192 = 0.5f;
        float r9193 = r9191 * r9192;
        float r9194 = r9193 - r9185;
        float r9195 = r9194 - r9185;
        float r9196 = r9188 / r9195;
        float r9197 = -1.1965740506185076e-303f;
        bool r9198 = r9185 <= r9197;
        float r9199 = r9185 * r9185;
        float r9200 = r9199 - r9190;
        float r9201 = sqrt(r9200);
        float r9202 = r9201 - r9185;
        float r9203 = r9188 / r9202;
        float r9204 = 1.170080853887373e+54f;
        bool r9205 = r9185 <= r9204;
        float r9206 = -r9185;
        float r9207 = r9206 - r9201;
        float r9208 = r9207 / r9189;
        float r9209 = -2.0f;
        float r9210 = r9185 / r9189;
        float r9211 = r9209 * r9210;
        float r9212 = r9205 ? r9208 : r9211;
        float r9213 = r9198 ? r9203 : r9212;
        float r9214 = r9187 ? r9196 : r9213;
        return r9214;
}

double f_od(double a, double b_2, double c) {
        double r9215 = b_2;
        double r9216 = -1.338815475246526e+154;
        bool r9217 = r9215 <= r9216;
        double r9218 = c;
        double r9219 = a;
        double r9220 = r9219 * r9218;
        double r9221 = r9220 / r9215;
        double r9222 = 0.5;
        double r9223 = r9221 * r9222;
        double r9224 = r9223 - r9215;
        double r9225 = r9224 - r9215;
        double r9226 = r9218 / r9225;
        double r9227 = -1.1965740506185076e-303;
        bool r9228 = r9215 <= r9227;
        double r9229 = r9215 * r9215;
        double r9230 = r9229 - r9220;
        double r9231 = sqrt(r9230);
        double r9232 = r9231 - r9215;
        double r9233 = r9218 / r9232;
        double r9234 = 1.170080853887373e+54;
        bool r9235 = r9215 <= r9234;
        double r9236 = -r9215;
        double r9237 = r9236 - r9231;
        double r9238 = r9237 / r9219;
        double r9239 = -2.0;
        double r9240 = r9215 / r9219;
        double r9241 = r9239 * r9240;
        double r9242 = r9235 ? r9238 : r9241;
        double r9243 = r9228 ? r9233 : r9242;
        double r9244 = r9217 ? r9226 : r9243;
        return r9244;
}

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 r9245, r9246, r9247, r9248, r9249, r9250, r9251, r9252, r9253, r9254;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9245);
        mpfr_init(r9246);
        mpfr_init(r9247);
        mpfr_init(r9248);
        mpfr_init(r9249);
        mpfr_init(r9250);
        mpfr_init(r9251);
        mpfr_init(r9252);
        mpfr_init(r9253);
        mpfr_init(r9254);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r9245, b_2, MPFR_RNDN);
        mpfr_neg(r9246, r9245, MPFR_RNDN);
        mpfr_mul(r9247, r9245, r9245, MPFR_RNDN);
        mpfr_set_d(r9248, a, MPFR_RNDN);
        mpfr_set_d(r9249, c, MPFR_RNDN);
        mpfr_mul(r9250, r9248, r9249, MPFR_RNDN);
        mpfr_sub(r9251, r9247, r9250, MPFR_RNDN);
        mpfr_sqrt(r9252, r9251, MPFR_RNDN);
        mpfr_sub(r9253, r9246, r9252, MPFR_RNDN);
        mpfr_div(r9254, r9253, r9248, MPFR_RNDN);
        return mpfr_get_d(r9254, MPFR_RNDN);
}

static mpfr_t r9255, r9256, r9257, r9258, r9259, r9260, r9261, r9262, r9263, r9264, r9265, r9266, r9267, r9268, r9269, r9270, r9271, r9272, r9273, r9274, r9275, r9276, r9277, r9278, r9279, r9280, r9281, r9282, r9283, r9284;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9255);
        mpfr_init_set_str(r9256, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r9257);
        mpfr_init(r9258);
        mpfr_init(r9259);
        mpfr_init(r9260);
        mpfr_init(r9261);
        mpfr_init_set_str(r9262, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9263);
        mpfr_init(r9264);
        mpfr_init(r9265);
        mpfr_init(r9266);
        mpfr_init_set_str(r9267, "-1.1965740506185076e-303", 10, MPFR_RNDN);
        mpfr_init(r9268);
        mpfr_init(r9269);
        mpfr_init(r9270);
        mpfr_init(r9271);
        mpfr_init(r9272);
        mpfr_init(r9273);
        mpfr_init_set_str(r9274, "1.170080853887373e+54", 10, MPFR_RNDN);
        mpfr_init(r9275);
        mpfr_init(r9276);
        mpfr_init(r9277);
        mpfr_init(r9278);
        mpfr_init_set_str(r9279, "-2", 10, MPFR_RNDN);
        mpfr_init(r9280);
        mpfr_init(r9281);
        mpfr_init(r9282);
        mpfr_init(r9283);
        mpfr_init(r9284);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r9255, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r9257, mpfr_cmp(r9255, r9256) <= 0, MPFR_RNDN);
        mpfr_set_d(r9258, c, MPFR_RNDN);
        mpfr_set_d(r9259, a, MPFR_RNDN);
        mpfr_mul(r9260, r9259, r9258, MPFR_RNDN);
        mpfr_div(r9261, r9260, r9255, MPFR_RNDN);
        ;
        mpfr_mul(r9263, r9261, r9262, MPFR_RNDN);
        mpfr_sub(r9264, r9263, r9255, MPFR_RNDN);
        mpfr_sub(r9265, r9264, r9255, MPFR_RNDN);
        mpfr_div(r9266, r9258, r9265, MPFR_RNDN);
        ;
        mpfr_set_si(r9268, mpfr_cmp(r9255, r9267) <= 0, MPFR_RNDN);
        mpfr_mul(r9269, r9255, r9255, MPFR_RNDN);
        mpfr_sub(r9270, r9269, r9260, MPFR_RNDN);
        mpfr_sqrt(r9271, r9270, MPFR_RNDN);
        mpfr_sub(r9272, r9271, r9255, MPFR_RNDN);
        mpfr_div(r9273, r9258, r9272, MPFR_RNDN);
        ;
        mpfr_set_si(r9275, mpfr_cmp(r9255, r9274) <= 0, MPFR_RNDN);
        mpfr_neg(r9276, r9255, MPFR_RNDN);
        mpfr_sub(r9277, r9276, r9271, MPFR_RNDN);
        mpfr_div(r9278, r9277, r9259, MPFR_RNDN);
        ;
        mpfr_div(r9280, r9255, r9259, MPFR_RNDN);
        mpfr_mul(r9281, r9279, r9280, MPFR_RNDN);
        if (mpfr_get_si(r9275, MPFR_RNDN)) { mpfr_set(r9282, r9278, MPFR_RNDN); } else { mpfr_set(r9282, r9281, MPFR_RNDN); };
        if (mpfr_get_si(r9268, MPFR_RNDN)) { mpfr_set(r9283, r9273, MPFR_RNDN); } else { mpfr_set(r9283, r9282, MPFR_RNDN); };
        if (mpfr_get_si(r9257, MPFR_RNDN)) { mpfr_set(r9284, r9266, MPFR_RNDN); } else { mpfr_set(r9284, r9283, MPFR_RNDN); };
        return mpfr_get_d(r9284, MPFR_RNDN);
}

static mpfr_t r9285, r9286, r9287, r9288, r9289, r9290, r9291, r9292, r9293, r9294, r9295, r9296, r9297, r9298, r9299, r9300, r9301, r9302, r9303, r9304, r9305, r9306, r9307, r9308, r9309, r9310, r9311, r9312, r9313, r9314;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9285);
        mpfr_init_set_str(r9286, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r9287);
        mpfr_init(r9288);
        mpfr_init(r9289);
        mpfr_init(r9290);
        mpfr_init(r9291);
        mpfr_init_set_str(r9292, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9293);
        mpfr_init(r9294);
        mpfr_init(r9295);
        mpfr_init(r9296);
        mpfr_init_set_str(r9297, "-1.1965740506185076e-303", 10, MPFR_RNDN);
        mpfr_init(r9298);
        mpfr_init(r9299);
        mpfr_init(r9300);
        mpfr_init(r9301);
        mpfr_init(r9302);
        mpfr_init(r9303);
        mpfr_init_set_str(r9304, "1.170080853887373e+54", 10, MPFR_RNDN);
        mpfr_init(r9305);
        mpfr_init(r9306);
        mpfr_init(r9307);
        mpfr_init(r9308);
        mpfr_init_set_str(r9309, "-2", 10, MPFR_RNDN);
        mpfr_init(r9310);
        mpfr_init(r9311);
        mpfr_init(r9312);
        mpfr_init(r9313);
        mpfr_init(r9314);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r9285, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r9287, mpfr_cmp(r9285, r9286) <= 0, MPFR_RNDN);
        mpfr_set_d(r9288, c, MPFR_RNDN);
        mpfr_set_d(r9289, a, MPFR_RNDN);
        mpfr_mul(r9290, r9289, r9288, MPFR_RNDN);
        mpfr_div(r9291, r9290, r9285, MPFR_RNDN);
        ;
        mpfr_mul(r9293, r9291, r9292, MPFR_RNDN);
        mpfr_sub(r9294, r9293, r9285, MPFR_RNDN);
        mpfr_sub(r9295, r9294, r9285, MPFR_RNDN);
        mpfr_div(r9296, r9288, r9295, MPFR_RNDN);
        ;
        mpfr_set_si(r9298, mpfr_cmp(r9285, r9297) <= 0, MPFR_RNDN);
        mpfr_mul(r9299, r9285, r9285, MPFR_RNDN);
        mpfr_sub(r9300, r9299, r9290, MPFR_RNDN);
        mpfr_sqrt(r9301, r9300, MPFR_RNDN);
        mpfr_sub(r9302, r9301, r9285, MPFR_RNDN);
        mpfr_div(r9303, r9288, r9302, MPFR_RNDN);
        ;
        mpfr_set_si(r9305, mpfr_cmp(r9285, r9304) <= 0, MPFR_RNDN);
        mpfr_neg(r9306, r9285, MPFR_RNDN);
        mpfr_sub(r9307, r9306, r9301, MPFR_RNDN);
        mpfr_div(r9308, r9307, r9289, MPFR_RNDN);
        ;
        mpfr_div(r9310, r9285, r9289, MPFR_RNDN);
        mpfr_mul(r9311, r9309, r9310, MPFR_RNDN);
        if (mpfr_get_si(r9305, MPFR_RNDN)) { mpfr_set(r9312, r9308, MPFR_RNDN); } else { mpfr_set(r9312, r9311, MPFR_RNDN); };
        if (mpfr_get_si(r9298, MPFR_RNDN)) { mpfr_set(r9313, r9303, MPFR_RNDN); } else { mpfr_set(r9313, r9312, MPFR_RNDN); };
        if (mpfr_get_si(r9287, MPFR_RNDN)) { mpfr_set(r9314, r9296, MPFR_RNDN); } else { mpfr_set(r9314, r9313, MPFR_RNDN); };
        return mpfr_get_d(r9314, MPFR_RNDN);
}

