#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "The quadratic formula (r1)";

double f_if(float a, float b, float c) {
        float r40177 = b;
        float r40178 = -r40177;
        float r40179 = r40177 * r40177;
        float r40180 = 4;
        float r40181 = a;
        float r40182 = r40180 * r40181;
        float r40183 = c;
        float r40184 = r40182 * r40183;
        float r40185 = r40179 - r40184;
        float r40186 = sqrt(r40185);
        float r40187 = r40178 + r40186;
        float r40188 = 2;
        float r40189 = r40188 * r40181;
        float r40190 = r40187 / r40189;
        return r40190;
}

double f_id(double a, double b, double c) {
        double r40191 = b;
        double r40192 = -r40191;
        double r40193 = r40191 * r40191;
        double r40194 = 4;
        double r40195 = a;
        double r40196 = r40194 * r40195;
        double r40197 = c;
        double r40198 = r40196 * r40197;
        double r40199 = r40193 - r40198;
        double r40200 = sqrt(r40199);
        double r40201 = r40192 + r40200;
        double r40202 = 2;
        double r40203 = r40202 * r40195;
        double r40204 = r40201 / r40203;
        return r40204;
}


double f_of(float a, float b, float c) {
        float r40205 = b;
        float r40206 = -7.833327672762858e+152;
        bool r40207 = r40205 <= r40206;
        float r40208 = -r40205;
        float r40209 = a;
        float r40210 = r40208 / r40209;
        float r40211 = 7.698366662298276e-138;
        bool r40212 = r40205 <= r40211;
        float r40213 = r40205 * r40205;
        float r40214 = 4;
        float r40215 = r40214 * r40209;
        float r40216 = c;
        float r40217 = r40215 * r40216;
        float r40218 = r40213 - r40217;
        float r40219 = sqrt(r40218);
        float r40220 = r40208 + r40219;
        float r40221 = 2;
        float r40222 = r40221 * r40209;
        float r40223 = r40220 / r40222;
        float r40224 = r40216 / r40205;
        float r40225 = -2;
        float r40226 = r40225 / r40221;
        float r40227 = r40224 * r40226;
        float r40228 = r40212 ? r40223 : r40227;
        float r40229 = r40207 ? r40210 : r40228;
        return r40229;
}

double f_od(double a, double b, double c) {
        double r40230 = b;
        double r40231 = -7.833327672762858e+152;
        bool r40232 = r40230 <= r40231;
        double r40233 = -r40230;
        double r40234 = a;
        double r40235 = r40233 / r40234;
        double r40236 = 7.698366662298276e-138;
        bool r40237 = r40230 <= r40236;
        double r40238 = r40230 * r40230;
        double r40239 = 4;
        double r40240 = r40239 * r40234;
        double r40241 = c;
        double r40242 = r40240 * r40241;
        double r40243 = r40238 - r40242;
        double r40244 = sqrt(r40243);
        double r40245 = r40233 + r40244;
        double r40246 = 2;
        double r40247 = r40246 * r40234;
        double r40248 = r40245 / r40247;
        double r40249 = r40241 / r40230;
        double r40250 = -2;
        double r40251 = r40250 / r40246;
        double r40252 = r40249 * r40251;
        double r40253 = r40237 ? r40248 : r40252;
        double r40254 = r40232 ? r40235 : r40253;
        return r40254;
}

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 r40255, r40256, r40257, r40258, r40259, r40260, r40261, r40262, r40263, r40264, r40265, r40266, r40267, r40268;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r40255);
        mpfr_init(r40256);
        mpfr_init(r40257);
        mpfr_init_set_str(r40258, "4", 10, MPFR_RNDN);
        mpfr_init(r40259);
        mpfr_init(r40260);
        mpfr_init(r40261);
        mpfr_init(r40262);
        mpfr_init(r40263);
        mpfr_init(r40264);
        mpfr_init(r40265);
        mpfr_init_set_str(r40266, "2", 10, MPFR_RNDN);
        mpfr_init(r40267);
        mpfr_init(r40268);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r40255, b, MPFR_RNDN);
        mpfr_neg(r40256, r40255, MPFR_RNDN);
        mpfr_mul(r40257, r40255, r40255, MPFR_RNDN);
        ;
        mpfr_set_d(r40259, a, MPFR_RNDN);
        mpfr_mul(r40260, r40258, r40259, MPFR_RNDN);
        mpfr_set_d(r40261, c, MPFR_RNDN);
        mpfr_mul(r40262, r40260, r40261, MPFR_RNDN);
        mpfr_sub(r40263, r40257, r40262, MPFR_RNDN);
        mpfr_sqrt(r40264, r40263, MPFR_RNDN);
        mpfr_add(r40265, r40256, r40264, MPFR_RNDN);
        ;
        mpfr_mul(r40267, r40266, r40259, MPFR_RNDN);
        mpfr_div(r40268, r40265, r40267, MPFR_RNDN);
        return mpfr_get_d(r40268, MPFR_RNDN);
}

