#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 r21117 = b;
        float r21118 = -r21117;
        float r21119 = r21117 * r21117;
        float r21120 = 4;
        float r21121 = a;
        float r21122 = r21120 * r21121;
        float r21123 = c;
        float r21124 = r21122 * r21123;
        float r21125 = r21119 - r21124;
        float r21126 = sqrt(r21125);
        float r21127 = r21118 + r21126;
        float r21128 = 2;
        float r21129 = r21128 * r21121;
        float r21130 = r21127 / r21129;
        return r21130;
}

double f_id(double a, double b, double c) {
        double r21131 = b;
        double r21132 = -r21131;
        double r21133 = r21131 * r21131;
        double r21134 = 4;
        double r21135 = a;
        double r21136 = r21134 * r21135;
        double r21137 = c;
        double r21138 = r21136 * r21137;
        double r21139 = r21133 - r21138;
        double r21140 = sqrt(r21139);
        double r21141 = r21132 + r21140;
        double r21142 = 2;
        double r21143 = r21142 * r21135;
        double r21144 = r21141 / r21143;
        return r21144;
}


double f_of(float a, float b, float c) {
        float r21145 = b;
        float r21146 = -r21145;
        float r21147 = -4.681232182683818e+117;
        bool r21148 = r21146 <= r21147;
        float r21149 = 1;
        float r21150 = 2;
        float r21151 = r21149 / r21150;
        float r21152 = 4;
        float r21153 = c;
        float r21154 = r21152 * r21153;
        float r21155 = r21151 * r21154;
        float r21156 = a;
        float r21157 = r21156 / r21145;
        float r21158 = r21157 + r21157;
        float r21159 = r21146 - r21145;
        float r21160 = fma(r21153, r21158, r21159);
        float r21161 = r21155 / r21160;
        float r21162 = -2.118907474743662e-210;
        bool r21163 = r21146 <= r21162;
        float r21164 = r21152 * r21156;
        float r21165 = r21153 * r21164;
        float r21166 = r21145 * r21145;
        float r21167 = r21166 - r21165;
        float r21168 = sqrt(r21167);
        float r21169 = r21146 - r21168;
        float r21170 = r21165 / r21169;
        float r21171 = r21156 + r21156;
        float r21172 = r21170 / r21171;
        float r21173 = 7.665518801524091e+112;
        bool r21174 = r21146 <= r21173;
        float r21175 = r21146 + r21168;
        float r21176 = r21171 / r21175;
        float r21177 = r21149 / r21176;
        float r21178 = fma(r21157, r21153, r21146);
        float r21179 = r21178 / r21156;
        float r21180 = r21174 ? r21177 : r21179;
        float r21181 = r21163 ? r21172 : r21180;
        float r21182 = r21148 ? r21161 : r21181;
        return r21182;
}

