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

char *name = "Quadratic roots, full range";

double f_if(float a, float b, float c) {
        float r21162 = b;
        float r21163 = -r21162;
        float r21164 = r21162 * r21162;
        float r21165 = 4;
        float r21166 = a;
        float r21167 = r21165 * r21166;
        float r21168 = c;
        float r21169 = r21167 * r21168;
        float r21170 = r21164 - r21169;
        float r21171 = sqrt(r21170);
        float r21172 = r21163 + r21171;
        float r21173 = 2;
        float r21174 = r21173 * r21166;
        float r21175 = r21172 / r21174;
        return r21175;
}

double f_id(double a, double b, double c) {
        double r21176 = b;
        double r21177 = -r21176;
        double r21178 = r21176 * r21176;
        double r21179 = 4;
        double r21180 = a;
        double r21181 = r21179 * r21180;
        double r21182 = c;
        double r21183 = r21181 * r21182;
        double r21184 = r21178 - r21183;
        double r21185 = sqrt(r21184);
        double r21186 = r21177 + r21185;
        double r21187 = 2;
        double r21188 = r21187 * r21180;
        double r21189 = r21186 / r21188;
        return r21189;
}


double f_of(float a, float b, float c) {
        float r21190 = b;
        float r21191 = -r21190;
        float r21192 = -57.05332371598462;
        bool r21193 = r21191 <= r21192;
        float r21194 = c;
        float r21195 = r21194 / r21190;
        float r21196 = -2;
        float r21197 = 2;
        float r21198 = r21196 / r21197;
        float r21199 = r21195 * r21198;
        float r21200 = -6.041090339021061e-192;
        bool r21201 = r21191 <= r21200;
        float r21202 = 4;
        float r21203 = a;
        float r21204 = r21203 * r21194;
        float r21205 = r21202 * r21204;
        float r21206 = r21190 * r21190;
        float r21207 = r21202 * r21203;
        float r21208 = r21207 * r21194;
        float r21209 = r21206 - r21208;
        float r21210 = sqrt(r21209);
        float r21211 = r21191 - r21210;
        float r21212 = r21205 / r21211;
        float r21213 = r21197 * r21203;
        float r21214 = r21212 / r21213;
        float r21215 = 1.5285447525713952e+127;
        bool r21216 = r21191 <= r21215;
        float r21217 = r21191 + r21210;
        float r21218 = r21217 / r21213;
        float r21219 = r21190 / r21203;
        float r21220 = r21194 / r21219;
        float r21221 = r21220 - r21190;
        float r21222 = r21221 / r21203;
        float r21223 = r21216 ? r21218 : r21222;
        float r21224 = r21201 ? r21214 : r21223;
        float r21225 = r21193 ? r21199 : r21224;
        return r21225;
}

double f_od(double a, double b, double c) {
        double r21226 = b;
        double r21227 = -r21226;
        double r21228 = -57.05332371598462;
        bool r21229 = r21227 <= r21228;
        double r21230 = c;
        double r21231 = r21230 / r21226;
        double r21232 = -2;
        double r21233 = 2;
        double r21234 = r21232 / r21233;
        double r21235 = r21231 * r21234;
        double r21236 = -6.041090339021061e-192;
        bool r21237 = r21227 <= r21236;
        double r21238 = 4;
        double r21239 = a;
        double r21240 = r21239 * r21230;
        double r21241 = r21238 * r21240;
        double r21242 = r21226 * r21226;
        double r21243 = r21238 * r21239;
        double r21244 = r21243 * r21230;
        double r21245 = r21242 - r21244;
        double r21246 = sqrt(r21245);
        double r21247 = r21227 - r21246;
        double r21248 = r21241 / r21247;
        double r21249 = r21233 * r21239;
        double r21250 = r21248 / r21249;
        double r21251 = 1.5285447525713952e+127;
        bool r21252 = r21227 <= r21251;
        double r21253 = r21227 + r21246;
        double r21254 = r21253 / r21249;
        double r21255 = r21226 / r21239;
        double r21256 = r21230 / r21255;
        double r21257 = r21256 - r21226;
        double r21258 = r21257 / r21239;
        double r21259 = r21252 ? r21254 : r21258;
        double r21260 = r21237 ? r21250 : r21259;
        double r21261 = r21229 ? r21235 : r21260;
        return r21261;
}

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 r21262, r21263, r21264, r21265, r21266, r21267, r21268, r21269, r21270, r21271, r21272, r21273, r21274, r21275;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21262);
        mpfr_init(r21263);
        mpfr_init(r21264);
        mpfr_init_set_str(r21265, "4", 10, MPFR_RNDN);
        mpfr_init(r21266);
        mpfr_init(r21267);
        mpfr_init(r21268);
        mpfr_init(r21269);
        mpfr_init(r21270);
        mpfr_init(r21271);
        mpfr_init(r21272);
        mpfr_init_set_str(r21273, "2", 10, MPFR_RNDN);
        mpfr_init(r21274);
        mpfr_init(r21275);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r21262, b, MPFR_RNDN);
        mpfr_neg(r21263, r21262, MPFR_RNDN);
        mpfr_mul(r21264, r21262, r21262, MPFR_RNDN);
        ;
        mpfr_set_d(r21266, a, MPFR_RNDN);
        mpfr_mul(r21267, r21265, r21266, MPFR_RNDN);
        mpfr_set_d(r21268, c, MPFR_RNDN);
        mpfr_mul(r21269, r21267, r21268, MPFR_RNDN);
        mpfr_sub(r21270, r21264, r21269, MPFR_RNDN);
        mpfr_sqrt(r21271, r21270, MPFR_RNDN);
        mpfr_add(r21272, r21263, r21271, MPFR_RNDN);
        ;
        mpfr_mul(r21274, r21273, r21266, MPFR_RNDN);
        mpfr_div(r21275, r21272, r21274, MPFR_RNDN);
        return mpfr_get_d(r21275, MPFR_RNDN);
}

