#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 r27180 = b;
        float r27181 = -r27180;
        float r27182 = r27180 * r27180;
        float r27183 = 4;
        float r27184 = a;
        float r27185 = r27183 * r27184;
        float r27186 = c;
        float r27187 = r27185 * r27186;
        float r27188 = r27182 - r27187;
        float r27189 = sqrt(r27188);
        float r27190 = r27181 + r27189;
        float r27191 = 2;
        float r27192 = r27191 * r27184;
        float r27193 = r27190 / r27192;
        return r27193;
}

double f_id(double a, double b, double c) {
        double r27194 = b;
        double r27195 = -r27194;
        double r27196 = r27194 * r27194;
        double r27197 = 4;
        double r27198 = a;
        double r27199 = r27197 * r27198;
        double r27200 = c;
        double r27201 = r27199 * r27200;
        double r27202 = r27196 - r27201;
        double r27203 = sqrt(r27202);
        double r27204 = r27195 + r27203;
        double r27205 = 2;
        double r27206 = r27205 * r27198;
        double r27207 = r27204 / r27206;
        return r27207;
}


double f_of(float a, float b, float c) {
        float r27208 = b;
        float r27209 = -r27208;
        float r27210 = -1.6366096550735478e-45;
        bool r27211 = r27209 <= r27210;
        float r27212 = c;
        float r27213 = -r27212;
        float r27214 = r27213 / r27208;
        float r27215 = 6.0685917336100174e+94;
        bool r27216 = r27209 <= r27215;
        float r27217 = 1;
        float r27218 = 2;
        float r27219 = a;
        float r27220 = r27218 * r27219;
        float r27221 = r27217 / r27220;
        float r27222 = r27208 * r27208;
        float r27223 = 4;
        float r27224 = r27219 * r27223;
        float r27225 = r27224 * r27212;
        float r27226 = r27222 - r27225;
        float r27227 = sqrt(r27226);
        float r27228 = r27227 + r27209;
        float r27229 = r27221 * r27228;
        float r27230 = r27212 / r27208;
        float r27231 = r27208 + r27208;
        float r27232 = r27231 / r27220;
        float r27233 = r27230 - r27232;
        float r27234 = r27216 ? r27229 : r27233;
        float r27235 = r27211 ? r27214 : r27234;
        return r27235;
}

double f_od(double a, double b, double c) {
        double r27236 = b;
        double r27237 = -r27236;
        double r27238 = -1.6366096550735478e-45;
        bool r27239 = r27237 <= r27238;
        double r27240 = c;
        double r27241 = -r27240;
        double r27242 = r27241 / r27236;
        double r27243 = 6.0685917336100174e+94;
        bool r27244 = r27237 <= r27243;
        double r27245 = 1;
        double r27246 = 2;
        double r27247 = a;
        double r27248 = r27246 * r27247;
        double r27249 = r27245 / r27248;
        double r27250 = r27236 * r27236;
        double r27251 = 4;
        double r27252 = r27247 * r27251;
        double r27253 = r27252 * r27240;
        double r27254 = r27250 - r27253;
        double r27255 = sqrt(r27254);
        double r27256 = r27255 + r27237;
        double r27257 = r27249 * r27256;
        double r27258 = r27240 / r27236;
        double r27259 = r27236 + r27236;
        double r27260 = r27259 / r27248;
        double r27261 = r27258 - r27260;
        double r27262 = r27244 ? r27257 : r27261;
        double r27263 = r27239 ? r27242 : r27262;
        return r27263;
}

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 r27264, r27265, r27266, r27267, r27268, r27269, r27270, r27271, r27272, r27273, r27274, r27275, r27276, r27277;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r27264);
        mpfr_init(r27265);
        mpfr_init(r27266);
        mpfr_init_set_str(r27267, "4", 10, MPFR_RNDN);
        mpfr_init(r27268);
        mpfr_init(r27269);
        mpfr_init(r27270);
        mpfr_init(r27271);
        mpfr_init(r27272);
        mpfr_init(r27273);
        mpfr_init(r27274);
        mpfr_init_set_str(r27275, "2", 10, MPFR_RNDN);
        mpfr_init(r27276);
        mpfr_init(r27277);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r27264, b, MPFR_RNDN);
        mpfr_neg(r27265, r27264, MPFR_RNDN);
        mpfr_mul(r27266, r27264, r27264, MPFR_RNDN);
        ;
        mpfr_set_d(r27268, a, MPFR_RNDN);
        mpfr_mul(r27269, r27267, r27268, MPFR_RNDN);
        mpfr_set_d(r27270, c, MPFR_RNDN);
        mpfr_mul(r27271, r27269, r27270, MPFR_RNDN);
        mpfr_sub(r27272, r27266, r27271, MPFR_RNDN);
        mpfr_sqrt(r27273, r27272, MPFR_RNDN);
        mpfr_add(r27274, r27265, r27273, MPFR_RNDN);
        ;
        mpfr_mul(r27276, r27275, r27268, MPFR_RNDN);
        mpfr_div(r27277, r27274, r27276, MPFR_RNDN);
        return mpfr_get_d(r27277, MPFR_RNDN);
}

