#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 r21213 = b;
        float r21214 = -r21213;
        float r21215 = r21213 * r21213;
        float r21216 = 4;
        float r21217 = a;
        float r21218 = r21216 * r21217;
        float r21219 = c;
        float r21220 = r21218 * r21219;
        float r21221 = r21215 - r21220;
        float r21222 = sqrt(r21221);
        float r21223 = r21214 + r21222;
        float r21224 = 2;
        float r21225 = r21224 * r21217;
        float r21226 = r21223 / r21225;
        return r21226;
}

double f_id(double a, double b, double c) {
        double r21227 = b;
        double r21228 = -r21227;
        double r21229 = r21227 * r21227;
        double r21230 = 4;
        double r21231 = a;
        double r21232 = r21230 * r21231;
        double r21233 = c;
        double r21234 = r21232 * r21233;
        double r21235 = r21229 - r21234;
        double r21236 = sqrt(r21235);
        double r21237 = r21228 + r21236;
        double r21238 = 2;
        double r21239 = r21238 * r21231;
        double r21240 = r21237 / r21239;
        return r21240;
}


double f_of(float a, float b, float c) {
        float r21241 = b;
        float r21242 = -r21241;
        float r21243 = -6.192751456905388e-56;
        bool r21244 = r21242 <= r21243;
        float r21245 = 1;
        float r21246 = 2;
        float r21247 = r21245 / r21246;
        float r21248 = c;
        float r21249 = 4;
        float r21250 = r21248 * r21249;
        float r21251 = r21247 * r21250;
        float r21252 = a;
        float r21253 = r21252 / r21241;
        float r21254 = r21253 + r21253;
        float r21255 = r21242 - r21241;
        float r21256 = fma(r21248, r21254, r21255);
        float r21257 = r21251 / r21256;
        float r21258 = 5.212416467940643e+55;
        bool r21259 = r21242 <= r21258;
        float r21260 = r21241 * r21241;
        float r21261 = r21249 * r21252;
        float r21262 = r21261 * r21248;
        float r21263 = r21260 - r21262;
        float r21264 = sqrt(r21263);
        float r21265 = r21242 + r21264;
        float r21266 = r21246 * r21252;
        float r21267 = r21245 / r21266;
        float r21268 = r21265 * r21267;
        float r21269 = r21248 / r21241;
        float r21270 = r21269 / r21245;
        float r21271 = r21241 / r21252;
        float r21272 = r21270 - r21271;
        float r21273 = r21259 ? r21268 : r21272;
        float r21274 = r21244 ? r21257 : r21273;
        return r21274;
}

double f_od(double a, double b, double c) {
        double r21275 = b;
        double r21276 = -r21275;
        double r21277 = -6.192751456905388e-56;
        bool r21278 = r21276 <= r21277;
        double r21279 = 1;
        double r21280 = 2;
        double r21281 = r21279 / r21280;
        double r21282 = c;
        double r21283 = 4;
        double r21284 = r21282 * r21283;
        double r21285 = r21281 * r21284;
        double r21286 = a;
        double r21287 = r21286 / r21275;
        double r21288 = r21287 + r21287;
        double r21289 = r21276 - r21275;
        double r21290 = fma(r21282, r21288, r21289);
        double r21291 = r21285 / r21290;
        double r21292 = 5.212416467940643e+55;
        bool r21293 = r21276 <= r21292;
        double r21294 = r21275 * r21275;
        double r21295 = r21283 * r21286;
        double r21296 = r21295 * r21282;
        double r21297 = r21294 - r21296;
        double r21298 = sqrt(r21297);
        double r21299 = r21276 + r21298;
        double r21300 = r21280 * r21286;
        double r21301 = r21279 / r21300;
        double r21302 = r21299 * r21301;
        double r21303 = r21282 / r21275;
        double r21304 = r21303 / r21279;
        double r21305 = r21275 / r21286;
        double r21306 = r21304 - r21305;
        double r21307 = r21293 ? r21302 : r21306;
        double r21308 = r21278 ? r21291 : r21307;
        return r21308;
}

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 r21309, r21310, r21311, r21312, r21313, r21314, r21315, r21316, r21317, r21318, r21319, r21320, r21321, r21322;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init(r21309);
        mpfr_init(r21310);
        mpfr_init(r21311);
        mpfr_init_set_str(r21312, "4", 10, MPFR_RNDN);
        mpfr_init(r21313);
        mpfr_init(r21314);
        mpfr_init(r21315);
        mpfr_init(r21316);
        mpfr_init(r21317);
        mpfr_init(r21318);
        mpfr_init(r21319);
        mpfr_init_set_str(r21320, "2", 10, MPFR_RNDN);
        mpfr_init(r21321);
        mpfr_init(r21322);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r21309, b, MPFR_RNDN);
        mpfr_neg(r21310, r21309, MPFR_RNDN);
        mpfr_mul(r21311, r21309, r21309, MPFR_RNDN);
        ;
        mpfr_set_d(r21313, a, MPFR_RNDN);
        mpfr_mul(r21314, r21312, r21313, MPFR_RNDN);
        mpfr_set_d(r21315, c, MPFR_RNDN);
        mpfr_mul(r21316, r21314, r21315, MPFR_RNDN);
        mpfr_sub(r21317, r21311, r21316, MPFR_RNDN);
        mpfr_sqrt(r21318, r21317, MPFR_RNDN);
        mpfr_add(r21319, r21310, r21318, MPFR_RNDN);
        ;
        mpfr_mul(r21321, r21320, r21313, MPFR_RNDN);
        mpfr_div(r21322, r21319, r21321, MPFR_RNDN);
        return mpfr_get_d(r21322, MPFR_RNDN);
}