double f_od(double a, double b, double c) {
        double r21183 = b;
        double r21184 = -r21183;
        double r21185 = -4.681232182683818e+117;
        bool r21186 = r21184 <= r21185;
        double r21187 = 1;
        double r21188 = 2;
        double r21189 = r21187 / r21188;
        double r21190 = 4;
        double r21191 = c;
        double r21192 = r21190 * r21191;
        double r21193 = r21189 * r21192;
        double r21194 = a;
        double r21195 = r21194 / r21183;
        double r21196 = r21195 + r21195;
        double r21197 = r21184 - r21183;
        double r21198 = fma(r21191, r21196, r21197);
        double r21199 = r21193 / r21198;
        double r21200 = -2.118907474743662e-210;
        bool r21201 = r21184 <= r21200;
        double r21202 = r21190 * r21194;
        double r21203 = r21191 * r21202;
        double r21204 = r21183 * r21183;
        double r21205 = r21204 - r21203;
        double r21206 = sqrt(r21205);
        double r21207 = r21184 - r21206;
        double r21208 = r21203 / r21207;
        double r21209 = r21194 + r21194;
        double r21210 = r21208 / r21209;
        double r21211 = 7.665518801524091e+112;
        bool r21212 = r21184 <= r21211;
        double r21213 = r21184 + r21206;
        double r21214 = r21209 / r21213;
        double r21215 = r21187 / r21214;
        double r21216 = fma(r21195, r21191, r21184);
        double r21217 = r21216 / r21194;
        double r21218 = r21212 ? r21215 : r21217;
        double r21219 = r21201 ? r21210 : r21218;
        double r21220 = r21186 ? r21199 : r21219;
        return r21220;
}

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 r21221, r21222, r21223, r21224, r21225, r21226, r21227, r21228, r21229, r21230, r21231, r21232, r21233, r21234;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21221);
        mpfr_init(r21222);
        mpfr_init(r21223);
        mpfr_init_set_str(r21224, "4", 10, MPFR_RNDN);
        mpfr_init(r21225);
        mpfr_init(r21226);
        mpfr_init(r21227);
        mpfr_init(r21228);
        mpfr_init(r21229);
        mpfr_init(r21230);
        mpfr_init(r21231);
        mpfr_init_set_str(r21232, "2", 10, MPFR_RNDN);
        mpfr_init(r21233);
        mpfr_init(r21234);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r21221, b, MPFR_RNDN);
        mpfr_neg(r21222, r21221, MPFR_RNDN);
        mpfr_mul(r21223, r21221, r21221, MPFR_RNDN);
        ;
        mpfr_set_d(r21225, a, MPFR_RNDN);
        mpfr_mul(r21226, r21224, r21225, MPFR_RNDN);
        mpfr_set_d(r21227, c, MPFR_RNDN);
        mpfr_mul(r21228, r21226, r21227, MPFR_RNDN);
        mpfr_sub(r21229, r21223, r21228, MPFR_RNDN);
        mpfr_sqrt(r21230, r21229, MPFR_RNDN);
        mpfr_add(r21231, r21222, r21230, MPFR_RNDN);
        ;
        mpfr_mul(r21233, r21232, r21225, MPFR_RNDN);
        mpfr_div(r21234, r21231, r21233, MPFR_RNDN);
        return mpfr_get_d(r21234, MPFR_RNDN);
}

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21235);
        mpfr_init(r21236);
        mpfr_init_set_str(r21237, "-4.681232182683818e+117", 10, MPFR_RNDN);
        mpfr_init(r21238);
        mpfr_init_set_str(r21239, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21240, "2", 10, MPFR_RNDN);
        mpfr_init(r21241);
        mpfr_init_set_str(r21242, "4", 10, MPFR_RNDN);
        mpfr_init(r21243);
        mpfr_init(r21244);
        mpfr_init(r21245);
        mpfr_init(r21246);
        mpfr_init(r21247);
        mpfr_init(r21248);
        mpfr_init(r21249);
        mpfr_init(r21250);
        mpfr_init(r21251);
        mpfr_init_set_str(r21252, "-2.118907474743662e-210", 10, MPFR_RNDN);
        mpfr_init(r21253);
        mpfr_init(r21254);
        mpfr_init(r21255);
        mpfr_init(r21256);
        mpfr_init(r21257);
        mpfr_init(r21258);
        mpfr_init(r21259);
        mpfr_init(r21260);
        mpfr_init(r21261);
        mpfr_init(r21262);
        mpfr_init_set_str(r21263, "7.665518801524091e+112", 10, MPFR_RNDN);
        mpfr_init(r21264);
        mpfr_init(r21265);
        mpfr_init(r21266);
        mpfr_init(r21267);
        mpfr_init(r21268);
        mpfr_init(r21269);
        mpfr_init(r21270);
        mpfr_init(r21271);
        mpfr_init(r21272);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r21235, b, MPFR_RNDN);
        mpfr_neg(r21236, r21235, MPFR_RNDN);
        ;
        mpfr_set_si(r21238, mpfr_cmp(r21236, r21237) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21241, r21239, r21240, MPFR_RNDN);
        ;
        mpfr_set_d(r21243, c, MPFR_RNDN);
        mpfr_mul(r21244, r21242, r21243, MPFR_RNDN);
        mpfr_mul(r21245, r21241, r21244, MPFR_RNDN);
        mpfr_set_d(r21246, a, MPFR_RNDN);
        mpfr_div(r21247, r21246, r21235, MPFR_RNDN);
        mpfr_add(r21248, r21247, r21247, MPFR_RNDN);
        mpfr_sub(r21249, r21236, r21235, MPFR_RNDN);
        mpfr_fma(r21250, r21243, r21248, r21249, MPFR_RNDN);
        mpfr_div(r21251, r21245, r21250, MPFR_RNDN);
        ;
        mpfr_set_si(r21253, mpfr_cmp(r21236, r21252) <= 0, MPFR_RNDN);
        mpfr_mul(r21254, r21242, r21246, MPFR_RNDN);
        mpfr_mul(r21255, r21243, r21254, MPFR_RNDN);
        mpfr_mul(r21256, r21235, r21235, MPFR_RNDN);
        mpfr_sub(r21257, r21256, r21255, MPFR_RNDN);
        mpfr_sqrt(r21258, r21257, MPFR_RNDN);
        mpfr_sub(r21259, r21236, r21258, MPFR_RNDN);
        mpfr_div(r21260, r21255, r21259, MPFR_RNDN);
        mpfr_add(r21261, r21246, r21246, MPFR_RNDN);
        mpfr_div(r21262, r21260, r21261, MPFR_RNDN);
        ;
        mpfr_set_si(r21264, mpfr_cmp(r21236, r21263) <= 0, MPFR_RNDN);
        mpfr_add(r21265, r21236, r21258, MPFR_RNDN);
        mpfr_div(r21266, r21261, r21265, MPFR_RNDN);
        mpfr_div(r21267, r21239, r21266, MPFR_RNDN);
        mpfr_fma(r21268, r21247, r21243, r21236, MPFR_RNDN);
        mpfr_div(r21269, r21268, r21246, MPFR_RNDN);
        if (mpfr_get_si(r21264, MPFR_RNDN)) { mpfr_set(r21270, r21267, MPFR_RNDN); } else { mpfr_set(r21270, r21269, MPFR_RNDN); };
        if (mpfr_get_si(r21253, MPFR_RNDN)) { mpfr_set(r21271, r21262, MPFR_RNDN); } else { mpfr_set(r21271, r21270, MPFR_RNDN); };
        if (mpfr_get_si(r21238, MPFR_RNDN)) { mpfr_set(r21272, r21251, MPFR_RNDN); } else { mpfr_set(r21272, r21271, MPFR_RNDN); };
        return mpfr_get_d(r21272, MPFR_RNDN);
}

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

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21273);
        mpfr_init(r21274);
        mpfr_init_set_str(r21275, "-4.681232182683818e+117", 10, MPFR_RNDN);
        mpfr_init(r21276);
        mpfr_init_set_str(r21277, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21278, "2", 10, MPFR_RNDN);
        mpfr_init(r21279);
        mpfr_init_set_str(r21280, "4", 10, MPFR_RNDN);
        mpfr_init(r21281);
        mpfr_init(r21282);
        mpfr_init(r21283);
        mpfr_init(r21284);
        mpfr_init(r21285);
        mpfr_init(r21286);
        mpfr_init(r21287);
        mpfr_init(r21288);
        mpfr_init(r21289);
        mpfr_init_set_str(r21290, "-2.118907474743662e-210", 10, MPFR_RNDN);
        mpfr_init(r21291);
        mpfr_init(r21292);
        mpfr_init(r21293);
        mpfr_init(r21294);
        mpfr_init(r21295);
        mpfr_init(r21296);
        mpfr_init(r21297);
        mpfr_init(r21298);
        mpfr_init(r21299);
        mpfr_init(r21300);
        mpfr_init_set_str(r21301, "7.665518801524091e+112", 10, MPFR_RNDN);
        mpfr_init(r21302);
        mpfr_init(r21303);
        mpfr_init(r21304);
        mpfr_init(r21305);
        mpfr_init(r21306);
        mpfr_init(r21307);
        mpfr_init(r21308);
        mpfr_init(r21309);
        mpfr_init(r21310);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r21273, b, MPFR_RNDN);
        mpfr_neg(r21274, r21273, MPFR_RNDN);
        ;
        mpfr_set_si(r21276, mpfr_cmp(r21274, r21275) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21279, r21277, r21278, MPFR_RNDN);
        ;
        mpfr_set_d(r21281, c, MPFR_RNDN);
        mpfr_mul(r21282, r21280, r21281, MPFR_RNDN);
        mpfr_mul(r21283, r21279, r21282, MPFR_RNDN);
        mpfr_set_d(r21284, a, MPFR_RNDN);
        mpfr_div(r21285, r21284, r21273, MPFR_RNDN);
        mpfr_add(r21286, r21285, r21285, MPFR_RNDN);
        mpfr_sub(r21287, r21274, r21273, MPFR_RNDN);
        mpfr_fma(r21288, r21281, r21286, r21287, MPFR_RNDN);
        mpfr_div(r21289, r21283, r21288, MPFR_RNDN);
        ;
        mpfr_set_si(r21291, mpfr_cmp(r21274, r21290) <= 0, MPFR_RNDN);
        mpfr_mul(r21292, r21280, r21284, MPFR_RNDN);
        mpfr_mul(r21293, r21281, r21292, MPFR_RNDN);
        mpfr_mul(r21294, r21273, r21273, MPFR_RNDN);
        mpfr_sub(r21295, r21294, r21293, MPFR_RNDN);
        mpfr_sqrt(r21296, r21295, MPFR_RNDN);
        mpfr_sub(r21297, r21274, r21296, MPFR_RNDN);
        mpfr_div(r21298, r21293, r21297, MPFR_RNDN);
        mpfr_add(r21299, r21284, r21284, MPFR_RNDN);
        mpfr_div(r21300, r21298, r21299, MPFR_RNDN);
        ;
        mpfr_set_si(r21302, mpfr_cmp(r21274, r21301) <= 0, MPFR_RNDN);
        mpfr_add(r21303, r21274, r21296, MPFR_RNDN);
        mpfr_div(r21304, r21299, r21303, MPFR_RNDN);
        mpfr_div(r21305, r21277, r21304, MPFR_RNDN);
        mpfr_fma(r21306, r21285, r21281, r21274, MPFR_RNDN);
        mpfr_div(r21307, r21306, r21284, MPFR_RNDN);
        if (mpfr_get_si(r21302, MPFR_RNDN)) { mpfr_set(r21308, r21305, MPFR_RNDN); } else { mpfr_set(r21308, r21307, MPFR_RNDN); };
        if (mpfr_get_si(r21291, MPFR_RNDN)) { mpfr_set(r21309, r21300, MPFR_RNDN); } else { mpfr_set(r21309, r21308, MPFR_RNDN); };
        if (mpfr_get_si(r21276, MPFR_RNDN)) { mpfr_set(r21310, r21289, MPFR_RNDN); } else { mpfr_set(r21310, r21309, MPFR_RNDN); };
        return mpfr_get_d(r21310, MPFR_RNDN);
}