static mpfr_t r21276, r21277, r21278, r21279, r21280, r21281, r21282, r21283, r21284, r21285, r21286, r21287, r21288, r21289, r21290, r21291, r21292, r21293, r21294, r21295, r21296, r21297, r21298, r21299, r21300, r21301, r21302, r21303, r21304, r21305, r21306, r21307, r21308, r21309, r21310, r21311;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21276);
        mpfr_init(r21277);
        mpfr_init_set_str(r21278, "-57.05332371598462", 10, MPFR_RNDN);
        mpfr_init(r21279);
        mpfr_init(r21280);
        mpfr_init(r21281);
        mpfr_init_set_str(r21282, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r21283, "2", 10, MPFR_RNDN);
        mpfr_init(r21284);
        mpfr_init(r21285);
        mpfr_init_set_str(r21286, "-6.041090339021061e-192", 10, MPFR_RNDN);
        mpfr_init(r21287);
        mpfr_init_set_str(r21288, "4", 10, MPFR_RNDN);
        mpfr_init(r21289);
        mpfr_init(r21290);
        mpfr_init(r21291);
        mpfr_init(r21292);
        mpfr_init(r21293);
        mpfr_init(r21294);
        mpfr_init(r21295);
        mpfr_init(r21296);
        mpfr_init(r21297);
        mpfr_init(r21298);
        mpfr_init(r21299);
        mpfr_init(r21300);
        mpfr_init_set_str(r21301, "1.5285447525713952e+127", 10, MPFR_RNDN);
        mpfr_init(r21302);
        mpfr_init(r21303);
        mpfr_init(r21304);
        mpfr_init(r21305);
        mpfr_init(r21306);
        mpfr_init(r21307);
        mpfr_init(r21308);
        mpfr_init(r21309);
        mpfr_init(r21310);
        mpfr_init(r21311);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r21276, b, MPFR_RNDN);
        mpfr_neg(r21277, r21276, MPFR_RNDN);
        ;
        mpfr_set_si(r21279, mpfr_cmp(r21277, r21278) <= 0, MPFR_RNDN);
        mpfr_set_d(r21280, c, MPFR_RNDN);
        mpfr_div(r21281, r21280, r21276, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21284, r21282, r21283, MPFR_RNDN);
        mpfr_mul(r21285, r21281, r21284, MPFR_RNDN);
        ;
        mpfr_set_si(r21287, mpfr_cmp(r21277, r21286) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r21289, a, MPFR_RNDN);
        mpfr_mul(r21290, r21289, r21280, MPFR_RNDN);
        mpfr_mul(r21291, r21288, r21290, MPFR_RNDN);
        mpfr_mul(r21292, r21276, r21276, MPFR_RNDN);
        mpfr_mul(r21293, r21288, r21289, MPFR_RNDN);
        mpfr_mul(r21294, r21293, r21280, MPFR_RNDN);
        mpfr_sub(r21295, r21292, r21294, MPFR_RNDN);
        mpfr_sqrt(r21296, r21295, MPFR_RNDN);
        mpfr_sub(r21297, r21277, r21296, MPFR_RNDN);
        mpfr_div(r21298, r21291, r21297, MPFR_RNDN);
        mpfr_mul(r21299, r21283, r21289, MPFR_RNDN);
        mpfr_div(r21300, r21298, r21299, MPFR_RNDN);
        ;
        mpfr_set_si(r21302, mpfr_cmp(r21277, r21301) <= 0, MPFR_RNDN);
        mpfr_add(r21303, r21277, r21296, MPFR_RNDN);
        mpfr_div(r21304, r21303, r21299, MPFR_RNDN);
        mpfr_div(r21305, r21276, r21289, MPFR_RNDN);
        mpfr_div(r21306, r21280, r21305, MPFR_RNDN);
        mpfr_sub(r21307, r21306, r21276, MPFR_RNDN);
        mpfr_div(r21308, r21307, r21289, MPFR_RNDN);
        if (mpfr_get_si(r21302, MPFR_RNDN)) { mpfr_set(r21309, r21304, MPFR_RNDN); } else { mpfr_set(r21309, r21308, MPFR_RNDN); };
        if (mpfr_get_si(r21287, MPFR_RNDN)) { mpfr_set(r21310, r21300, MPFR_RNDN); } else { mpfr_set(r21310, r21309, MPFR_RNDN); };
        if (mpfr_get_si(r21279, MPFR_RNDN)) { mpfr_set(r21311, r21285, MPFR_RNDN); } else { mpfr_set(r21311, r21310, MPFR_RNDN); };
        return mpfr_get_d(r21311, MPFR_RNDN);
}

