#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 r8198 = b;
        float r8199 = -r8198;
        float r8200 = r8198 * r8198;
        float r8201 = 4.0f;
        float r8202 = a;
        float r8203 = r8201 * r8202;
        float r8204 = c;
        float r8205 = r8203 * r8204;
        float r8206 = r8200 - r8205;
        float r8207 = sqrt(r8206);
        float r8208 = r8199 + r8207;
        float r8209 = 2.0f;
        float r8210 = r8209 * r8202;
        float r8211 = r8208 / r8210;
        return r8211;
}

double f_id(double a, double b, double c) {
        double r8212 = b;
        double r8213 = -r8212;
        double r8214 = r8212 * r8212;
        double r8215 = 4.0;
        double r8216 = a;
        double r8217 = r8215 * r8216;
        double r8218 = c;
        double r8219 = r8217 * r8218;
        double r8220 = r8214 - r8219;
        double r8221 = sqrt(r8220);
        double r8222 = r8213 + r8221;
        double r8223 = 2.0;
        double r8224 = r8223 * r8216;
        double r8225 = r8222 / r8224;
        return r8225;
}


double f_of(float a, float b, float c) {
        float r8226 = b;
        float r8227 = -1.3338600865169524e+85f;
        bool r8228 = r8226 <= r8227;
        float r8229 = a;
        float r8230 = r8226 / r8229;
        float r8231 = -r8230;
        float r8232 = 1.5616348041811878e-106f;
        bool r8233 = r8226 <= r8232;
        float r8234 = r8226 * r8226;
        float r8235 = c;
        float r8236 = r8229 * r8235;
        float r8237 = 4.0f;
        float r8238 = r8236 * r8237;
        float r8239 = r8234 - r8238;
        float r8240 = sqrt(r8239);
        float r8241 = r8240 - r8226;
        float r8242 = 1.0f;
        float r8243 = 2.0f;
        float r8244 = r8229 * r8243;
        float r8245 = r8242 / r8244;
        float r8246 = r8241 * r8245;
        float r8247 = 2.9849414744995752e+82f;
        bool r8248 = r8226 <= r8247;
        float r8249 = -r8237;
        float r8250 = r8236 * r8249;
        float r8251 = r8250 / r8244;
        float r8252 = r8240 + r8226;
        float r8253 = r8251 / r8252;
        float r8254 = -r8235;
        float r8255 = r8254 / r8226;
        float r8256 = r8248 ? r8253 : r8255;
        float r8257 = r8233 ? r8246 : r8256;
        float r8258 = r8228 ? r8231 : r8257;
        return r8258;
}

double f_od(double a, double b, double c) {
        double r8259 = b;
        double r8260 = -1.3338600865169524e+85;
        bool r8261 = r8259 <= r8260;
        double r8262 = a;
        double r8263 = r8259 / r8262;
        double r8264 = -r8263;
        double r8265 = 1.5616348041811878e-106;
        bool r8266 = r8259 <= r8265;
        double r8267 = r8259 * r8259;
        double r8268 = c;
        double r8269 = r8262 * r8268;
        double r8270 = 4.0;
        double r8271 = r8269 * r8270;
        double r8272 = r8267 - r8271;
        double r8273 = sqrt(r8272);
        double r8274 = r8273 - r8259;
        double r8275 = 1.0;
        double r8276 = 2.0;
        double r8277 = r8262 * r8276;
        double r8278 = r8275 / r8277;
        double r8279 = r8274 * r8278;
        double r8280 = 2.9849414744995752e+82;
        bool r8281 = r8259 <= r8280;
        double r8282 = -r8270;
        double r8283 = r8269 * r8282;
        double r8284 = r8283 / r8277;
        double r8285 = r8273 + r8259;
        double r8286 = r8284 / r8285;
        double r8287 = -r8268;
        double r8288 = r8287 / r8259;
        double r8289 = r8281 ? r8286 : r8288;
        double r8290 = r8266 ? r8279 : r8289;
        double r8291 = r8261 ? r8264 : r8290;
        return r8291;
}

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 r8292, r8293, r8294, r8295, r8296, r8297, r8298, r8299, r8300, r8301, r8302, r8303, r8304, r8305;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8292);
        mpfr_init(r8293);
        mpfr_init(r8294);
        mpfr_init_set_str(r8295, "4", 10, MPFR_RNDN);
        mpfr_init(r8296);
        mpfr_init(r8297);
        mpfr_init(r8298);
        mpfr_init(r8299);
        mpfr_init(r8300);
        mpfr_init(r8301);
        mpfr_init(r8302);
        mpfr_init_set_str(r8303, "2", 10, MPFR_RNDN);
        mpfr_init(r8304);
        mpfr_init(r8305);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r8292, b, MPFR_RNDN);
        mpfr_neg(r8293, r8292, MPFR_RNDN);
        mpfr_mul(r8294, r8292, r8292, MPFR_RNDN);
        ;
        mpfr_set_d(r8296, a, MPFR_RNDN);
        mpfr_mul(r8297, r8295, r8296, MPFR_RNDN);
        mpfr_set_d(r8298, c, MPFR_RNDN);
        mpfr_mul(r8299, r8297, r8298, MPFR_RNDN);
        mpfr_sub(r8300, r8294, r8299, MPFR_RNDN);
        mpfr_sqrt(r8301, r8300, MPFR_RNDN);
        mpfr_add(r8302, r8293, r8301, MPFR_RNDN);
        ;
        mpfr_mul(r8304, r8303, r8296, MPFR_RNDN);
        mpfr_div(r8305, r8302, r8304, MPFR_RNDN);
        return mpfr_get_d(r8305, MPFR_RNDN);
}

