#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 r21192 = b;
        float r21193 = -r21192;
        float r21194 = r21192 * r21192;
        float r21195 = 4;
        float r21196 = a;
        float r21197 = r21195 * r21196;
        float r21198 = c;
        float r21199 = r21197 * r21198;
        float r21200 = r21194 - r21199;
        float r21201 = sqrt(r21200);
        float r21202 = r21193 + r21201;
        float r21203 = 2;
        float r21204 = r21203 * r21196;
        float r21205 = r21202 / r21204;
        return r21205;
}

double f_id(double a, double b, double c) {
        double r21206 = b;
        double r21207 = -r21206;
        double r21208 = r21206 * r21206;
        double r21209 = 4;
        double r21210 = a;
        double r21211 = r21209 * r21210;
        double r21212 = c;
        double r21213 = r21211 * r21212;
        double r21214 = r21208 - r21213;
        double r21215 = sqrt(r21214);
        double r21216 = r21207 + r21215;
        double r21217 = 2;
        double r21218 = r21217 * r21210;
        double r21219 = r21216 / r21218;
        return r21219;
}


double f_of(float a, float b, float c) {
        float r21220 = b;
        float r21221 = -1.3907652222998155e+110;
        bool r21222 = r21220 <= r21221;
        float r21223 = c;
        float r21224 = r21223 / r21220;
        float r21225 = 1;
        float r21226 = r21224 / r21225;
        float r21227 = a;
        float r21228 = r21220 / r21227;
        float r21229 = r21226 - r21228;
        float r21230 = 1.3192368517509897e-110;
        bool r21231 = r21220 <= r21230;
        float r21232 = 2;
        float r21233 = r21232 * r21227;
        float r21234 = -r21220;
        float r21235 = r21220 * r21220;
        float r21236 = 4;
        float r21237 = r21236 * r21227;
        float r21238 = r21237 * r21223;
        float r21239 = r21235 - r21238;
        float r21240 = sqrt(r21239);
        float r21241 = r21234 + r21240;
        float r21242 = r21233 / r21241;
        float r21243 = r21225 / r21242;
        float r21244 = 6.578629845313264e+85;
        bool r21245 = r21220 <= r21244;
        float r21246 = r21227 * r21223;
        float r21247 = r21236 * r21246;
        float r21248 = r21234 - r21240;
        float r21249 = r21247 / r21248;
        float r21250 = r21249 / r21233;
        float r21251 = +inf.0;
        bool r21252 = r21220 <= r21251;
        float r21253 = -2;
        float r21254 = r21253 / r21232;
        float r21255 = r21224 * r21254;
        float r21256 = r21252 ? r21255 : r21255;
        float r21257 = r21245 ? r21250 : r21256;
        float r21258 = r21231 ? r21243 : r21257;
        float r21259 = r21222 ? r21229 : r21258;
        return r21259;
}

