#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 r21138 = b;
        float r21139 = -r21138;
        float r21140 = r21138 * r21138;
        float r21141 = 4;
        float r21142 = a;
        float r21143 = r21141 * r21142;
        float r21144 = c;
        float r21145 = r21143 * r21144;
        float r21146 = r21140 - r21145;
        float r21147 = sqrt(r21146);
        float r21148 = r21139 + r21147;
        float r21149 = 2;
        float r21150 = r21149 * r21142;
        float r21151 = r21148 / r21150;
        return r21151;
}

double f_id(double a, double b, double c) {
        double r21152 = b;
        double r21153 = -r21152;
        double r21154 = r21152 * r21152;
        double r21155 = 4;
        double r21156 = a;
        double r21157 = r21155 * r21156;
        double r21158 = c;
        double r21159 = r21157 * r21158;
        double r21160 = r21154 - r21159;
        double r21161 = sqrt(r21160);
        double r21162 = r21153 + r21161;
        double r21163 = 2;
        double r21164 = r21163 * r21156;
        double r21165 = r21162 / r21164;
        return r21165;
}


double f_of(float a, float b, float c) {
        float r21166 = b;
        float r21167 = -1.6867480356295008e+140;
        bool r21168 = r21166 <= r21167;
        float r21169 = c;
        float r21170 = r21169 / r21166;
        float r21171 = 1;
        float r21172 = r21170 / r21171;
        float r21173 = a;
        float r21174 = r21166 / r21173;
        float r21175 = r21172 - r21174;
        float r21176 = 2.630849756163672e-233;
        bool r21177 = r21166 <= r21176;
        float r21178 = 2;
        float r21179 = r21178 * r21173;
        float r21180 = -r21166;
        float r21181 = r21166 * r21166;
        float r21182 = 4;
        float r21183 = r21182 * r21173;
        float r21184 = r21183 * r21169;
        float r21185 = r21181 - r21184;
        float r21186 = sqrt(r21185);
        float r21187 = r21180 + r21186;
        float r21188 = r21179 / r21187;
        float r21189 = r21171 / r21188;
        float r21190 = 2.644486062016959e-06;
        bool r21191 = r21166 <= r21190;
        float r21192 = r21180 - r21186;
        float r21193 = cbrt(r21192);
        float r21194 = r21193 * r21193;
        float r21195 = r21169 / r21194;
        float r21196 = r21173 * r21182;
        float r21197 = r21196 / r21193;
        float r21198 = r21195 * r21197;
        float r21199 = r21198 / r21179;
        float r21200 = -2;
        float r21201 = r21200 / r21178;
        float r21202 = r21170 * r21201;
        float r21203 = r21191 ? r21199 : r21202;
        float r21204 = r21177 ? r21189 : r21203;
        float r21205 = r21168 ? r21175 : r21204;
        return r21205;
}

double f_od(double a, double b, double c) {
        double r21206 = b;
        double r21207 = -1.6867480356295008e+140;
        bool r21208 = r21206 <= r21207;
        double r21209 = c;
        double r21210 = r21209 / r21206;
        double r21211 = 1;
        double r21212 = r21210 / r21211;
        double r21213 = a;
        double r21214 = r21206 / r21213;
        double r21215 = r21212 - r21214;
        double r21216 = 2.630849756163672e-233;
        bool r21217 = r21206 <= r21216;
        double r21218 = 2;
        double r21219 = r21218 * r21213;
        double r21220 = -r21206;
        double r21221 = r21206 * r21206;
        double r21222 = 4;
        double r21223 = r21222 * r21213;
        double r21224 = r21223 * r21209;
        double r21225 = r21221 - r21224;
        double r21226 = sqrt(r21225);
        double r21227 = r21220 + r21226;
        double r21228 = r21219 / r21227;
        double r21229 = r21211 / r21228;
        double r21230 = 2.644486062016959e-06;
        bool r21231 = r21206 <= r21230;
        double r21232 = r21220 - r21226;
        double r21233 = cbrt(r21232);
        double r21234 = r21233 * r21233;
        double r21235 = r21209 / r21234;
        double r21236 = r21213 * r21222;
        double r21237 = r21236 / r21233;
        double r21238 = r21235 * r21237;
        double r21239 = r21238 / r21219;
        double r21240 = -2;
        double r21241 = r21240 / r21218;
        double r21242 = r21210 * r21241;
        double r21243 = r21231 ? r21239 : r21242;
        double r21244 = r21217 ? r21229 : r21243;
        double r21245 = r21208 ? r21215 : r21244;
        return r21245;
}

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 r21246, r21247, r21248, r21249, r21250, r21251, r21252, r21253, r21254, r21255, r21256, r21257, r21258, r21259;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21246);
        mpfr_init(r21247);
        mpfr_init(r21248);
        mpfr_init_set_str(r21249, "4", 10, MPFR_RNDN);
        mpfr_init(r21250);
        mpfr_init(r21251);
        mpfr_init(r21252);
        mpfr_init(r21253);
        mpfr_init(r21254);
        mpfr_init(r21255);
        mpfr_init(r21256);
        mpfr_init_set_str(r21257, "2", 10, MPFR_RNDN);
        mpfr_init(r21258);
        mpfr_init(r21259);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r21246, b, MPFR_RNDN);
        mpfr_neg(r21247, r21246, MPFR_RNDN);
        mpfr_mul(r21248, r21246, r21246, MPFR_RNDN);
        ;
        mpfr_set_d(r21250, a, MPFR_RNDN);
        mpfr_mul(r21251, r21249, r21250, MPFR_RNDN);
        mpfr_set_d(r21252, c, MPFR_RNDN);
        mpfr_mul(r21253, r21251, r21252, MPFR_RNDN);
        mpfr_sub(r21254, r21248, r21253, MPFR_RNDN);
        mpfr_sqrt(r21255, r21254, MPFR_RNDN);
        mpfr_add(r21256, r21247, r21255, MPFR_RNDN);
        ;
        mpfr_mul(r21258, r21257, r21250, MPFR_RNDN);
        mpfr_div(r21259, r21256, r21258, MPFR_RNDN);
        return mpfr_get_d(r21259, MPFR_RNDN);
}

