#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 r21168 = b;
        float r21169 = -r21168;
        float r21170 = r21168 * r21168;
        float r21171 = 4;
        float r21172 = a;
        float r21173 = r21171 * r21172;
        float r21174 = c;
        float r21175 = r21173 * r21174;
        float r21176 = r21170 - r21175;
        float r21177 = sqrt(r21176);
        float r21178 = r21169 + r21177;
        float r21179 = 2;
        float r21180 = r21179 * r21172;
        float r21181 = r21178 / r21180;
        return r21181;
}

double f_id(double a, double b, double c) {
        double r21182 = b;
        double r21183 = -r21182;
        double r21184 = r21182 * r21182;
        double r21185 = 4;
        double r21186 = a;
        double r21187 = r21185 * r21186;
        double r21188 = c;
        double r21189 = r21187 * r21188;
        double r21190 = r21184 - r21189;
        double r21191 = sqrt(r21190);
        double r21192 = r21183 + r21191;
        double r21193 = 2;
        double r21194 = r21193 * r21186;
        double r21195 = r21192 / r21194;
        return r21195;
}


double f_of(float a, float b, float c) {
        float r21196 = b;
        float r21197 = -4.454804573053783e+70;
        bool r21198 = r21196 <= r21197;
        float r21199 = c;
        float r21200 = r21199 / r21196;
        float r21201 = 1;
        float r21202 = r21200 / r21201;
        float r21203 = a;
        float r21204 = r21196 / r21203;
        float r21205 = r21202 - r21204;
        float r21206 = 8.051390309728388e-242;
        bool r21207 = r21196 <= r21206;
        float r21208 = -r21196;
        float r21209 = r21196 * r21196;
        float r21210 = 4;
        float r21211 = r21210 * r21203;
        float r21212 = r21211 * r21199;
        float r21213 = r21209 - r21212;
        float r21214 = sqrt(r21213);
        float r21215 = r21208 + r21214;
        float r21216 = 2;
        float r21217 = r21216 * r21203;
        float r21218 = r21215 / r21217;
        float r21219 = 4.6081668950565733e+89;
        bool r21220 = r21196 <= r21219;
        float r21221 = r21199 / r21201;
        float r21222 = r21203 * r21210;
        float r21223 = r21208 - r21214;
        float r21224 = r21222 / r21223;
        float r21225 = r21221 * r21224;
        float r21226 = r21225 / r21217;
        float r21227 = -2;
        float r21228 = r21227 / r21216;
        float r21229 = r21200 * r21228;
        float r21230 = r21220 ? r21226 : r21229;
        float r21231 = r21207 ? r21218 : r21230;
        float r21232 = r21198 ? r21205 : r21231;
        return r21232;
}