static mpfr_t r27278, r27279, r27280, r27281, r27282, r27283, r27284, r27285, r27286, r27287, r27288, r27289, r27290, r27291, r27292, r27293, r27294, r27295, r27296, r27297, r27298, r27299, r27300, r27301, r27302, r27303, r27304, r27305;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r27278);
        mpfr_init(r27279);
        mpfr_init_set_str(r27280, "-1.6366096550735478e-45", 10, MPFR_RNDN);
        mpfr_init(r27281);
        mpfr_init(r27282);
        mpfr_init(r27283);
        mpfr_init(r27284);
        mpfr_init_set_str(r27285, "6.0685917336100174e+94", 10, MPFR_RNDN);
        mpfr_init(r27286);
        mpfr_init_set_str(r27287, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27288, "2", 10, MPFR_RNDN);
        mpfr_init(r27289);
        mpfr_init(r27290);
        mpfr_init(r27291);
        mpfr_init(r27292);
        mpfr_init_set_str(r27293, "4", 10, MPFR_RNDN);
        mpfr_init(r27294);
        mpfr_init(r27295);
        mpfr_init(r27296);
        mpfr_init(r27297);
        mpfr_init(r27298);
        mpfr_init(r27299);
        mpfr_init(r27300);
        mpfr_init(r27301);
        mpfr_init(r27302);
        mpfr_init(r27303);
        mpfr_init(r27304);
        mpfr_init(r27305);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r27278, b, MPFR_RNDN);
        mpfr_neg(r27279, r27278, MPFR_RNDN);
        ;
        mpfr_set_si(r27281, mpfr_cmp(r27279, r27280) <= 0, MPFR_RNDN);
        mpfr_set_d(r27282, c, MPFR_RNDN);
        mpfr_neg(r27283, r27282, MPFR_RNDN);
        mpfr_div(r27284, r27283, r27278, MPFR_RNDN);
        ;
        mpfr_set_si(r27286, mpfr_cmp(r27279, r27285) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r27289, a, MPFR_RNDN);
        mpfr_mul(r27290, r27288, r27289, MPFR_RNDN);
        mpfr_div(r27291, r27287, r27290, MPFR_RNDN);
        mpfr_mul(r27292, r27278, r27278, MPFR_RNDN);
        ;
        mpfr_mul(r27294, r27289, r27293, MPFR_RNDN);
        mpfr_mul(r27295, r27294, r27282, MPFR_RNDN);
        mpfr_sub(r27296, r27292, r27295, MPFR_RNDN);
        mpfr_sqrt(r27297, r27296, MPFR_RNDN);
        mpfr_add(r27298, r27297, r27279, MPFR_RNDN);
        mpfr_mul(r27299, r27291, r27298, MPFR_RNDN);
        mpfr_div(r27300, r27282, r27278, MPFR_RNDN);
        mpfr_add(r27301, r27278, r27278, MPFR_RNDN);
        mpfr_div(r27302, r27301, r27290, MPFR_RNDN);
        mpfr_sub(r27303, r27300, r27302, MPFR_RNDN);
        if (mpfr_get_si(r27286, MPFR_RNDN)) { mpfr_set(r27304, r27299, MPFR_RNDN); } else { mpfr_set(r27304, r27303, MPFR_RNDN); };
        if (mpfr_get_si(r27281, MPFR_RNDN)) { mpfr_set(r27305, r27284, MPFR_RNDN); } else { mpfr_set(r27305, r27304, MPFR_RNDN); };
        return mpfr_get_d(r27305, MPFR_RNDN);
}