double f_od(double a, double b, double c) {
        double r21260 = b;
        double r21261 = -1.3907652222998155e+110;
        bool r21262 = r21260 <= r21261;
        double r21263 = c;
        double r21264 = r21263 / r21260;
        double r21265 = 1;
        double r21266 = r21264 / r21265;
        double r21267 = a;
        double r21268 = r21260 / r21267;
        double r21269 = r21266 - r21268;
        double r21270 = 1.3192368517509897e-110;
        bool r21271 = r21260 <= r21270;
        double r21272 = 2;
        double r21273 = r21272 * r21267;
        double r21274 = -r21260;
        double r21275 = r21260 * r21260;
        double r21276 = 4;
        double r21277 = r21276 * r21267;
        double r21278 = r21277 * r21263;
        double r21279 = r21275 - r21278;
        double r21280 = sqrt(r21279);
        double r21281 = r21274 + r21280;
        double r21282 = r21273 / r21281;
        double r21283 = r21265 / r21282;
        double r21284 = 6.578629845313264e+85;
        bool r21285 = r21260 <= r21284;
        double r21286 = r21267 * r21263;
        double r21287 = r21276 * r21286;
        double r21288 = r21274 - r21280;
        double r21289 = r21287 / r21288;
        double r21290 = r21289 / r21273;
        double r21291 = +inf.0;
        bool r21292 = r21260 <= r21291;
        double r21293 = -2;
        double r21294 = r21293 / r21272;
        double r21295 = r21264 * r21294;
        double r21296 = r21292 ? r21295 : r21295;
        double r21297 = r21285 ? r21290 : r21296;
        double r21298 = r21271 ? r21283 : r21297;
        double r21299 = r21262 ? r21269 : r21298;
        return r21299;
}

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 r21300, r21301, r21302, r21303, r21304, r21305, r21306, r21307, r21308, r21309, r21310, r21311, r21312, r21313;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21300);
        mpfr_init(r21301);
        mpfr_init(r21302);
        mpfr_init_set_str(r21303, "4", 10, MPFR_RNDN);
        mpfr_init(r21304);
        mpfr_init(r21305);
        mpfr_init(r21306);
        mpfr_init(r21307);
        mpfr_init(r21308);
        mpfr_init(r21309);
        mpfr_init(r21310);
        mpfr_init_set_str(r21311, "2", 10, MPFR_RNDN);
        mpfr_init(r21312);
        mpfr_init(r21313);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r21300, b, MPFR_RNDN);
        mpfr_neg(r21301, r21300, MPFR_RNDN);
        mpfr_mul(r21302, r21300, r21300, MPFR_RNDN);
        ;
        mpfr_set_d(r21304, a, MPFR_RNDN);
        mpfr_mul(r21305, r21303, r21304, MPFR_RNDN);
        mpfr_set_d(r21306, c, MPFR_RNDN);
        mpfr_mul(r21307, r21305, r21306, MPFR_RNDN);
        mpfr_sub(r21308, r21302, r21307, MPFR_RNDN);
        mpfr_sqrt(r21309, r21308, MPFR_RNDN);
        mpfr_add(r21310, r21301, r21309, MPFR_RNDN);
        ;
        mpfr_mul(r21312, r21311, r21304, MPFR_RNDN);
        mpfr_div(r21313, r21310, r21312, MPFR_RNDN);
        return mpfr_get_d(r21313, MPFR_RNDN);
}

static mpfr_t 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, r21348, r21349, r21350, r21351, r21352, r21353;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21314);
        mpfr_init_set_str(r21315, "-1.3907652222998155e+110", 10, MPFR_RNDN);
        mpfr_init(r21316);
        mpfr_init(r21317);
        mpfr_init(r21318);
        mpfr_init_set_str(r21319, "1", 10, MPFR_RNDN);
        mpfr_init(r21320);
        mpfr_init(r21321);
        mpfr_init(r21322);
        mpfr_init(r21323);
        mpfr_init_set_str(r21324, "1.3192368517509897e-110", 10, MPFR_RNDN);
        mpfr_init(r21325);
        mpfr_init_set_str(r21326, "2", 10, MPFR_RNDN);
        mpfr_init(r21327);
        mpfr_init(r21328);
        mpfr_init(r21329);
        mpfr_init_set_str(r21330, "4", 10, MPFR_RNDN);
        mpfr_init(r21331);
        mpfr_init(r21332);
        mpfr_init(r21333);
        mpfr_init(r21334);
        mpfr_init(r21335);
        mpfr_init(r21336);
        mpfr_init(r21337);
        mpfr_init_set_str(r21338, "6.578629845313264e+85", 10, MPFR_RNDN);
        mpfr_init(r21339);
        mpfr_init(r21340);
        mpfr_init(r21341);
        mpfr_init(r21342);
        mpfr_init(r21343);
        mpfr_init(r21344);
        mpfr_init_set_str(r21345, "+inf.0", 10, MPFR_RNDN);
        mpfr_init(r21346);
        mpfr_init_set_str(r21347, "-2", 10, MPFR_RNDN);
        mpfr_init(r21348);
        mpfr_init(r21349);
        mpfr_init(r21350);
        mpfr_init(r21351);
        mpfr_init(r21352);
        mpfr_init(r21353);
}

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

