#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 r21130 = b;
        float r21131 = -r21130;
        float r21132 = r21130 * r21130;
        float r21133 = 4;
        float r21134 = a;
        float r21135 = r21133 * r21134;
        float r21136 = c;
        float r21137 = r21135 * r21136;
        float r21138 = r21132 - r21137;
        float r21139 = sqrt(r21138);
        float r21140 = r21131 + r21139;
        float r21141 = 2;
        float r21142 = r21141 * r21134;
        float r21143 = r21140 / r21142;
        return r21143;
}

double f_id(double a, double b, double c) {
        double r21144 = b;
        double r21145 = -r21144;
        double r21146 = r21144 * r21144;
        double r21147 = 4;
        double r21148 = a;
        double r21149 = r21147 * r21148;
        double r21150 = c;
        double r21151 = r21149 * r21150;
        double r21152 = r21146 - r21151;
        double r21153 = sqrt(r21152);
        double r21154 = r21145 + r21153;
        double r21155 = 2;
        double r21156 = r21155 * r21148;
        double r21157 = r21154 / r21156;
        return r21157;
}


double f_of(float a, float b, float c) {
        float r21158 = b;
        float r21159 = -1.3907652222998155e+110;
        bool r21160 = r21158 <= r21159;
        float r21161 = c;
        float r21162 = r21161 / r21158;
        float r21163 = 1;
        float r21164 = r21162 / r21163;
        float r21165 = a;
        float r21166 = r21158 / r21165;
        float r21167 = r21164 - r21166;
        float r21168 = 1.3192368517509897e-110;
        bool r21169 = r21158 <= r21168;
        float r21170 = 2;
        float r21171 = r21170 * r21165;
        float r21172 = -r21158;
        float r21173 = r21158 * r21158;
        float r21174 = 4;
        float r21175 = r21174 * r21165;
        float r21176 = r21175 * r21161;
        float r21177 = r21173 - r21176;
        float r21178 = sqrt(r21177);
        float r21179 = r21172 + r21178;
        float r21180 = r21171 / r21179;
        float r21181 = r21163 / r21180;
        float r21182 = 6.578629845313264e+85;
        bool r21183 = r21158 <= r21182;
        float r21184 = r21165 * r21161;
        float r21185 = r21174 * r21184;
        float r21186 = r21172 - r21178;
        float r21187 = r21185 / r21186;
        float r21188 = r21187 / r21171;
        float r21189 = -2;
        float r21190 = r21189 / r21170;
        float r21191 = r21162 * r21190;
        float r21192 = r21183 ? r21188 : r21191;
        float r21193 = r21169 ? r21181 : r21192;
        float r21194 = r21160 ? r21167 : r21193;
        return r21194;
}

