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

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

double f_if(float a, float b, float c) {
        float r22343 = b;
        float r22344 = -r22343;
        float r22345 = r22343 * r22343;
        float r22346 = 4;
        float r22347 = a;
        float r22348 = c;
        float r22349 = r22347 * r22348;
        float r22350 = r22346 * r22349;
        float r22351 = r22345 - r22350;
        float r22352 = sqrt(r22351);
        float r22353 = r22344 - r22352;
        float r22354 = 2;
        float r22355 = r22354 * r22347;
        float r22356 = r22353 / r22355;
        return r22356;
}

double f_id(double a, double b, double c) {
        double r22357 = b;
        double r22358 = -r22357;
        double r22359 = r22357 * r22357;
        double r22360 = 4;
        double r22361 = a;
        double r22362 = c;
        double r22363 = r22361 * r22362;
        double r22364 = r22360 * r22363;
        double r22365 = r22359 - r22364;
        double r22366 = sqrt(r22365);
        double r22367 = r22358 - r22366;
        double r22368 = 2;
        double r22369 = r22368 * r22361;
        double r22370 = r22367 / r22369;
        return r22370;
}


double f_of(float a, float b, float c) {
        float r22371 = b;
        float r22372 = -4.352627690078744e+48;
        bool r22373 = r22371 <= r22372;
        float r22374 = c;
        float r22375 = -r22374;
        float r22376 = r22375 / r22371;
        float r22377 = 1;
        float r22378 = r22376 / r22377;
        float r22379 = -2.0089291940149467e-121;
        bool r22380 = r22371 <= r22379;
        float r22381 = a;
        float r22382 = r22381 * r22374;
        float r22383 = 4;
        float r22384 = r22382 * r22383;
        float r22385 = r22381 * r22383;
        float r22386 = r22371 * r22371;
        float r22387 = fma(r22385, r22375, r22386);
        float r22388 = sqrt(r22387);
        float r22389 = r22388 - r22371;
        float r22390 = r22384 / r22389;
        float r22391 = 2;
        float r22392 = r22381 * r22391;
        float r22393 = r22390 / r22392;
        float r22394 = -1.1884183040588929e-133;
        bool r22395 = r22371 <= r22394;
        float r22396 = 6.832382137151648e+104;
        bool r22397 = r22371 <= r22396;
        float r22398 = -r22371;
        float r22399 = r22386 - r22384;
        float r22400 = sqrt(r22399);
        float r22401 = r22398 - r22400;
        float r22402 = r22392 / r22401;
        float r22403 = r22377 / r22402;
        float r22404 = r22371 / r22374;
        float r22405 = r22392 / r22404;
        float r22406 = r22371 + r22371;
        float r22407 = r22405 - r22406;
        float r22408 = r22407 / r22392;
        float r22409 = r22397 ? r22403 : r22408;
        float r22410 = r22395 ? r22378 : r22409;
        float r22411 = r22380 ? r22393 : r22410;
        float r22412 = r22373 ? r22378 : r22411;
        return r22412;
}

