#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 r21152 = b;
        float r21153 = -r21152;
        float r21154 = r21152 * r21152;
        float r21155 = 4;
        float r21156 = a;
        float r21157 = r21155 * r21156;
        float r21158 = c;
        float r21159 = r21157 * r21158;
        float r21160 = r21154 - r21159;
        float r21161 = sqrt(r21160);
        float r21162 = r21153 + r21161;
        float r21163 = 2;
        float r21164 = r21163 * r21156;
        float r21165 = r21162 / r21164;
        return r21165;
}

double f_id(double a, double b, double c) {
        double r21166 = b;
        double r21167 = -r21166;
        double r21168 = r21166 * r21166;
        double r21169 = 4;
        double r21170 = a;
        double r21171 = r21169 * r21170;
        double r21172 = c;
        double r21173 = r21171 * r21172;
        double r21174 = r21168 - r21173;
        double r21175 = sqrt(r21174);
        double r21176 = r21167 + r21175;
        double r21177 = 2;
        double r21178 = r21177 * r21170;
        double r21179 = r21176 / r21178;
        return r21179;
}


double f_of(float a, float b, float c) {
        float r21180 = b;
        float r21181 = -4.454804573053783e+70;
        bool r21182 = r21180 <= r21181;
        float r21183 = c;
        float r21184 = r21183 / r21180;
        float r21185 = 1;
        float r21186 = r21184 / r21185;
        float r21187 = a;
        float r21188 = r21180 / r21187;
        float r21189 = r21186 - r21188;
        float r21190 = 1.4896917726765824e-150;
        bool r21191 = r21180 <= r21190;
        float r21192 = -r21180;
        float r21193 = r21180 * r21180;
        float r21194 = 4;
        float r21195 = r21194 * r21187;
        float r21196 = r21195 * r21183;
        float r21197 = r21193 - r21196;
        float r21198 = sqrt(r21197);
        float r21199 = r21192 + r21198;
        float r21200 = 2;
        float r21201 = r21200 * r21187;
        float r21202 = r21199 / r21201;
        float r21203 = 1.4851602848204136e+88;
        bool r21204 = r21180 <= r21203;
        float r21205 = r21187 * r21183;
        float r21206 = r21194 * r21205;
        float r21207 = r21192 - r21198;
        float r21208 = r21185 / r21207;
        float r21209 = r21206 * r21208;
        float r21210 = r21209 / r21201;
        float r21211 = -2;
        float r21212 = r21211 / r21200;
        float r21213 = r21184 * r21212;
        float r21214 = r21204 ? r21210 : r21213;
        float r21215 = r21191 ? r21202 : r21214;
        float r21216 = r21182 ? r21189 : r21215;
        return r21216;
}

