#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 r27188 = b;
        float r27189 = -r27188;
        float r27190 = r27188 * r27188;
        float r27191 = 4;
        float r27192 = a;
        float r27193 = r27191 * r27192;
        float r27194 = c;
        float r27195 = r27193 * r27194;
        float r27196 = r27190 - r27195;
        float r27197 = sqrt(r27196);
        float r27198 = r27189 + r27197;
        float r27199 = 2;
        float r27200 = r27199 * r27192;
        float r27201 = r27198 / r27200;
        return r27201;
}

double f_id(double a, double b, double c) {
        double r27202 = b;
        double r27203 = -r27202;
        double r27204 = r27202 * r27202;
        double r27205 = 4;
        double r27206 = a;
        double r27207 = r27205 * r27206;
        double r27208 = c;
        double r27209 = r27207 * r27208;
        double r27210 = r27204 - r27209;
        double r27211 = sqrt(r27210);
        double r27212 = r27203 + r27211;
        double r27213 = 2;
        double r27214 = r27213 * r27206;
        double r27215 = r27212 / r27214;
        return r27215;
}


double f_of(float a, float b, float c) {
        float r27216 = b;
        float r27217 = -r27216;
        float r27218 = -1.6366096550735478e-45;
        bool r27219 = r27217 <= r27218;
        float r27220 = c;
        float r27221 = -r27220;
        float r27222 = r27221 / r27216;
        float r27223 = 6.0685917336100174e+94;
        bool r27224 = r27217 <= r27223;
        float r27225 = 1;
        float r27226 = a;
        float r27227 = 2;
        float r27228 = r27226 * r27227;
        float r27229 = r27216 * r27216;
        float r27230 = 4;
        float r27231 = r27226 * r27220;
        float r27232 = r27230 * r27231;
        float r27233 = r27229 - r27232;
        float r27234 = sqrt(r27233);
        float r27235 = r27234 - r27216;
        float r27236 = r27228 / r27235;
        float r27237 = r27225 / r27236;
        float r27238 = r27220 / r27216;
        float r27239 = r27216 + r27216;
        float r27240 = r27239 / r27228;
        float r27241 = r27238 - r27240;
        float r27242 = r27224 ? r27237 : r27241;
        float r27243 = r27219 ? r27222 : r27242;
        return r27243;
}

double f_od(double a, double b, double c) {
        double r27244 = b;
        double r27245 = -r27244;
        double r27246 = -1.6366096550735478e-45;
        bool r27247 = r27245 <= r27246;
        double r27248 = c;
        double r27249 = -r27248;
        double r27250 = r27249 / r27244;
        double r27251 = 6.0685917336100174e+94;
        bool r27252 = r27245 <= r27251;
        double r27253 = 1;
        double r27254 = a;
        double r27255 = 2;
        double r27256 = r27254 * r27255;
        double r27257 = r27244 * r27244;
        double r27258 = 4;
        double r27259 = r27254 * r27248;
        double r27260 = r27258 * r27259;
        double r27261 = r27257 - r27260;
        double r27262 = sqrt(r27261);
        double r27263 = r27262 - r27244;
        double r27264 = r27256 / r27263;
        double r27265 = r27253 / r27264;
        double r27266 = r27248 / r27244;
        double r27267 = r27244 + r27244;
        double r27268 = r27267 / r27256;
        double r27269 = r27266 - r27268;
        double r27270 = r27252 ? r27265 : r27269;
        double r27271 = r27247 ? r27250 : r27270;
        return r27271;
}

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 r27272, r27273, r27274, r27275, r27276, r27277, r27278, r27279, r27280, r27281, r27282, r27283, r27284, r27285;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r27272);
        mpfr_init(r27273);
        mpfr_init(r27274);
        mpfr_init_set_str(r27275, "4", 10, MPFR_RNDN);
        mpfr_init(r27276);
        mpfr_init(r27277);
        mpfr_init(r27278);
        mpfr_init(r27279);
        mpfr_init(r27280);
        mpfr_init(r27281);
        mpfr_init(r27282);
        mpfr_init_set_str(r27283, "2", 10, MPFR_RNDN);
        mpfr_init(r27284);
        mpfr_init(r27285);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r27272, b, MPFR_RNDN);
        mpfr_neg(r27273, r27272, MPFR_RNDN);
        mpfr_mul(r27274, r27272, r27272, MPFR_RNDN);
        ;
        mpfr_set_d(r27276, a, MPFR_RNDN);
        mpfr_mul(r27277, r27275, r27276, MPFR_RNDN);
        mpfr_set_d(r27278, c, MPFR_RNDN);
        mpfr_mul(r27279, r27277, r27278, MPFR_RNDN);
        mpfr_sub(r27280, r27274, r27279, MPFR_RNDN);
        mpfr_sqrt(r27281, r27280, MPFR_RNDN);
        mpfr_add(r27282, r27273, r27281, MPFR_RNDN);
        ;
        mpfr_mul(r27284, r27283, r27276, MPFR_RNDN);
        mpfr_div(r27285, r27282, r27284, MPFR_RNDN);
        return mpfr_get_d(r27285, MPFR_RNDN);
}