static mpfr_t r21260, r21261, r21262, r21263, r21264, r21265, r21266, r21267, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21260);
        mpfr_init_set_str(r21261, "-1.6867480356295008e+140", 10, MPFR_RNDN);
        mpfr_init(r21262);
        mpfr_init(r21263);
        mpfr_init(r21264);
        mpfr_init_set_str(r21265, "1", 10, MPFR_RNDN);
        mpfr_init(r21266);
        mpfr_init(r21267);
        mpfr_init(r21268);
        mpfr_init(r21269);
        mpfr_init_set_str(r21270, "2.630849756163672e-233", 10, MPFR_RNDN);
        mpfr_init(r21271);
        mpfr_init_set_str(r21272, "2", 10, MPFR_RNDN);
        mpfr_init(r21273);
        mpfr_init(r21274);
        mpfr_init(r21275);
        mpfr_init_set_str(r21276, "4", 10, MPFR_RNDN);
        mpfr_init(r21277);
        mpfr_init(r21278);
        mpfr_init(r21279);
        mpfr_init(r21280);
        mpfr_init(r21281);
        mpfr_init(r21282);
        mpfr_init(r21283);
        mpfr_init_set_str(r21284, "2.644486062016959e-06", 10, MPFR_RNDN);
        mpfr_init(r21285);
        mpfr_init(r21286);
        mpfr_init(r21287);
        mpfr_init(r21288);
        mpfr_init(r21289);
        mpfr_init(r21290);
        mpfr_init(r21291);
        mpfr_init(r21292);
        mpfr_init(r21293);
        mpfr_init_set_str(r21294, "-2", 10, MPFR_RNDN);
        mpfr_init(r21295);
        mpfr_init(r21296);
        mpfr_init(r21297);
        mpfr_init(r21298);
        mpfr_init(r21299);
}

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

static mpfr_t r21300, r21301, r21302, r21303, r21304, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21300);
        mpfr_init_set_str(r21301, "-1.6867480356295008e+140", 10, MPFR_RNDN);
        mpfr_init(r21302);
        mpfr_init(r21303);
        mpfr_init(r21304);
        mpfr_init_set_str(r21305, "1", 10, MPFR_RNDN);
        mpfr_init(r21306);
        mpfr_init(r21307);
        mpfr_init(r21308);
        mpfr_init(r21309);
        mpfr_init_set_str(r21310, "2.630849756163672e-233", 10, MPFR_RNDN);
        mpfr_init(r21311);
        mpfr_init_set_str(r21312, "2", 10, MPFR_RNDN);
        mpfr_init(r21313);
        mpfr_init(r21314);
        mpfr_init(r21315);
        mpfr_init_set_str(r21316, "4", 10, MPFR_RNDN);
        mpfr_init(r21317);
        mpfr_init(r21318);
        mpfr_init(r21319);
        mpfr_init(r21320);
        mpfr_init(r21321);
        mpfr_init(r21322);
        mpfr_init(r21323);
        mpfr_init_set_str(r21324, "2.644486062016959e-06", 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_set_str(r21334, "-2", 10, MPFR_RNDN);
        mpfr_init(r21335);
        mpfr_init(r21336);
        mpfr_init(r21337);
        mpfr_init(r21338);
        mpfr_init(r21339);
}

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