double f_od(double a, double b, double c) {
        double r21217 = b;
        double r21218 = -4.454804573053783e+70;
        bool r21219 = r21217 <= r21218;
        double r21220 = c;
        double r21221 = r21220 / r21217;
        double r21222 = 1;
        double r21223 = r21221 / r21222;
        double r21224 = a;
        double r21225 = r21217 / r21224;
        double r21226 = r21223 - r21225;
        double r21227 = 1.4896917726765824e-150;
        bool r21228 = r21217 <= r21227;
        double r21229 = -r21217;
        double r21230 = r21217 * r21217;
        double r21231 = 4;
        double r21232 = r21231 * r21224;
        double r21233 = r21232 * r21220;
        double r21234 = r21230 - r21233;
        double r21235 = sqrt(r21234);
        double r21236 = r21229 + r21235;
        double r21237 = 2;
        double r21238 = r21237 * r21224;
        double r21239 = r21236 / r21238;
        double r21240 = 1.4851602848204136e+88;
        bool r21241 = r21217 <= r21240;
        double r21242 = r21224 * r21220;
        double r21243 = r21231 * r21242;
        double r21244 = r21229 - r21235;
        double r21245 = r21222 / r21244;
        double r21246 = r21243 * r21245;
        double r21247 = r21246 / r21238;
        double r21248 = -2;
        double r21249 = r21248 / r21237;
        double r21250 = r21221 * r21249;
        double r21251 = r21241 ? r21247 : r21250;
        double r21252 = r21228 ? r21239 : r21251;
        double r21253 = r21219 ? r21226 : r21252;
        return r21253;
}

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 r21254, r21255, r21256, r21257, r21258, r21259, r21260, r21261, r21262, r21263, r21264, r21265, r21266, r21267;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21254);
        mpfr_init(r21255);
        mpfr_init(r21256);
        mpfr_init_set_str(r21257, "4", 10, MPFR_RNDN);
        mpfr_init(r21258);
        mpfr_init(r21259);
        mpfr_init(r21260);
        mpfr_init(r21261);
        mpfr_init(r21262);
        mpfr_init(r21263);
        mpfr_init(r21264);
        mpfr_init_set_str(r21265, "2", 10, MPFR_RNDN);
        mpfr_init(r21266);
        mpfr_init(r21267);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r21254, b, MPFR_RNDN);
        mpfr_neg(r21255, r21254, MPFR_RNDN);
        mpfr_mul(r21256, r21254, r21254, MPFR_RNDN);
        ;
        mpfr_set_d(r21258, a, MPFR_RNDN);
        mpfr_mul(r21259, r21257, r21258, MPFR_RNDN);
        mpfr_set_d(r21260, c, MPFR_RNDN);
        mpfr_mul(r21261, r21259, r21260, MPFR_RNDN);
        mpfr_sub(r21262, r21256, r21261, MPFR_RNDN);
        mpfr_sqrt(r21263, r21262, MPFR_RNDN);
        mpfr_add(r21264, r21255, r21263, MPFR_RNDN);
        ;
        mpfr_mul(r21266, r21265, r21258, MPFR_RNDN);
        mpfr_div(r21267, r21264, r21266, MPFR_RNDN);
        return mpfr_get_d(r21267, MPFR_RNDN);
}