static mpfr_t r21354, r21355, r21356, r21357, r21358, r21359, r21360, r21361, r21362, r21363, r21364, r21365, r21366, r21367, r21368, r21369, r21370, r21371, r21372, r21373, r21374, r21375, r21376, r21377, r21378, r21379, r21380, r21381, r21382, r21383, r21384, r21385, r21386, r21387, r21388, r21389, r21390, r21391, r21392, r21393;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21354);
        mpfr_init_set_str(r21355, "-1.3907652222998155e+110", 10, MPFR_RNDN);
        mpfr_init(r21356);
        mpfr_init(r21357);
        mpfr_init(r21358);
        mpfr_init_set_str(r21359, "1", 10, MPFR_RNDN);
        mpfr_init(r21360);
        mpfr_init(r21361);
        mpfr_init(r21362);
        mpfr_init(r21363);
        mpfr_init_set_str(r21364, "1.3192368517509897e-110", 10, MPFR_RNDN);
        mpfr_init(r21365);
        mpfr_init_set_str(r21366, "2", 10, MPFR_RNDN);
        mpfr_init(r21367);
        mpfr_init(r21368);
        mpfr_init(r21369);
        mpfr_init_set_str(r21370, "4", 10, MPFR_RNDN);
        mpfr_init(r21371);
        mpfr_init(r21372);
        mpfr_init(r21373);
        mpfr_init(r21374);
        mpfr_init(r21375);
        mpfr_init(r21376);
        mpfr_init(r21377);
        mpfr_init_set_str(r21378, "6.578629845313264e+85", 10, MPFR_RNDN);
        mpfr_init(r21379);
        mpfr_init(r21380);
        mpfr_init(r21381);
        mpfr_init(r21382);
        mpfr_init(r21383);
        mpfr_init(r21384);
        mpfr_init_set_str(r21385, "+inf.0", 10, MPFR_RNDN);
        mpfr_init(r21386);
        mpfr_init_set_str(r21387, "-2", 10, MPFR_RNDN);
        mpfr_init(r21388);
        mpfr_init(r21389);
        mpfr_init(r21390);
        mpfr_init(r21391);
        mpfr_init(r21392);
        mpfr_init(r21393);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r21354, b, MPFR_RNDN);
        ;
        mpfr_set_si(r21356, mpfr_cmp(r21354, r21355) <= 0, MPFR_RNDN);
        mpfr_set_d(r21357, c, MPFR_RNDN);
        mpfr_div(r21358, r21357, r21354, MPFR_RNDN);
        ;
        mpfr_div(r21360, r21358, r21359, MPFR_RNDN);
        mpfr_set_d(r21361, a, MPFR_RNDN);
        mpfr_div(r21362, r21354, r21361, MPFR_RNDN);
        mpfr_sub(r21363, r21360, r21362, MPFR_RNDN);
        ;
        mpfr_set_si(r21365, mpfr_cmp(r21354, r21364) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r21367, r21366, r21361, MPFR_RNDN);
        mpfr_neg(r21368, r21354, MPFR_RNDN);
        mpfr_mul(r21369, r21354, r21354, MPFR_RNDN);
        ;
        mpfr_mul(r21371, r21370, r21361, MPFR_RNDN);
        mpfr_mul(r21372, r21371, r21357, MPFR_RNDN);
        mpfr_sub(r21373, r21369, r21372, MPFR_RNDN);
        mpfr_sqrt(r21374, r21373, MPFR_RNDN);
        mpfr_add(r21375, r21368, r21374, MPFR_RNDN);
        mpfr_div(r21376, r21367, r21375, MPFR_RNDN);
        mpfr_div(r21377, r21359, r21376, MPFR_RNDN);
        ;
        mpfr_set_si(r21379, mpfr_cmp(r21354, r21378) <= 0, MPFR_RNDN);
        mpfr_mul(r21380, r21361, r21357, MPFR_RNDN);
        mpfr_mul(r21381, r21370, r21380, MPFR_RNDN);
        mpfr_sub(r21382, r21368, r21374, MPFR_RNDN);
        mpfr_div(r21383, r21381, r21382, MPFR_RNDN);
        mpfr_div(r21384, r21383, r21367, MPFR_RNDN);
        ;
        mpfr_set_si(r21386, mpfr_cmp(r21354, r21385) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r21388, r21387, r21366, MPFR_RNDN);
        mpfr_mul(r21389, r21358, r21388, MPFR_RNDN);
        if (mpfr_get_si(r21386, MPFR_RNDN)) { mpfr_set(r21390, r21389, MPFR_RNDN); } else { mpfr_set(r21390, r21389, MPFR_RNDN); };
        if (mpfr_get_si(r21379, MPFR_RNDN)) { mpfr_set(r21391, r21384, MPFR_RNDN); } else { mpfr_set(r21391, r21390, MPFR_RNDN); };
        if (mpfr_get_si(r21365, MPFR_RNDN)) { mpfr_set(r21392, r21377, MPFR_RNDN); } else { mpfr_set(r21392, r21391, MPFR_RNDN); };
        if (mpfr_get_si(r21356, MPFR_RNDN)) { mpfr_set(r21393, r21363, MPFR_RNDN); } else { mpfr_set(r21393, r21392, MPFR_RNDN); };
        return mpfr_get_d(r21393, MPFR_RNDN);
}