static mpfr_t r27306, r27307, r27308, r27309, r27310, r27311, r27312, r27313, r27314, r27315, r27316, r27317, r27318, r27319, r27320, r27321, r27322, r27323, r27324, r27325, r27326, r27327, r27328, r27329, r27330, r27331, r27332, r27333;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r27306);
        mpfr_init(r27307);
        mpfr_init_set_str(r27308, "-1.6366096550735478e-45", 10, MPFR_RNDN);
        mpfr_init(r27309);
        mpfr_init(r27310);
        mpfr_init(r27311);
        mpfr_init(r27312);
        mpfr_init_set_str(r27313, "6.0685917336100174e+94", 10, MPFR_RNDN);
        mpfr_init(r27314);
        mpfr_init_set_str(r27315, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27316, "2", 10, MPFR_RNDN);
        mpfr_init(r27317);
        mpfr_init(r27318);
        mpfr_init(r27319);
        mpfr_init(r27320);
        mpfr_init_set_str(r27321, "4", 10, MPFR_RNDN);
        mpfr_init(r27322);
        mpfr_init(r27323);
        mpfr_init(r27324);
        mpfr_init(r27325);
        mpfr_init(r27326);
        mpfr_init(r27327);
        mpfr_init(r27328);
        mpfr_init(r27329);
        mpfr_init(r27330);
        mpfr_init(r27331);
        mpfr_init(r27332);
        mpfr_init(r27333);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r27306, b, MPFR_RNDN);
        mpfr_neg(r27307, r27306, MPFR_RNDN);
        ;
        mpfr_set_si(r27309, mpfr_cmp(r27307, r27308) <= 0, MPFR_RNDN);
        mpfr_set_d(r27310, c, MPFR_RNDN);
        mpfr_neg(r27311, r27310, MPFR_RNDN);
        mpfr_div(r27312, r27311, r27306, MPFR_RNDN);
        ;
        mpfr_set_si(r27314, mpfr_cmp(r27307, r27313) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r27317, a, MPFR_RNDN);
        mpfr_mul(r27318, r27316, r27317, MPFR_RNDN);
        mpfr_div(r27319, r27315, r27318, MPFR_RNDN);
        mpfr_mul(r27320, r27306, r27306, MPFR_RNDN);
        ;
        mpfr_mul(r27322, r27317, r27321, MPFR_RNDN);
        mpfr_mul(r27323, r27322, r27310, MPFR_RNDN);
        mpfr_sub(r27324, r27320, r27323, MPFR_RNDN);
        mpfr_sqrt(r27325, r27324, MPFR_RNDN);
        mpfr_add(r27326, r27325, r27307, MPFR_RNDN);
        mpfr_mul(r27327, r27319, r27326, MPFR_RNDN);
        mpfr_div(r27328, r27310, r27306, MPFR_RNDN);
        mpfr_add(r27329, r27306, r27306, MPFR_RNDN);
        mpfr_div(r27330, r27329, r27318, MPFR_RNDN);
        mpfr_sub(r27331, r27328, r27330, MPFR_RNDN);
        if (mpfr_get_si(r27314, MPFR_RNDN)) { mpfr_set(r27332, r27327, MPFR_RNDN); } else { mpfr_set(r27332, r27331, MPFR_RNDN); };
        if (mpfr_get_si(r27309, MPFR_RNDN)) { mpfr_set(r27333, r27312, MPFR_RNDN); } else { mpfr_set(r27333, r27332, MPFR_RNDN); };
        return mpfr_get_d(r27333, MPFR_RNDN);
}