static mpfr_t r27286, r27287, r27288, r27289, r27290, r27291, r27292, r27293, r27294, r27295, r27296, r27297, r27298, r27299, r27300, r27301, r27302, r27303, r27304, r27305, r27306, r27307, r27308, r27309, r27310, r27311, r27312, r27313;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r27286);
        mpfr_init(r27287);
        mpfr_init_set_str(r27288, "-1.6366096550735478e-45", 10, MPFR_RNDN);
        mpfr_init(r27289);
        mpfr_init(r27290);
        mpfr_init(r27291);
        mpfr_init(r27292);
        mpfr_init_set_str(r27293, "6.0685917336100174e+94", 10, MPFR_RNDN);
        mpfr_init(r27294);
        mpfr_init_set_str(r27295, "1", 10, MPFR_RNDN);
        mpfr_init(r27296);
        mpfr_init_set_str(r27297, "2", 10, MPFR_RNDN);
        mpfr_init(r27298);
        mpfr_init(r27299);
        mpfr_init_set_str(r27300, "4", 10, MPFR_RNDN);
        mpfr_init(r27301);
        mpfr_init(r27302);
        mpfr_init(r27303);
        mpfr_init(r27304);
        mpfr_init(r27305);
        mpfr_init(r27306);
        mpfr_init(r27307);
        mpfr_init(r27308);
        mpfr_init(r27309);
        mpfr_init(r27310);
        mpfr_init(r27311);
        mpfr_init(r27312);
        mpfr_init(r27313);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r27286, b, MPFR_RNDN);
        mpfr_neg(r27287, r27286, MPFR_RNDN);
        ;
        mpfr_set_si(r27289, mpfr_cmp(r27287, r27288) <= 0, MPFR_RNDN);
        mpfr_set_d(r27290, c, MPFR_RNDN);
        mpfr_neg(r27291, r27290, MPFR_RNDN);
        mpfr_div(r27292, r27291, r27286, MPFR_RNDN);
        ;
        mpfr_set_si(r27294, mpfr_cmp(r27287, r27293) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r27296, a, MPFR_RNDN);
        ;
        mpfr_mul(r27298, r27296, r27297, MPFR_RNDN);
        mpfr_mul(r27299, r27286, r27286, MPFR_RNDN);
        ;
        mpfr_mul(r27301, r27296, r27290, MPFR_RNDN);
        mpfr_mul(r27302, r27300, r27301, MPFR_RNDN);
        mpfr_sub(r27303, r27299, r27302, MPFR_RNDN);
        mpfr_sqrt(r27304, r27303, MPFR_RNDN);
        mpfr_sub(r27305, r27304, r27286, MPFR_RNDN);
        mpfr_div(r27306, r27298, r27305, MPFR_RNDN);
        mpfr_div(r27307, r27295, r27306, MPFR_RNDN);
        mpfr_div(r27308, r27290, r27286, MPFR_RNDN);
        mpfr_add(r27309, r27286, r27286, MPFR_RNDN);
        mpfr_div(r27310, r27309, r27298, MPFR_RNDN);
        mpfr_sub(r27311, r27308, r27310, MPFR_RNDN);
        if (mpfr_get_si(r27294, MPFR_RNDN)) { mpfr_set(r27312, r27307, MPFR_RNDN); } else { mpfr_set(r27312, r27311, MPFR_RNDN); };
        if (mpfr_get_si(r27289, MPFR_RNDN)) { mpfr_set(r27313, r27292, MPFR_RNDN); } else { mpfr_set(r27313, r27312, MPFR_RNDN); };
        return mpfr_get_d(r27313, MPFR_RNDN);
}