static mpfr_t r21268, r21269, r21270, r21271, r21272, r21273, r21274, r21275, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21268);
        mpfr_init_set_str(r21269, "-4.454804573053783e+70", 10, MPFR_RNDN);
        mpfr_init(r21270);
        mpfr_init(r21271);
        mpfr_init(r21272);
        mpfr_init_set_str(r21273, "1", 10, MPFR_RNDN);
        mpfr_init(r21274);
        mpfr_init(r21275);
        mpfr_init(r21276);
        mpfr_init(r21277);
        mpfr_init_set_str(r21278, "1.4896917726765824e-150", 10, MPFR_RNDN);
        mpfr_init(r21279);
        mpfr_init(r21280);
        mpfr_init(r21281);
        mpfr_init_set_str(r21282, "4", 10, MPFR_RNDN);
        mpfr_init(r21283);
        mpfr_init(r21284);
        mpfr_init(r21285);
        mpfr_init(r21286);
        mpfr_init(r21287);
        mpfr_init_set_str(r21288, "2", 10, MPFR_RNDN);
        mpfr_init(r21289);
        mpfr_init(r21290);
        mpfr_init_set_str(r21291, "1.4851602848204136e+88", 10, MPFR_RNDN);
        mpfr_init(r21292);
        mpfr_init(r21293);
        mpfr_init(r21294);
        mpfr_init(r21295);
        mpfr_init(r21296);
        mpfr_init(r21297);
        mpfr_init(r21298);
        mpfr_init_set_str(r21299, "-2", 10, MPFR_RNDN);
        mpfr_init(r21300);
        mpfr_init(r21301);
        mpfr_init(r21302);
        mpfr_init(r21303);
        mpfr_init(r21304);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r21268, b, MPFR_RNDN);
        ;
        mpfr_set_si(r21270, mpfr_cmp(r21268, r21269) <= 0, MPFR_RNDN);
        mpfr_set_d(r21271, c, MPFR_RNDN);
        mpfr_div(r21272, r21271, r21268, MPFR_RNDN);
        ;
        mpfr_div(r21274, r21272, r21273, MPFR_RNDN);
        mpfr_set_d(r21275, a, MPFR_RNDN);
        mpfr_div(r21276, r21268, r21275, MPFR_RNDN);
        mpfr_sub(r21277, r21274, r21276, MPFR_RNDN);
        ;
        mpfr_set_si(r21279, mpfr_cmp(r21268, r21278) <= 0, MPFR_RNDN);
        mpfr_neg(r21280, r21268, MPFR_RNDN);
        mpfr_mul(r21281, r21268, r21268, MPFR_RNDN);
        ;
        mpfr_mul(r21283, r21282, r21275, MPFR_RNDN);
        mpfr_mul(r21284, r21283, r21271, MPFR_RNDN);
        mpfr_sub(r21285, r21281, r21284, MPFR_RNDN);
        mpfr_sqrt(r21286, r21285, MPFR_RNDN);
        mpfr_add(r21287, r21280, r21286, MPFR_RNDN);
        ;
        mpfr_mul(r21289, r21288, r21275, MPFR_RNDN);
        mpfr_div(r21290, r21287, r21289, MPFR_RNDN);
        ;
        mpfr_set_si(r21292, mpfr_cmp(r21268, r21291) <= 0, MPFR_RNDN);
        mpfr_mul(r21293, r21275, r21271, MPFR_RNDN);
        mpfr_mul(r21294, r21282, r21293, MPFR_RNDN);
        mpfr_sub(r21295, r21280, r21286, MPFR_RNDN);
        mpfr_div(r21296, r21273, r21295, MPFR_RNDN);
        mpfr_mul(r21297, r21294, r21296, MPFR_RNDN);
        mpfr_div(r21298, r21297, r21289, MPFR_RNDN);
        ;
        mpfr_div(r21300, r21299, r21288, MPFR_RNDN);
        mpfr_mul(r21301, r21272, r21300, MPFR_RNDN);
        if (mpfr_get_si(r21292, MPFR_RNDN)) { mpfr_set(r21302, r21298, MPFR_RNDN); } else { mpfr_set(r21302, r21301, MPFR_RNDN); };
        if (mpfr_get_si(r21279, MPFR_RNDN)) { mpfr_set(r21303, r21290, MPFR_RNDN); } else { mpfr_set(r21303, r21302, MPFR_RNDN); };
        if (mpfr_get_si(r21270, MPFR_RNDN)) { mpfr_set(r21304, r21277, MPFR_RNDN); } else { mpfr_set(r21304, r21303, MPFR_RNDN); };
        return mpfr_get_d(r21304, MPFR_RNDN);
}

static mpfr_t r21305, r21306, r21307, r21308, r21309, r21310, r21311, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21305);
        mpfr_init_set_str(r21306, "-4.454804573053783e+70", 10, MPFR_RNDN);
        mpfr_init(r21307);
        mpfr_init(r21308);
        mpfr_init(r21309);
        mpfr_init_set_str(r21310, "1", 10, MPFR_RNDN);
        mpfr_init(r21311);
        mpfr_init(r21312);
        mpfr_init(r21313);
        mpfr_init(r21314);
        mpfr_init_set_str(r21315, "1.4896917726765824e-150", 10, MPFR_RNDN);
        mpfr_init(r21316);
        mpfr_init(r21317);
        mpfr_init(r21318);
        mpfr_init_set_str(r21319, "4", 10, MPFR_RNDN);
        mpfr_init(r21320);
        mpfr_init(r21321);
        mpfr_init(r21322);
        mpfr_init(r21323);
        mpfr_init(r21324);
        mpfr_init_set_str(r21325, "2", 10, MPFR_RNDN);
        mpfr_init(r21326);
        mpfr_init(r21327);
        mpfr_init_set_str(r21328, "1.4851602848204136e+88", 10, MPFR_RNDN);
        mpfr_init(r21329);
        mpfr_init(r21330);
        mpfr_init(r21331);
        mpfr_init(r21332);
        mpfr_init(r21333);
        mpfr_init(r21334);
        mpfr_init(r21335);
        mpfr_init_set_str(r21336, "-2", 10, MPFR_RNDN);
        mpfr_init(r21337);
        mpfr_init(r21338);
        mpfr_init(r21339);
        mpfr_init(r21340);
        mpfr_init(r21341);
}

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