double f_od(double a, double b, double c) {
        double r22413 = b;
        double r22414 = -4.352627690078744e+48;
        bool r22415 = r22413 <= r22414;
        double r22416 = c;
        double r22417 = -r22416;
        double r22418 = r22417 / r22413;
        double r22419 = 1;
        double r22420 = r22418 / r22419;
        double r22421 = -2.0089291940149467e-121;
        bool r22422 = r22413 <= r22421;
        double r22423 = a;
        double r22424 = r22423 * r22416;
        double r22425 = 4;
        double r22426 = r22424 * r22425;
        double r22427 = r22423 * r22425;
        double r22428 = r22413 * r22413;
        double r22429 = fma(r22427, r22417, r22428);
        double r22430 = sqrt(r22429);
        double r22431 = r22430 - r22413;
        double r22432 = r22426 / r22431;
        double r22433 = 2;
        double r22434 = r22423 * r22433;
        double r22435 = r22432 / r22434;
        double r22436 = -1.1884183040588929e-133;
        bool r22437 = r22413 <= r22436;
        double r22438 = 6.832382137151648e+104;
        bool r22439 = r22413 <= r22438;
        double r22440 = -r22413;
        double r22441 = r22428 - r22426;
        double r22442 = sqrt(r22441);
        double r22443 = r22440 - r22442;
        double r22444 = r22434 / r22443;
        double r22445 = r22419 / r22444;
        double r22446 = r22413 / r22416;
        double r22447 = r22434 / r22446;
        double r22448 = r22413 + r22413;
        double r22449 = r22447 - r22448;
        double r22450 = r22449 / r22434;
        double r22451 = r22439 ? r22445 : r22450;
        double r22452 = r22437 ? r22420 : r22451;
        double r22453 = r22422 ? r22435 : r22452;
        double r22454 = r22415 ? r22420 : r22453;
        return r22454;
}

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 r22455, r22456, r22457, r22458, r22459, r22460, r22461, r22462, r22463, r22464, r22465, r22466, r22467, r22468;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init(r22455);
        mpfr_init(r22456);
        mpfr_init(r22457);
        mpfr_init_set_str(r22458, "4", 10, MPFR_RNDN);
        mpfr_init(r22459);
        mpfr_init(r22460);
        mpfr_init(r22461);
        mpfr_init(r22462);
        mpfr_init(r22463);
        mpfr_init(r22464);
        mpfr_init(r22465);
        mpfr_init_set_str(r22466, "2", 10, MPFR_RNDN);
        mpfr_init(r22467);
        mpfr_init(r22468);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r22455, b, MPFR_RNDN);
        mpfr_neg(r22456, r22455, MPFR_RNDN);
        mpfr_mul(r22457, r22455, r22455, MPFR_RNDN);
        ;
        mpfr_set_d(r22459, a, MPFR_RNDN);
        mpfr_set_d(r22460, c, MPFR_RNDN);
        mpfr_mul(r22461, r22459, r22460, MPFR_RNDN);
        mpfr_mul(r22462, r22458, r22461, MPFR_RNDN);
        mpfr_sub(r22463, r22457, r22462, MPFR_RNDN);
        mpfr_sqrt(r22464, r22463, MPFR_RNDN);
        mpfr_sub(r22465, r22456, r22464, MPFR_RNDN);
        ;
        mpfr_mul(r22467, r22466, r22459, MPFR_RNDN);
        mpfr_div(r22468, r22465, r22467, MPFR_RNDN);
        return mpfr_get_d(r22468, MPFR_RNDN);
}