static mpfr_t r8306, r8307, r8308, r8309, r8310, r8311, r8312, r8313, r8314, r8315, r8316, r8317, r8318, r8319, r8320, r8321, r8322, r8323, r8324, r8325, r8326, r8327, r8328, r8329, r8330, r8331, r8332, r8333, r8334, r8335, r8336, r8337, r8338;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8306);
        mpfr_init_set_str(r8307, "-1.3338600865169524e+85", 10, MPFR_RNDN);
        mpfr_init(r8308);
        mpfr_init(r8309);
        mpfr_init(r8310);
        mpfr_init(r8311);
        mpfr_init_set_str(r8312, "1.5616348041811878e-106", 10, MPFR_RNDN);
        mpfr_init(r8313);
        mpfr_init(r8314);
        mpfr_init(r8315);
        mpfr_init(r8316);
        mpfr_init_set_str(r8317, "4", 10, MPFR_RNDN);
        mpfr_init(r8318);
        mpfr_init(r8319);
        mpfr_init(r8320);
        mpfr_init(r8321);
        mpfr_init_set_str(r8322, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8323, "2", 10, MPFR_RNDN);
        mpfr_init(r8324);
        mpfr_init(r8325);
        mpfr_init(r8326);
        mpfr_init_set_str(r8327, "2.9849414744995752e+82", 10, MPFR_RNDN);
        mpfr_init(r8328);
        mpfr_init(r8329);
        mpfr_init(r8330);
        mpfr_init(r8331);
        mpfr_init(r8332);
        mpfr_init(r8333);
        mpfr_init(r8334);
        mpfr_init(r8335);
        mpfr_init(r8336);
        mpfr_init(r8337);
        mpfr_init(r8338);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r8306, b, MPFR_RNDN);
        ;
        mpfr_set_si(r8308, mpfr_cmp(r8306, r8307) <= 0, MPFR_RNDN);
        mpfr_set_d(r8309, a, MPFR_RNDN);
        mpfr_div(r8310, r8306, r8309, MPFR_RNDN);
        mpfr_neg(r8311, r8310, MPFR_RNDN);
        ;
        mpfr_set_si(r8313, mpfr_cmp(r8306, r8312) <= 0, MPFR_RNDN);
        mpfr_mul(r8314, r8306, r8306, MPFR_RNDN);
        mpfr_set_d(r8315, c, MPFR_RNDN);
        mpfr_mul(r8316, r8309, r8315, MPFR_RNDN);
        ;
        mpfr_mul(r8318, r8316, r8317, MPFR_RNDN);
        mpfr_sub(r8319, r8314, r8318, MPFR_RNDN);
        mpfr_sqrt(r8320, r8319, MPFR_RNDN);
        mpfr_sub(r8321, r8320, r8306, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r8324, r8309, r8323, MPFR_RNDN);
        mpfr_div(r8325, r8322, r8324, MPFR_RNDN);
        mpfr_mul(r8326, r8321, r8325, MPFR_RNDN);
        ;
        mpfr_set_si(r8328, mpfr_cmp(r8306, r8327) <= 0, MPFR_RNDN);
        mpfr_neg(r8329, r8317, MPFR_RNDN);
        mpfr_mul(r8330, r8316, r8329, MPFR_RNDN);
        mpfr_div(r8331, r8330, r8324, MPFR_RNDN);
        mpfr_add(r8332, r8320, r8306, MPFR_RNDN);
        mpfr_div(r8333, r8331, r8332, MPFR_RNDN);
        mpfr_neg(r8334, r8315, MPFR_RNDN);
        mpfr_div(r8335, r8334, r8306, MPFR_RNDN);
        if (mpfr_get_si(r8328, MPFR_RNDN)) { mpfr_set(r8336, r8333, MPFR_RNDN); } else { mpfr_set(r8336, r8335, MPFR_RNDN); };
        if (mpfr_get_si(r8313, MPFR_RNDN)) { mpfr_set(r8337, r8326, MPFR_RNDN); } else { mpfr_set(r8337, r8336, MPFR_RNDN); };
        if (mpfr_get_si(r8308, MPFR_RNDN)) { mpfr_set(r8338, r8311, MPFR_RNDN); } else { mpfr_set(r8338, r8337, MPFR_RNDN); };
        return mpfr_get_d(r8338, MPFR_RNDN);
}