static mpfr_t r21312, r21313, r21314, r21315, r21316, r21317, r21318, r21319, r21320, r21321, r21322, r21323, r21324, r21325, r21326, r21327, r21328, r21329, r21330, r21331, r21332, r21333, r21334, r21335, r21336, r21337, r21338, r21339, r21340, r21341, r21342, r21343, r21344, r21345, r21346, r21347;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21312);
        mpfr_init(r21313);
        mpfr_init_set_str(r21314, "-57.05332371598462", 10, MPFR_RNDN);
        mpfr_init(r21315);
        mpfr_init(r21316);
        mpfr_init(r21317);
        mpfr_init_set_str(r21318, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r21319, "2", 10, MPFR_RNDN);
        mpfr_init(r21320);
        mpfr_init(r21321);
        mpfr_init_set_str(r21322, "-6.041090339021061e-192", 10, MPFR_RNDN);
        mpfr_init(r21323);
        mpfr_init_set_str(r21324, "4", 10, MPFR_RNDN);
        mpfr_init(r21325);
        mpfr_init(r21326);
        mpfr_init(r21327);
        mpfr_init(r21328);
        mpfr_init(r21329);
        mpfr_init(r21330);
        mpfr_init(r21331);
        mpfr_init(r21332);
        mpfr_init(r21333);
        mpfr_init(r21334);
        mpfr_init(r21335);
        mpfr_init(r21336);
        mpfr_init_set_str(r21337, "1.5285447525713952e+127", 10, MPFR_RNDN);
        mpfr_init(r21338);
        mpfr_init(r21339);
        mpfr_init(r21340);
        mpfr_init(r21341);
        mpfr_init(r21342);
        mpfr_init(r21343);
        mpfr_init(r21344);
        mpfr_init(r21345);
        mpfr_init(r21346);
        mpfr_init(r21347);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r21312, b, MPFR_RNDN);
        mpfr_neg(r21313, r21312, MPFR_RNDN);
        ;
        mpfr_set_si(r21315, mpfr_cmp(r21313, r21314) <= 0, MPFR_RNDN);
        mpfr_set_d(r21316, c, MPFR_RNDN);
        mpfr_div(r21317, r21316, r21312, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21320, r21318, r21319, MPFR_RNDN);
        mpfr_mul(r21321, r21317, r21320, MPFR_RNDN);
        ;
        mpfr_set_si(r21323, mpfr_cmp(r21313, r21322) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r21325, a, MPFR_RNDN);
        mpfr_mul(r21326, r21325, r21316, MPFR_RNDN);
        mpfr_mul(r21327, r21324, r21326, MPFR_RNDN);
        mpfr_mul(r21328, r21312, r21312, MPFR_RNDN);
        mpfr_mul(r21329, r21324, r21325, MPFR_RNDN);
        mpfr_mul(r21330, r21329, r21316, MPFR_RNDN);
        mpfr_sub(r21331, r21328, r21330, MPFR_RNDN);
        mpfr_sqrt(r21332, r21331, MPFR_RNDN);
        mpfr_sub(r21333, r21313, r21332, MPFR_RNDN);
        mpfr_div(r21334, r21327, r21333, MPFR_RNDN);
        mpfr_mul(r21335, r21319, r21325, MPFR_RNDN);
        mpfr_div(r21336, r21334, r21335, MPFR_RNDN);
        ;
        mpfr_set_si(r21338, mpfr_cmp(r21313, r21337) <= 0, MPFR_RNDN);
        mpfr_add(r21339, r21313, r21332, MPFR_RNDN);
        mpfr_div(r21340, r21339, r21335, MPFR_RNDN);
        mpfr_div(r21341, r21312, r21325, MPFR_RNDN);
        mpfr_div(r21342, r21316, r21341, MPFR_RNDN);
        mpfr_sub(r21343, r21342, r21312, MPFR_RNDN);
        mpfr_div(r21344, r21343, r21325, MPFR_RNDN);
        if (mpfr_get_si(r21338, MPFR_RNDN)) { mpfr_set(r21345, r21340, MPFR_RNDN); } else { mpfr_set(r21345, r21344, MPFR_RNDN); };
        if (mpfr_get_si(r21323, MPFR_RNDN)) { mpfr_set(r21346, r21336, MPFR_RNDN); } else { mpfr_set(r21346, r21345, MPFR_RNDN); };
        if (mpfr_get_si(r21315, MPFR_RNDN)) { mpfr_set(r21347, r21321, MPFR_RNDN); } else { mpfr_set(r21347, r21346, MPFR_RNDN); };
        return mpfr_get_d(r21347, MPFR_RNDN);
}