double f_od(double a, double b, double c) {
        double r21195 = b;
        double r21196 = -1.3907652222998155e+110;
        bool r21197 = r21195 <= r21196;
        double r21198 = c;
        double r21199 = r21198 / r21195;
        double r21200 = 1;
        double r21201 = r21199 / r21200;
        double r21202 = a;
        double r21203 = r21195 / r21202;
        double r21204 = r21201 - r21203;
        double r21205 = 1.3192368517509897e-110;
        bool r21206 = r21195 <= r21205;
        double r21207 = 2;
        double r21208 = r21207 * r21202;
        double r21209 = -r21195;
        double r21210 = r21195 * r21195;
        double r21211 = 4;
        double r21212 = r21211 * r21202;
        double r21213 = r21212 * r21198;
        double r21214 = r21210 - r21213;
        double r21215 = sqrt(r21214);
        double r21216 = r21209 + r21215;
        double r21217 = r21208 / r21216;
        double r21218 = r21200 / r21217;
        double r21219 = 6.578629845313264e+85;
        bool r21220 = r21195 <= r21219;
        double r21221 = r21202 * r21198;
        double r21222 = r21211 * r21221;
        double r21223 = r21209 - r21215;
        double r21224 = r21222 / r21223;
        double r21225 = r21224 / r21208;
        double r21226 = -2;
        double r21227 = r21226 / r21207;
        double r21228 = r21199 * r21227;
        double r21229 = r21220 ? r21225 : r21228;
        double r21230 = r21206 ? r21218 : r21229;
        double r21231 = r21197 ? r21204 : r21230;
        return r21231;
}

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 r21232, r21233, r21234, r21235, r21236, r21237, r21238, r21239, r21240, r21241, r21242, r21243, r21244, r21245;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21232);
        mpfr_init(r21233);
        mpfr_init(r21234);
        mpfr_init_set_str(r21235, "4", 10, MPFR_RNDN);
        mpfr_init(r21236);
        mpfr_init(r21237);
        mpfr_init(r21238);
        mpfr_init(r21239);
        mpfr_init(r21240);
        mpfr_init(r21241);
        mpfr_init(r21242);
        mpfr_init_set_str(r21243, "2", 10, MPFR_RNDN);
        mpfr_init(r21244);
        mpfr_init(r21245);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r21232, b, MPFR_RNDN);
        mpfr_neg(r21233, r21232, MPFR_RNDN);
        mpfr_mul(r21234, r21232, r21232, MPFR_RNDN);
        ;
        mpfr_set_d(r21236, a, MPFR_RNDN);
        mpfr_mul(r21237, r21235, r21236, MPFR_RNDN);
        mpfr_set_d(r21238, c, MPFR_RNDN);
        mpfr_mul(r21239, r21237, r21238, MPFR_RNDN);
        mpfr_sub(r21240, r21234, r21239, MPFR_RNDN);
        mpfr_sqrt(r21241, r21240, MPFR_RNDN);
        mpfr_add(r21242, r21233, r21241, MPFR_RNDN);
        ;
        mpfr_mul(r21244, r21243, r21236, MPFR_RNDN);
        mpfr_div(r21245, r21242, r21244, MPFR_RNDN);
        return mpfr_get_d(r21245, MPFR_RNDN);
}