static mpfr_t 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, r21354, r21355, r21356;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r21323);
        mpfr_init(r21324);
        mpfr_init_set_str(r21325, "-6.192751456905388e-56", 10, MPFR_RNDN);
        mpfr_init(r21326);
        mpfr_init_set_str(r21327, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21328, "2", 10, MPFR_RNDN);
        mpfr_init(r21329);
        mpfr_init(r21330);
        mpfr_init_set_str(r21331, "4", 10, MPFR_RNDN);
        mpfr_init(r21332);
        mpfr_init(r21333);
        mpfr_init(r21334);
        mpfr_init(r21335);
        mpfr_init(r21336);
        mpfr_init(r21337);
        mpfr_init(r21338);
        mpfr_init(r21339);
        mpfr_init_set_str(r21340, "5.212416467940643e+55", 10, MPFR_RNDN);
        mpfr_init(r21341);
        mpfr_init(r21342);
        mpfr_init(r21343);
        mpfr_init(r21344);
        mpfr_init(r21345);
        mpfr_init(r21346);
        mpfr_init(r21347);
        mpfr_init(r21348);
        mpfr_init(r21349);
        mpfr_init(r21350);
        mpfr_init(r21351);
        mpfr_init(r21352);
        mpfr_init(r21353);
        mpfr_init(r21354);
        mpfr_init(r21355);
        mpfr_init(r21356);
}

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

static mpfr_t 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r21357);
        mpfr_init(r21358);
        mpfr_init_set_str(r21359, "-6.192751456905388e-56", 10, MPFR_RNDN);
        mpfr_init(r21360);
        mpfr_init_set_str(r21361, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21362, "2", 10, MPFR_RNDN);
        mpfr_init(r21363);
        mpfr_init(r21364);
        mpfr_init_set_str(r21365, "4", 10, MPFR_RNDN);
        mpfr_init(r21366);
        mpfr_init(r21367);
        mpfr_init(r21368);
        mpfr_init(r21369);
        mpfr_init(r21370);
        mpfr_init(r21371);
        mpfr_init(r21372);
        mpfr_init(r21373);
        mpfr_init_set_str(r21374, "5.212416467940643e+55", 10, MPFR_RNDN);
        mpfr_init(r21375);
        mpfr_init(r21376);
        mpfr_init(r21377);
        mpfr_init(r21378);
        mpfr_init(r21379);
        mpfr_init(r21380);
        mpfr_init(r21381);
        mpfr_init(r21382);
        mpfr_init(r21383);
        mpfr_init(r21384);
        mpfr_init(r21385);
        mpfr_init(r21386);
        mpfr_init(r21387);
        mpfr_init(r21388);
        mpfr_init(r21389);
        mpfr_init(r21390);
}

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