static mpfr_t r40269, r40270, r40271, r40272, r40273, r40274, r40275, r40276, r40277, r40278, r40279, r40280, r40281, r40282, r40283, r40284, r40285, r40286, r40287, r40288, r40289, r40290, r40291, r40292, r40293;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r40269);
        mpfr_init_set_str(r40270, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r40271);
        mpfr_init(r40272);
        mpfr_init(r40273);
        mpfr_init(r40274);
        mpfr_init_set_str(r40275, "7.698366662298276e-138", 10, MPFR_RNDN);
        mpfr_init(r40276);
        mpfr_init(r40277);
        mpfr_init_set_str(r40278, "4", 10, MPFR_RNDN);
        mpfr_init(r40279);
        mpfr_init(r40280);
        mpfr_init(r40281);
        mpfr_init(r40282);
        mpfr_init(r40283);
        mpfr_init(r40284);
        mpfr_init_set_str(r40285, "2", 10, MPFR_RNDN);
        mpfr_init(r40286);
        mpfr_init(r40287);
        mpfr_init(r40288);
        mpfr_init_set_str(r40289, "-2", 10, MPFR_RNDN);
        mpfr_init(r40290);
        mpfr_init(r40291);
        mpfr_init(r40292);
        mpfr_init(r40293);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r40269, b, MPFR_RNDN);
        ;
        mpfr_set_si(r40271, mpfr_cmp(r40269, r40270) <= 0, MPFR_RNDN);
        mpfr_neg(r40272, r40269, MPFR_RNDN);
        mpfr_set_d(r40273, a, MPFR_RNDN);
        mpfr_div(r40274, r40272, r40273, MPFR_RNDN);
        ;
        mpfr_set_si(r40276, mpfr_cmp(r40269, r40275) <= 0, MPFR_RNDN);
        mpfr_mul(r40277, r40269, r40269, MPFR_RNDN);
        ;
        mpfr_mul(r40279, r40278, r40273, MPFR_RNDN);
        mpfr_set_d(r40280, c, MPFR_RNDN);
        mpfr_mul(r40281, r40279, r40280, MPFR_RNDN);
        mpfr_sub(r40282, r40277, r40281, MPFR_RNDN);
        mpfr_sqrt(r40283, r40282, MPFR_RNDN);
        mpfr_add(r40284, r40272, r40283, MPFR_RNDN);
        ;
        mpfr_mul(r40286, r40285, r40273, MPFR_RNDN);
        mpfr_div(r40287, r40284, r40286, MPFR_RNDN);
        mpfr_div(r40288, r40280, r40269, MPFR_RNDN);
        ;
        mpfr_div(r40290, r40289, r40285, MPFR_RNDN);
        mpfr_mul(r40291, r40288, r40290, MPFR_RNDN);
        if (mpfr_get_si(r40276, MPFR_RNDN)) { mpfr_set(r40292, r40287, MPFR_RNDN); } else { mpfr_set(r40292, r40291, MPFR_RNDN); };
        if (mpfr_get_si(r40271, MPFR_RNDN)) { mpfr_set(r40293, r40274, MPFR_RNDN); } else { mpfr_set(r40293, r40292, MPFR_RNDN); };
        return mpfr_get_d(r40293, MPFR_RNDN);
}

static mpfr_t r40294, r40295, r40296, r40297, r40298, r40299, r40300, r40301, r40302, r40303, r40304, r40305, r40306, r40307, r40308, r40309, r40310, r40311, r40312, r40313, r40314, r40315, r40316, r40317, r40318;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r40294);
        mpfr_init_set_str(r40295, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r40296);
        mpfr_init(r40297);
        mpfr_init(r40298);
        mpfr_init(r40299);
        mpfr_init_set_str(r40300, "7.698366662298276e-138", 10, MPFR_RNDN);
        mpfr_init(r40301);
        mpfr_init(r40302);
        mpfr_init_set_str(r40303, "4", 10, MPFR_RNDN);
        mpfr_init(r40304);
        mpfr_init(r40305);
        mpfr_init(r40306);
        mpfr_init(r40307);
        mpfr_init(r40308);
        mpfr_init(r40309);
        mpfr_init_set_str(r40310, "2", 10, MPFR_RNDN);
        mpfr_init(r40311);
        mpfr_init(r40312);
        mpfr_init(r40313);
        mpfr_init_set_str(r40314, "-2", 10, MPFR_RNDN);
        mpfr_init(r40315);
        mpfr_init(r40316);
        mpfr_init(r40317);
        mpfr_init(r40318);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r40294, b, MPFR_RNDN);
        ;
        mpfr_set_si(r40296, mpfr_cmp(r40294, r40295) <= 0, MPFR_RNDN);
        mpfr_neg(r40297, r40294, MPFR_RNDN);
        mpfr_set_d(r40298, a, MPFR_RNDN);
        mpfr_div(r40299, r40297, r40298, MPFR_RNDN);
        ;
        mpfr_set_si(r40301, mpfr_cmp(r40294, r40300) <= 0, MPFR_RNDN);
        mpfr_mul(r40302, r40294, r40294, MPFR_RNDN);
        ;
        mpfr_mul(r40304, r40303, r40298, MPFR_RNDN);
        mpfr_set_d(r40305, c, MPFR_RNDN);
        mpfr_mul(r40306, r40304, r40305, MPFR_RNDN);
        mpfr_sub(r40307, r40302, r40306, MPFR_RNDN);
        mpfr_sqrt(r40308, r40307, MPFR_RNDN);
        mpfr_add(r40309, r40297, r40308, MPFR_RNDN);
        ;
        mpfr_mul(r40311, r40310, r40298, MPFR_RNDN);
        mpfr_div(r40312, r40309, r40311, MPFR_RNDN);
        mpfr_div(r40313, r40305, r40294, MPFR_RNDN);
        ;
        mpfr_div(r40315, r40314, r40310, MPFR_RNDN);
        mpfr_mul(r40316, r40313, r40315, MPFR_RNDN);
        if (mpfr_get_si(r40301, MPFR_RNDN)) { mpfr_set(r40317, r40312, MPFR_RNDN); } else { mpfr_set(r40317, r40316, MPFR_RNDN); };
        if (mpfr_get_si(r40296, MPFR_RNDN)) { mpfr_set(r40318, r40299, MPFR_RNDN); } else { mpfr_set(r40318, r40317, MPFR_RNDN); };
        return mpfr_get_d(r40318, MPFR_RNDN);
}