double f_od(double a, double b, double c) {
        double r21233 = b;
        double r21234 = -4.454804573053783e+70;
        bool r21235 = r21233 <= r21234;
        double r21236 = c;
        double r21237 = r21236 / r21233;
        double r21238 = 1;
        double r21239 = r21237 / r21238;
        double r21240 = a;
        double r21241 = r21233 / r21240;
        double r21242 = r21239 - r21241;
        double r21243 = 8.051390309728388e-242;
        bool r21244 = r21233 <= r21243;
        double r21245 = -r21233;
        double r21246 = r21233 * r21233;
        double r21247 = 4;
        double r21248 = r21247 * r21240;
        double r21249 = r21248 * r21236;
        double r21250 = r21246 - r21249;
        double r21251 = sqrt(r21250);
        double r21252 = r21245 + r21251;
        double r21253 = 2;
        double r21254 = r21253 * r21240;
        double r21255 = r21252 / r21254;
        double r21256 = 4.6081668950565733e+89;
        bool r21257 = r21233 <= r21256;
        double r21258 = r21236 / r21238;
        double r21259 = r21240 * r21247;
        double r21260 = r21245 - r21251;
        double r21261 = r21259 / r21260;
        double r21262 = r21258 * r21261;
        double r21263 = r21262 / r21254;
        double r21264 = -2;
        double r21265 = r21264 / r21253;
        double r21266 = r21237 * r21265;
        double r21267 = r21257 ? r21263 : r21266;
        double r21268 = r21244 ? r21255 : r21267;
        double r21269 = r21235 ? r21242 : r21268;
        return r21269;
}

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 r21270, r21271, r21272, r21273, r21274, r21275, r21276, r21277, r21278, r21279, r21280, r21281, r21282, r21283;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21270);
        mpfr_init(r21271);
        mpfr_init(r21272);
        mpfr_init_set_str(r21273, "4", 10, MPFR_RNDN);
        mpfr_init(r21274);
        mpfr_init(r21275);
        mpfr_init(r21276);
        mpfr_init(r21277);
        mpfr_init(r21278);
        mpfr_init(r21279);
        mpfr_init(r21280);
        mpfr_init_set_str(r21281, "2", 10, MPFR_RNDN);
        mpfr_init(r21282);
        mpfr_init(r21283);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r21270, b, MPFR_RNDN);
        mpfr_neg(r21271, r21270, MPFR_RNDN);
        mpfr_mul(r21272, r21270, r21270, MPFR_RNDN);
        ;
        mpfr_set_d(r21274, a, MPFR_RNDN);
        mpfr_mul(r21275, r21273, r21274, MPFR_RNDN);
        mpfr_set_d(r21276, c, MPFR_RNDN);
        mpfr_mul(r21277, r21275, r21276, MPFR_RNDN);
        mpfr_sub(r21278, r21272, r21277, MPFR_RNDN);
        mpfr_sqrt(r21279, r21278, MPFR_RNDN);
        mpfr_add(r21280, r21271, r21279, MPFR_RNDN);
        ;
        mpfr_mul(r21282, r21281, r21274, MPFR_RNDN);
        mpfr_div(r21283, r21280, r21282, MPFR_RNDN);
        return mpfr_get_d(r21283, MPFR_RNDN);
}