static mpfr_t r22469, r22470, r22471, r22472, r22473, r22474, r22475, r22476, r22477, r22478, r22479, r22480, r22481, r22482, r22483, r22484, r22485, r22486, r22487, r22488, r22489, r22490, r22491, r22492, r22493, r22494, r22495, r22496, r22497, r22498, r22499, r22500, r22501, r22502, r22503, r22504, r22505, r22506, r22507, r22508, r22509, r22510;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r22469);
        mpfr_init_set_str(r22470, "-4.352627690078744e+48", 10, MPFR_RNDN);
        mpfr_init(r22471);
        mpfr_init(r22472);
        mpfr_init(r22473);
        mpfr_init(r22474);
        mpfr_init_set_str(r22475, "1", 10, MPFR_RNDN);
        mpfr_init(r22476);
        mpfr_init_set_str(r22477, "-2.0089291940149467e-121", 10, MPFR_RNDN);
        mpfr_init(r22478);
        mpfr_init(r22479);
        mpfr_init(r22480);
        mpfr_init_set_str(r22481, "4", 10, MPFR_RNDN);
        mpfr_init(r22482);
        mpfr_init(r22483);
        mpfr_init(r22484);
        mpfr_init(r22485);
        mpfr_init(r22486);
        mpfr_init(r22487);
        mpfr_init(r22488);
        mpfr_init_set_str(r22489, "2", 10, MPFR_RNDN);
        mpfr_init(r22490);
        mpfr_init(r22491);
        mpfr_init_set_str(r22492, "-1.1884183040588929e-133", 10, MPFR_RNDN);
        mpfr_init(r22493);
        mpfr_init_set_str(r22494, "6.832382137151648e+104", 10, MPFR_RNDN);
        mpfr_init(r22495);
        mpfr_init(r22496);
        mpfr_init(r22497);
        mpfr_init(r22498);
        mpfr_init(r22499);
        mpfr_init(r22500);
        mpfr_init(r22501);
        mpfr_init(r22502);
        mpfr_init(r22503);
        mpfr_init(r22504);
        mpfr_init(r22505);
        mpfr_init(r22506);
        mpfr_init(r22507);
        mpfr_init(r22508);
        mpfr_init(r22509);
        mpfr_init(r22510);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r22469, b, MPFR_RNDN);
        ;
        mpfr_set_si(r22471, mpfr_cmp(r22469, r22470) <= 0, MPFR_RNDN);
        mpfr_set_d(r22472, c, MPFR_RNDN);
        mpfr_neg(r22473, r22472, MPFR_RNDN);
        mpfr_div(r22474, r22473, r22469, MPFR_RNDN);
        ;
        mpfr_div(r22476, r22474, r22475, MPFR_RNDN);
        ;
        mpfr_set_si(r22478, mpfr_cmp(r22469, r22477) <= 0, MPFR_RNDN);
        mpfr_set_d(r22479, a, MPFR_RNDN);
        mpfr_mul(r22480, r22479, r22472, MPFR_RNDN);
        ;
        mpfr_mul(r22482, r22480, r22481, MPFR_RNDN);
        mpfr_mul(r22483, r22479, r22481, MPFR_RNDN);
        mpfr_mul(r22484, r22469, r22469, MPFR_RNDN);
        mpfr_fma(r22485, r22483, r22473, r22484, MPFR_RNDN);
        mpfr_sqrt(r22486, r22485, MPFR_RNDN);
        mpfr_sub(r22487, r22486, r22469, MPFR_RNDN);
        mpfr_div(r22488, r22482, r22487, MPFR_RNDN);
        ;
        mpfr_mul(r22490, r22479, r22489, MPFR_RNDN);
        mpfr_div(r22491, r22488, r22490, MPFR_RNDN);
        ;
        mpfr_set_si(r22493, mpfr_cmp(r22469, r22492) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r22495, mpfr_cmp(r22469, r22494) <= 0, MPFR_RNDN);
        mpfr_neg(r22496, r22469, MPFR_RNDN);
        mpfr_sub(r22497, r22484, r22482, MPFR_RNDN);
        mpfr_sqrt(r22498, r22497, MPFR_RNDN);
        mpfr_sub(r22499, r22496, r22498, MPFR_RNDN);
        mpfr_div(r22500, r22490, r22499, MPFR_RNDN);
        mpfr_div(r22501, r22475, r22500, MPFR_RNDN);
        mpfr_div(r22502, r22469, r22472, MPFR_RNDN);
        mpfr_div(r22503, r22490, r22502, MPFR_RNDN);
        mpfr_add(r22504, r22469, r22469, MPFR_RNDN);
        mpfr_sub(r22505, r22503, r22504, MPFR_RNDN);
        mpfr_div(r22506, r22505, r22490, MPFR_RNDN);
        if (mpfr_get_si(r22495, MPFR_RNDN)) { mpfr_set(r22507, r22501, MPFR_RNDN); } else { mpfr_set(r22507, r22506, MPFR_RNDN); };
        if (mpfr_get_si(r22493, MPFR_RNDN)) { mpfr_set(r22508, r22476, MPFR_RNDN); } else { mpfr_set(r22508, r22507, MPFR_RNDN); };
        if (mpfr_get_si(r22478, MPFR_RNDN)) { mpfr_set(r22509, r22491, MPFR_RNDN); } else { mpfr_set(r22509, r22508, MPFR_RNDN); };
        if (mpfr_get_si(r22471, MPFR_RNDN)) { mpfr_set(r22510, r22476, MPFR_RNDN); } else { mpfr_set(r22510, r22509, MPFR_RNDN); };
        return mpfr_get_d(r22510, MPFR_RNDN);
}