static mpfr_t r8339, r8340, r8341, r8342, r8343, r8344, r8345, r8346, r8347, r8348, r8349, r8350, r8351, r8352, r8353, r8354, r8355, r8356, r8357, r8358, r8359, r8360, r8361, r8362, r8363, r8364, r8365, r8366, r8367, r8368, r8369, r8370, r8371;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8339);
        mpfr_init_set_str(r8340, "-1.3338600865169524e+85", 10, MPFR_RNDN);
        mpfr_init(r8341);
        mpfr_init(r8342);
        mpfr_init(r8343);
        mpfr_init(r8344);
        mpfr_init_set_str(r8345, "1.5616348041811878e-106", 10, MPFR_RNDN);
        mpfr_init(r8346);
        mpfr_init(r8347);
        mpfr_init(r8348);
        mpfr_init(r8349);
        mpfr_init_set_str(r8350, "4", 10, MPFR_RNDN);
        mpfr_init(r8351);
        mpfr_init(r8352);
        mpfr_init(r8353);
        mpfr_init(r8354);
        mpfr_init_set_str(r8355, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8356, "2", 10, MPFR_RNDN);
        mpfr_init(r8357);
        mpfr_init(r8358);
        mpfr_init(r8359);
        mpfr_init_set_str(r8360, "2.9849414744995752e+82", 10, MPFR_RNDN);
        mpfr_init(r8361);
        mpfr_init(r8362);
        mpfr_init(r8363);
        mpfr_init(r8364);
        mpfr_init(r8365);
        mpfr_init(r8366);
        mpfr_init(r8367);
        mpfr_init(r8368);
        mpfr_init(r8369);
        mpfr_init(r8370);
        mpfr_init(r8371);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r8339, b, MPFR_RNDN);
        ;
        mpfr_set_si(r8341, mpfr_cmp(r8339, r8340) <= 0, MPFR_RNDN);
        mpfr_set_d(r8342, a, MPFR_RNDN);
        mpfr_div(r8343, r8339, r8342, MPFR_RNDN);
        mpfr_neg(r8344, r8343, MPFR_RNDN);
        ;
        mpfr_set_si(r8346, mpfr_cmp(r8339, r8345) <= 0, MPFR_RNDN);
        mpfr_mul(r8347, r8339, r8339, MPFR_RNDN);
        mpfr_set_d(r8348, c, MPFR_RNDN);
        mpfr_mul(r8349, r8342, r8348, MPFR_RNDN);
        ;
        mpfr_mul(r8351, r8349, r8350, MPFR_RNDN);
        mpfr_sub(r8352, r8347, r8351, MPFR_RNDN);
        mpfr_sqrt(r8353, r8352, MPFR_RNDN);
        mpfr_sub(r8354, r8353, r8339, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r8357, r8342, r8356, MPFR_RNDN);
        mpfr_div(r8358, r8355, r8357, MPFR_RNDN);
        mpfr_mul(r8359, r8354, r8358, MPFR_RNDN);
        ;
        mpfr_set_si(r8361, mpfr_cmp(r8339, r8360) <= 0, MPFR_RNDN);
        mpfr_neg(r8362, r8350, MPFR_RNDN);
        mpfr_mul(r8363, r8349, r8362, MPFR_RNDN);
        mpfr_div(r8364, r8363, r8357, MPFR_RNDN);
        mpfr_add(r8365, r8353, r8339, MPFR_RNDN);
        mpfr_div(r8366, r8364, r8365, MPFR_RNDN);
        mpfr_neg(r8367, r8348, MPFR_RNDN);
        mpfr_div(r8368, r8367, r8339, MPFR_RNDN);
        if (mpfr_get_si(r8361, MPFR_RNDN)) { mpfr_set(r8369, r8366, MPFR_RNDN); } else { mpfr_set(r8369, r8368, MPFR_RNDN); };
        if (mpfr_get_si(r8346, MPFR_RNDN)) { mpfr_set(r8370, r8359, MPFR_RNDN); } else { mpfr_set(r8370, r8369, MPFR_RNDN); };
        if (mpfr_get_si(r8341, MPFR_RNDN)) { mpfr_set(r8371, r8344, MPFR_RNDN); } else { mpfr_set(r8371, r8370, MPFR_RNDN); };
        return mpfr_get_d(r8371, MPFR_RNDN);
}