static mpfr_t r21246, r21247, r21248, r21249, r21250, r21251, r21252, r21253, r21254, r21255, r21256, r21257, r21258, r21259, r21260, r21261, r21262, r21263, r21264, r21265, r21266, r21267, r21268, r21269, r21270, r21271, r21272, r21273, r21274, r21275, r21276, r21277, r21278, r21279, r21280, r21281, r21282;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21246);
        mpfr_init_set_str(r21247, "-1.3907652222998155e+110", 10, MPFR_RNDN);
        mpfr_init(r21248);
        mpfr_init(r21249);
        mpfr_init(r21250);
        mpfr_init_set_str(r21251, "1", 10, MPFR_RNDN);
        mpfr_init(r21252);
        mpfr_init(r21253);
        mpfr_init(r21254);
        mpfr_init(r21255);
        mpfr_init_set_str(r21256, "1.3192368517509897e-110", 10, MPFR_RNDN);
        mpfr_init(r21257);
        mpfr_init_set_str(r21258, "2", 10, MPFR_RNDN);
        mpfr_init(r21259);
        mpfr_init(r21260);
        mpfr_init(r21261);
        mpfr_init_set_str(r21262, "4", 10, MPFR_RNDN);
        mpfr_init(r21263);
        mpfr_init(r21264);
        mpfr_init(r21265);
        mpfr_init(r21266);
        mpfr_init(r21267);
        mpfr_init(r21268);
        mpfr_init(r21269);
        mpfr_init_set_str(r21270, "6.578629845313264e+85", 10, MPFR_RNDN);
        mpfr_init(r21271);
        mpfr_init(r21272);
        mpfr_init(r21273);
        mpfr_init(r21274);
        mpfr_init(r21275);
        mpfr_init(r21276);
        mpfr_init_set_str(r21277, "-2", 10, MPFR_RNDN);
        mpfr_init(r21278);
        mpfr_init(r21279);
        mpfr_init(r21280);
        mpfr_init(r21281);
        mpfr_init(r21282);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r21246, b, MPFR_RNDN);
        ;
        mpfr_set_si(r21248, mpfr_cmp(r21246, r21247) <= 0, MPFR_RNDN);
        mpfr_set_d(r21249, c, MPFR_RNDN);
        mpfr_div(r21250, r21249, r21246, MPFR_RNDN);
        ;
        mpfr_div(r21252, r21250, r21251, MPFR_RNDN);
        mpfr_set_d(r21253, a, MPFR_RNDN);
        mpfr_div(r21254, r21246, r21253, MPFR_RNDN);
        mpfr_sub(r21255, r21252, r21254, MPFR_RNDN);
        ;
        mpfr_set_si(r21257, mpfr_cmp(r21246, r21256) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r21259, r21258, r21253, MPFR_RNDN);
        mpfr_neg(r21260, r21246, MPFR_RNDN);
        mpfr_mul(r21261, r21246, r21246, MPFR_RNDN);
        ;
        mpfr_mul(r21263, r21262, r21253, MPFR_RNDN);
        mpfr_mul(r21264, r21263, r21249, MPFR_RNDN);
        mpfr_sub(r21265, r21261, r21264, MPFR_RNDN);
        mpfr_sqrt(r21266, r21265, MPFR_RNDN);
        mpfr_add(r21267, r21260, r21266, MPFR_RNDN);
        mpfr_div(r21268, r21259, r21267, MPFR_RNDN);
        mpfr_div(r21269, r21251, r21268, MPFR_RNDN);
        ;
        mpfr_set_si(r21271, mpfr_cmp(r21246, r21270) <= 0, MPFR_RNDN);
        mpfr_mul(r21272, r21253, r21249, MPFR_RNDN);
        mpfr_mul(r21273, r21262, r21272, MPFR_RNDN);
        mpfr_sub(r21274, r21260, r21266, MPFR_RNDN);
        mpfr_div(r21275, r21273, r21274, MPFR_RNDN);
        mpfr_div(r21276, r21275, r21259, MPFR_RNDN);
        ;
        mpfr_div(r21278, r21277, r21258, MPFR_RNDN);
        mpfr_mul(r21279, r21250, r21278, MPFR_RNDN);
        if (mpfr_get_si(r21271, MPFR_RNDN)) { mpfr_set(r21280, r21276, MPFR_RNDN); } else { mpfr_set(r21280, r21279, MPFR_RNDN); };
        if (mpfr_get_si(r21257, MPFR_RNDN)) { mpfr_set(r21281, r21269, MPFR_RNDN); } else { mpfr_set(r21281, r21280, MPFR_RNDN); };
        if (mpfr_get_si(r21248, MPFR_RNDN)) { mpfr_set(r21282, r21255, MPFR_RNDN); } else { mpfr_set(r21282, r21281, MPFR_RNDN); };
        return mpfr_get_d(r21282, MPFR_RNDN);
}

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

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21283);
        mpfr_init_set_str(r21284, "-1.3907652222998155e+110", 10, MPFR_RNDN);
        mpfr_init(r21285);
        mpfr_init(r21286);
        mpfr_init(r21287);
        mpfr_init_set_str(r21288, "1", 10, MPFR_RNDN);
        mpfr_init(r21289);
        mpfr_init(r21290);
        mpfr_init(r21291);
        mpfr_init(r21292);
        mpfr_init_set_str(r21293, "1.3192368517509897e-110", 10, MPFR_RNDN);
        mpfr_init(r21294);
        mpfr_init_set_str(r21295, "2", 10, MPFR_RNDN);
        mpfr_init(r21296);
        mpfr_init(r21297);
        mpfr_init(r21298);
        mpfr_init_set_str(r21299, "4", 10, MPFR_RNDN);
        mpfr_init(r21300);
        mpfr_init(r21301);
        mpfr_init(r21302);
        mpfr_init(r21303);
        mpfr_init(r21304);
        mpfr_init(r21305);
        mpfr_init(r21306);
        mpfr_init_set_str(r21307, "6.578629845313264e+85", 10, MPFR_RNDN);
        mpfr_init(r21308);
        mpfr_init(r21309);
        mpfr_init(r21310);
        mpfr_init(r21311);
        mpfr_init(r21312);
        mpfr_init(r21313);
        mpfr_init_set_str(r21314, "-2", 10, MPFR_RNDN);
        mpfr_init(r21315);
        mpfr_init(r21316);
        mpfr_init(r21317);
        mpfr_init(r21318);
        mpfr_init(r21319);
}

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