static mpfr_t r27314, r27315, r27316, r27317, r27318, r27319, r27320, r27321, r27322, r27323, r27324, r27325, r27326, r27327, r27328, r27329, r27330, r27331, r27332, r27333, r27334, r27335, r27336, r27337, r27338, r27339, r27340, r27341;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r27314);
        mpfr_init(r27315);
        mpfr_init_set_str(r27316, "-1.6366096550735478e-45", 10, MPFR_RNDN);
        mpfr_init(r27317);
        mpfr_init(r27318);
        mpfr_init(r27319);
        mpfr_init(r27320);
        mpfr_init_set_str(r27321, "6.0685917336100174e+94", 10, MPFR_RNDN);
        mpfr_init(r27322);
        mpfr_init_set_str(r27323, "1", 10, MPFR_RNDN);
        mpfr_init(r27324);
        mpfr_init_set_str(r27325, "2", 10, MPFR_RNDN);
        mpfr_init(r27326);
        mpfr_init(r27327);
        mpfr_init_set_str(r27328, "4", 10, MPFR_RNDN);
        mpfr_init(r27329);
        mpfr_init(r27330);
        mpfr_init(r27331);
        mpfr_init(r27332);
        mpfr_init(r27333);
        mpfr_init(r27334);
        mpfr_init(r27335);
        mpfr_init(r27336);
        mpfr_init(r27337);
        mpfr_init(r27338);
        mpfr_init(r27339);
        mpfr_init(r27340);
        mpfr_init(r27341);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r27314, b, MPFR_RNDN);
        mpfr_neg(r27315, r27314, MPFR_RNDN);
        ;
        mpfr_set_si(r27317, mpfr_cmp(r27315, r27316) <= 0, MPFR_RNDN);
        mpfr_set_d(r27318, c, MPFR_RNDN);
        mpfr_neg(r27319, r27318, MPFR_RNDN);
        mpfr_div(r27320, r27319, r27314, MPFR_RNDN);
        ;
        mpfr_set_si(r27322, mpfr_cmp(r27315, r27321) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r27324, a, MPFR_RNDN);
        ;
        mpfr_mul(r27326, r27324, r27325, MPFR_RNDN);
        mpfr_mul(r27327, r27314, r27314, MPFR_RNDN);
        ;
        mpfr_mul(r27329, r27324, r27318, MPFR_RNDN);
        mpfr_mul(r27330, r27328, r27329, MPFR_RNDN);
        mpfr_sub(r27331, r27327, r27330, MPFR_RNDN);
        mpfr_sqrt(r27332, r27331, MPFR_RNDN);
        mpfr_sub(r27333, r27332, r27314, MPFR_RNDN);
        mpfr_div(r27334, r27326, r27333, MPFR_RNDN);
        mpfr_div(r27335, r27323, r27334, MPFR_RNDN);
        mpfr_div(r27336, r27318, r27314, MPFR_RNDN);
        mpfr_add(r27337, r27314, r27314, MPFR_RNDN);
        mpfr_div(r27338, r27337, r27326, MPFR_RNDN);
        mpfr_sub(r27339, r27336, r27338, MPFR_RNDN);
        if (mpfr_get_si(r27322, MPFR_RNDN)) { mpfr_set(r27340, r27335, MPFR_RNDN); } else { mpfr_set(r27340, r27339, MPFR_RNDN); };
        if (mpfr_get_si(r27317, MPFR_RNDN)) { mpfr_set(r27341, r27320, MPFR_RNDN); } else { mpfr_set(r27341, r27340, MPFR_RNDN); };
        return mpfr_get_d(r27341, MPFR_RNDN);
}