static mpfr_t 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, r21312, r21313, r21314, r21315, r21316, r21317, r21318, r21319, r21320;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21284);
        mpfr_init_set_str(r21285, "-4.454804573053783e+70", 10, MPFR_RNDN);
        mpfr_init(r21286);
        mpfr_init(r21287);
        mpfr_init(r21288);
        mpfr_init_set_str(r21289, "1", 10, MPFR_RNDN);
        mpfr_init(r21290);
        mpfr_init(r21291);
        mpfr_init(r21292);
        mpfr_init(r21293);
        mpfr_init_set_str(r21294, "8.051390309728388e-242", 10, MPFR_RNDN);
        mpfr_init(r21295);
        mpfr_init(r21296);
        mpfr_init(r21297);
        mpfr_init_set_str(r21298, "4", 10, MPFR_RNDN);
        mpfr_init(r21299);
        mpfr_init(r21300);
        mpfr_init(r21301);
        mpfr_init(r21302);
        mpfr_init(r21303);
        mpfr_init_set_str(r21304, "2", 10, MPFR_RNDN);
        mpfr_init(r21305);
        mpfr_init(r21306);
        mpfr_init_set_str(r21307, "4.6081668950565733e+89", 10, MPFR_RNDN);
        mpfr_init(r21308);
        mpfr_init(r21309);
        mpfr_init(r21310);
        mpfr_init(r21311);
        mpfr_init(r21312);
        mpfr_init(r21313);
        mpfr_init(r21314);
        mpfr_init_set_str(r21315, "-2", 10, MPFR_RNDN);
        mpfr_init(r21316);
        mpfr_init(r21317);
        mpfr_init(r21318);
        mpfr_init(r21319);
        mpfr_init(r21320);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r21284, b, MPFR_RNDN);
        ;
        mpfr_set_si(r21286, mpfr_cmp(r21284, r21285) <= 0, MPFR_RNDN);
        mpfr_set_d(r21287, c, MPFR_RNDN);
        mpfr_div(r21288, r21287, r21284, MPFR_RNDN);
        ;
        mpfr_div(r21290, r21288, r21289, MPFR_RNDN);
        mpfr_set_d(r21291, a, MPFR_RNDN);
        mpfr_div(r21292, r21284, r21291, MPFR_RNDN);
        mpfr_sub(r21293, r21290, r21292, MPFR_RNDN);
        ;
        mpfr_set_si(r21295, mpfr_cmp(r21284, r21294) <= 0, MPFR_RNDN);
        mpfr_neg(r21296, r21284, MPFR_RNDN);
        mpfr_mul(r21297, r21284, r21284, MPFR_RNDN);
        ;
        mpfr_mul(r21299, r21298, r21291, MPFR_RNDN);
        mpfr_mul(r21300, r21299, r21287, MPFR_RNDN);
        mpfr_sub(r21301, r21297, r21300, MPFR_RNDN);
        mpfr_sqrt(r21302, r21301, MPFR_RNDN);
        mpfr_add(r21303, r21296, r21302, MPFR_RNDN);
        ;
        mpfr_mul(r21305, r21304, r21291, MPFR_RNDN);
        mpfr_div(r21306, r21303, r21305, MPFR_RNDN);
        ;
        mpfr_set_si(r21308, mpfr_cmp(r21284, r21307) <= 0, MPFR_RNDN);
        mpfr_div(r21309, r21287, r21289, MPFR_RNDN);
        mpfr_mul(r21310, r21291, r21298, MPFR_RNDN);
        mpfr_sub(r21311, r21296, r21302, MPFR_RNDN);
        mpfr_div(r21312, r21310, r21311, MPFR_RNDN);
        mpfr_mul(r21313, r21309, r21312, MPFR_RNDN);
        mpfr_div(r21314, r21313, r21305, MPFR_RNDN);
        ;
        mpfr_div(r21316, r21315, r21304, MPFR_RNDN);
        mpfr_mul(r21317, r21288, r21316, MPFR_RNDN);
        if (mpfr_get_si(r21308, MPFR_RNDN)) { mpfr_set(r21318, r21314, MPFR_RNDN); } else { mpfr_set(r21318, r21317, MPFR_RNDN); };
        if (mpfr_get_si(r21295, MPFR_RNDN)) { mpfr_set(r21319, r21306, MPFR_RNDN); } else { mpfr_set(r21319, r21318, MPFR_RNDN); };
        if (mpfr_get_si(r21286, MPFR_RNDN)) { mpfr_set(r21320, r21293, MPFR_RNDN); } else { mpfr_set(r21320, r21319, MPFR_RNDN); };
        return mpfr_get_d(r21320, MPFR_RNDN);
}

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

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21321);
        mpfr_init_set_str(r21322, "-4.454804573053783e+70", 10, MPFR_RNDN);
        mpfr_init(r21323);
        mpfr_init(r21324);
        mpfr_init(r21325);
        mpfr_init_set_str(r21326, "1", 10, MPFR_RNDN);
        mpfr_init(r21327);
        mpfr_init(r21328);
        mpfr_init(r21329);
        mpfr_init(r21330);
        mpfr_init_set_str(r21331, "8.051390309728388e-242", 10, MPFR_RNDN);
        mpfr_init(r21332);
        mpfr_init(r21333);
        mpfr_init(r21334);
        mpfr_init_set_str(r21335, "4", 10, MPFR_RNDN);
        mpfr_init(r21336);
        mpfr_init(r21337);
        mpfr_init(r21338);
        mpfr_init(r21339);
        mpfr_init(r21340);
        mpfr_init_set_str(r21341, "2", 10, MPFR_RNDN);
        mpfr_init(r21342);
        mpfr_init(r21343);
        mpfr_init_set_str(r21344, "4.6081668950565733e+89", 10, MPFR_RNDN);
        mpfr_init(r21345);
        mpfr_init(r21346);
        mpfr_init(r21347);
        mpfr_init(r21348);
        mpfr_init(r21349);
        mpfr_init(r21350);
        mpfr_init(r21351);
        mpfr_init_set_str(r21352, "-2", 10, MPFR_RNDN);
        mpfr_init(r21353);
        mpfr_init(r21354);
        mpfr_init(r21355);
        mpfr_init(r21356);
        mpfr_init(r21357);
}

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