static mpfr_t r22511, r22512, r22513, r22514, r22515, r22516, r22517, r22518, r22519, r22520, r22521, r22522, r22523, r22524, r22525, r22526, r22527, r22528, r22529, r22530, r22531, r22532, r22533, r22534, r22535, r22536, r22537, r22538, r22539, r22540, r22541, r22542, r22543, r22544, r22545, r22546, r22547, r22548, r22549, r22550, r22551, r22552;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r22511);
        mpfr_init_set_str(r22512, "-4.352627690078744e+48", 10, MPFR_RNDN);
        mpfr_init(r22513);
        mpfr_init(r22514);
        mpfr_init(r22515);
        mpfr_init(r22516);
        mpfr_init_set_str(r22517, "1", 10, MPFR_RNDN);
        mpfr_init(r22518);
        mpfr_init_set_str(r22519, "-2.0089291940149467e-121", 10, MPFR_RNDN);
        mpfr_init(r22520);
        mpfr_init(r22521);
        mpfr_init(r22522);
        mpfr_init_set_str(r22523, "4", 10, MPFR_RNDN);
        mpfr_init(r22524);
        mpfr_init(r22525);
        mpfr_init(r22526);
        mpfr_init(r22527);
        mpfr_init(r22528);
        mpfr_init(r22529);
        mpfr_init(r22530);
        mpfr_init_set_str(r22531, "2", 10, MPFR_RNDN);
        mpfr_init(r22532);
        mpfr_init(r22533);
        mpfr_init_set_str(r22534, "-1.1884183040588929e-133", 10, MPFR_RNDN);
        mpfr_init(r22535);
        mpfr_init_set_str(r22536, "6.832382137151648e+104", 10, MPFR_RNDN);
        mpfr_init(r22537);
        mpfr_init(r22538);
        mpfr_init(r22539);
        mpfr_init(r22540);
        mpfr_init(r22541);
        mpfr_init(r22542);
        mpfr_init(r22543);
        mpfr_init(r22544);
        mpfr_init(r22545);
        mpfr_init(r22546);
        mpfr_init(r22547);
        mpfr_init(r22548);
        mpfr_init(r22549);
        mpfr_init(r22550);
        mpfr_init(r22551);
        mpfr_init(r22552);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r22511, b, MPFR_RNDN);
        ;
        mpfr_set_si(r22513, mpfr_cmp(r22511, r22512) <= 0, MPFR_RNDN);
        mpfr_set_d(r22514, c, MPFR_RNDN);
        mpfr_neg(r22515, r22514, MPFR_RNDN);
        mpfr_div(r22516, r22515, r22511, MPFR_RNDN);
        ;
        mpfr_div(r22518, r22516, r22517, MPFR_RNDN);
        ;
        mpfr_set_si(r22520, mpfr_cmp(r22511, r22519) <= 0, MPFR_RNDN);
        mpfr_set_d(r22521, a, MPFR_RNDN);
        mpfr_mul(r22522, r22521, r22514, MPFR_RNDN);
        ;
        mpfr_mul(r22524, r22522, r22523, MPFR_RNDN);
        mpfr_mul(r22525, r22521, r22523, MPFR_RNDN);
        mpfr_mul(r22526, r22511, r22511, MPFR_RNDN);
        mpfr_fma(r22527, r22525, r22515, r22526, MPFR_RNDN);
        mpfr_sqrt(r22528, r22527, MPFR_RNDN);
        mpfr_sub(r22529, r22528, r22511, MPFR_RNDN);
        mpfr_div(r22530, r22524, r22529, MPFR_RNDN);
        ;
        mpfr_mul(r22532, r22521, r22531, MPFR_RNDN);
        mpfr_div(r22533, r22530, r22532, MPFR_RNDN);
        ;
        mpfr_set_si(r22535, mpfr_cmp(r22511, r22534) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r22537, mpfr_cmp(r22511, r22536) <= 0, MPFR_RNDN);
        mpfr_neg(r22538, r22511, MPFR_RNDN);
        mpfr_sub(r22539, r22526, r22524, MPFR_RNDN);
        mpfr_sqrt(r22540, r22539, MPFR_RNDN);
        mpfr_sub(r22541, r22538, r22540, MPFR_RNDN);
        mpfr_div(r22542, r22532, r22541, MPFR_RNDN);
        mpfr_div(r22543, r22517, r22542, MPFR_RNDN);
        mpfr_div(r22544, r22511, r22514, MPFR_RNDN);
        mpfr_div(r22545, r22532, r22544, MPFR_RNDN);
        mpfr_add(r22546, r22511, r22511, MPFR_RNDN);
        mpfr_sub(r22547, r22545, r22546, MPFR_RNDN);
        mpfr_div(r22548, r22547, r22532, MPFR_RNDN);
        if (mpfr_get_si(r22537, MPFR_RNDN)) { mpfr_set(r22549, r22543, MPFR_RNDN); } else { mpfr_set(r22549, r22548, MPFR_RNDN); };
        if (mpfr_get_si(r22535, MPFR_RNDN)) { mpfr_set(r22550, r22518, MPFR_RNDN); } else { mpfr_set(r22550, r22549, MPFR_RNDN); };
        if (mpfr_get_si(r22520, MPFR_RNDN)) { mpfr_set(r22551, r22533, MPFR_RNDN); } else { mpfr_set(r22551, r22550, MPFR_RNDN); };
        if (mpfr_get_si(r22513, MPFR_RNDN)) { mpfr_set(r22552, r22518, MPFR_RNDN); } else { mpfr_set(r22552, r22551, MPFR_RNDN); };
        return mpfr_get_d(r22552, MPFR_RNDN);
}

