#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 r35425 = b;
        float r35426 = -r35425;
        float r35427 = r35425 * r35425;
        float r35428 = 4.0f;
        float r35429 = a;
        float r35430 = c;
        float r35431 = r35429 * r35430;
        float r35432 = r35428 * r35431;
        float r35433 = r35427 - r35432;
        float r35434 = sqrt(r35433);
        float r35435 = r35426 - r35434;
        float r35436 = 2.0f;
        float r35437 = r35436 * r35429;
        float r35438 = r35435 / r35437;
        return r35438;
}

double f_id(double a, double b, double c) {
        double r35439 = b;
        double r35440 = -r35439;
        double r35441 = r35439 * r35439;
        double r35442 = 4.0;
        double r35443 = a;
        double r35444 = c;
        double r35445 = r35443 * r35444;
        double r35446 = r35442 * r35445;
        double r35447 = r35441 - r35446;
        double r35448 = sqrt(r35447);
        double r35449 = r35440 - r35448;
        double r35450 = 2.0;
        double r35451 = r35450 * r35443;
        double r35452 = r35449 / r35451;
        return r35452;
}


double f_of(float a, float b, float c) {
        float r35453 = b;
        float r35454 = -4.319226994044875e+67f;
        bool r35455 = r35453 <= r35454;
        float r35456 = -2.0f;
        float r35457 = 2.0f;
        float r35458 = r35456 / r35457;
        float r35459 = c;
        float r35460 = r35459 / r35453;
        float r35461 = r35458 * r35460;
        float r35462 = 7.285691125792036e-223f;
        bool r35463 = r35453 <= r35462;
        float r35464 = 4.0f;
        float r35465 = r35464 / r35457;
        float r35466 = -r35453;
        float r35467 = r35453 * r35453;
        float r35468 = a;
        float r35469 = r35464 * r35459;
        float r35470 = r35468 * r35469;
        float r35471 = r35467 - r35470;
        float r35472 = sqrt(r35471);
        float r35473 = sqrt(r35472);
        float r35474 = r35473 * r35473;
        float r35475 = r35466 + r35474;
        float r35476 = r35459 / r35475;
        float r35477 = r35465 * r35476;
        float r35478 = 1.0905893076356243e+100f;
        bool r35479 = r35453 <= r35478;
        float r35480 = 1.0f;
        float r35481 = r35457 * r35468;
        float r35482 = r35468 * r35459;
        float r35483 = r35464 * r35482;
        float r35484 = r35467 - r35483;
        float r35485 = sqrt(r35484);
        float r35486 = r35466 - r35485;
        float r35487 = r35481 / r35486;
        float r35488 = r35480 / r35487;
        float r35489 = r35466 / r35468;
        float r35490 = r35479 ? r35488 : r35489;
        float r35491 = r35463 ? r35477 : r35490;
        float r35492 = r35455 ? r35461 : r35491;
        return r35492;
}

double f_od(double a, double b, double c) {
        double r35493 = b;
        double r35494 = -4.319226994044875e+67;
        bool r35495 = r35493 <= r35494;
        double r35496 = -2.0;
        double r35497 = 2.0;
        double r35498 = r35496 / r35497;
        double r35499 = c;
        double r35500 = r35499 / r35493;
        double r35501 = r35498 * r35500;
        double r35502 = 7.285691125792036e-223;
        bool r35503 = r35493 <= r35502;
        double r35504 = 4.0;
        double r35505 = r35504 / r35497;
        double r35506 = -r35493;
        double r35507 = r35493 * r35493;
        double r35508 = a;
        double r35509 = r35504 * r35499;
        double r35510 = r35508 * r35509;
        double r35511 = r35507 - r35510;
        double r35512 = sqrt(r35511);
        double r35513 = sqrt(r35512);
        double r35514 = r35513 * r35513;
        double r35515 = r35506 + r35514;
        double r35516 = r35499 / r35515;
        double r35517 = r35505 * r35516;
        double r35518 = 1.0905893076356243e+100;
        bool r35519 = r35493 <= r35518;
        double r35520 = 1.0;
        double r35521 = r35497 * r35508;
        double r35522 = r35508 * r35499;
        double r35523 = r35504 * r35522;
        double r35524 = r35507 - r35523;
        double r35525 = sqrt(r35524);
        double r35526 = r35506 - r35525;
        double r35527 = r35521 / r35526;
        double r35528 = r35520 / r35527;
        double r35529 = r35506 / r35508;
        double r35530 = r35519 ? r35528 : r35529;
        double r35531 = r35503 ? r35517 : r35530;
        double r35532 = r35495 ? r35501 : r35531;
        return r35532;
}

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 r35533, r35534, r35535, r35536, r35537, r35538, r35539, r35540, r35541, r35542, r35543, r35544, r35545, r35546;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r35533);
        mpfr_init(r35534);
        mpfr_init(r35535);
        mpfr_init_set_str(r35536, "4", 10, MPFR_RNDN);
        mpfr_init(r35537);
        mpfr_init(r35538);
        mpfr_init(r35539);
        mpfr_init(r35540);
        mpfr_init(r35541);
        mpfr_init(r35542);
        mpfr_init(r35543);
        mpfr_init_set_str(r35544, "2", 10, MPFR_RNDN);
        mpfr_init(r35545);
        mpfr_init(r35546);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r35533, b, MPFR_RNDN);
        mpfr_neg(r35534, r35533, MPFR_RNDN);
        mpfr_sqr(r35535, r35533, MPFR_RNDN);
        ;
        mpfr_set_d(r35537, a, MPFR_RNDN);
        mpfr_set_d(r35538, c, MPFR_RNDN);
        mpfr_mul(r35539, r35537, r35538, MPFR_RNDN);
        mpfr_mul(r35540, r35536, r35539, MPFR_RNDN);
        mpfr_sub(r35541, r35535, r35540, MPFR_RNDN);
        mpfr_sqrt(r35542, r35541, MPFR_RNDN);
        mpfr_sub(r35543, r35534, r35542, MPFR_RNDN);
        ;
        mpfr_mul(r35545, r35544, r35537, MPFR_RNDN);
        mpfr_div(r35546, r35543, r35545, MPFR_RNDN);
        return mpfr_get_d(r35546, MPFR_RNDN);
}

static mpfr_t r35547, r35548, r35549, r35550, r35551, r35552, r35553, r35554, r35555, r35556, r35557, r35558, r35559, r35560, r35561, r35562, r35563, r35564, r35565, r35566, r35567, r35568, r35569, r35570, r35571, r35572, r35573, r35574, r35575, r35576, r35577, r35578, r35579, r35580, r35581, r35582, r35583, r35584, r35585, r35586;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r35547);
        mpfr_init_set_str(r35548, "-4.319226994044875e+67", 10, MPFR_RNDN);
        mpfr_init(r35549);
        mpfr_init_set_str(r35550, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r35551, "2", 10, MPFR_RNDN);
        mpfr_init(r35552);
        mpfr_init(r35553);
        mpfr_init(r35554);
        mpfr_init(r35555);
        mpfr_init_set_str(r35556, "7.285691125792036e-223", 10, MPFR_RNDN);
        mpfr_init(r35557);
        mpfr_init_set_str(r35558, "4", 10, MPFR_RNDN);
        mpfr_init(r35559);
        mpfr_init(r35560);
        mpfr_init(r35561);
        mpfr_init(r35562);
        mpfr_init(r35563);
        mpfr_init(r35564);
        mpfr_init(r35565);
        mpfr_init(r35566);
        mpfr_init(r35567);
        mpfr_init(r35568);
        mpfr_init(r35569);
        mpfr_init(r35570);
        mpfr_init(r35571);
        mpfr_init_set_str(r35572, "1.0905893076356243e+100", 10, MPFR_RNDN);
        mpfr_init(r35573);
        mpfr_init_set_str(r35574, "1", 10, MPFR_RNDN);
        mpfr_init(r35575);
        mpfr_init(r35576);
        mpfr_init(r35577);
        mpfr_init(r35578);
        mpfr_init(r35579);
        mpfr_init(r35580);
        mpfr_init(r35581);
        mpfr_init(r35582);
        mpfr_init(r35583);
        mpfr_init(r35584);
        mpfr_init(r35585);
        mpfr_init(r35586);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r35547, b, MPFR_RNDN);
        ;
        mpfr_set_si(r35549, mpfr_cmp(r35547, r35548) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r35552, r35550, r35551, MPFR_RNDN);
        mpfr_set_d(r35553, c, MPFR_RNDN);
        mpfr_div(r35554, r35553, r35547, MPFR_RNDN);
        mpfr_mul(r35555, r35552, r35554, MPFR_RNDN);
        ;
        mpfr_set_si(r35557, mpfr_cmp(r35547, r35556) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r35559, r35558, r35551, MPFR_RNDN);
        mpfr_neg(r35560, r35547, MPFR_RNDN);
        mpfr_sqr(r35561, r35547, MPFR_RNDN);
        mpfr_set_d(r35562, a, MPFR_RNDN);
        mpfr_mul(r35563, r35558, r35553, MPFR_RNDN);
        mpfr_mul(r35564, r35562, r35563, MPFR_RNDN);
        mpfr_sub(r35565, r35561, r35564, MPFR_RNDN);
        mpfr_sqrt(r35566, r35565, MPFR_RNDN);
        mpfr_sqrt(r35567, r35566, MPFR_RNDN);
        mpfr_sqr(r35568, r35567, MPFR_RNDN);
        mpfr_add(r35569, r35560, r35568, MPFR_RNDN);
        mpfr_div(r35570, r35553, r35569, MPFR_RNDN);
        mpfr_mul(r35571, r35559, r35570, MPFR_RNDN);
        ;
        mpfr_set_si(r35573, mpfr_cmp(r35547, r35572) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r35575, r35551, r35562, MPFR_RNDN);
        mpfr_mul(r35576, r35562, r35553, MPFR_RNDN);
        mpfr_mul(r35577, r35558, r35576, MPFR_RNDN);
        mpfr_sub(r35578, r35561, r35577, MPFR_RNDN);
        mpfr_sqrt(r35579, r35578, MPFR_RNDN);
        mpfr_sub(r35580, r35560, r35579, MPFR_RNDN);
        mpfr_div(r35581, r35575, r35580, MPFR_RNDN);
        mpfr_div(r35582, r35574, r35581, MPFR_RNDN);
        mpfr_div(r35583, r35560, r35562, MPFR_RNDN);
        if (mpfr_get_si(r35573, MPFR_RNDN)) { mpfr_set(r35584, r35582, MPFR_RNDN); } else { mpfr_set(r35584, r35583, MPFR_RNDN); };
        if (mpfr_get_si(r35557, MPFR_RNDN)) { mpfr_set(r35585, r35571, MPFR_RNDN); } else { mpfr_set(r35585, r35584, MPFR_RNDN); };
        if (mpfr_get_si(r35549, MPFR_RNDN)) { mpfr_set(r35586, r35555, MPFR_RNDN); } else { mpfr_set(r35586, r35585, MPFR_RNDN); };
        return mpfr_get_d(r35586, MPFR_RNDN);
}

static mpfr_t r35587, r35588, r35589, r35590, r35591, r35592, r35593, r35594, r35595, r35596, r35597, r35598, r35599, r35600, r35601, r35602, r35603, r35604, r35605, r35606, r35607, r35608, r35609, r35610, r35611, r35612, r35613, r35614, r35615, r35616, r35617, r35618, r35619, r35620, r35621, r35622, r35623, r35624, r35625, r35626;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r35587);
        mpfr_init_set_str(r35588, "-4.319226994044875e+67", 10, MPFR_RNDN);
        mpfr_init(r35589);
        mpfr_init_set_str(r35590, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r35591, "2", 10, MPFR_RNDN);
        mpfr_init(r35592);
        mpfr_init(r35593);
        mpfr_init(r35594);
        mpfr_init(r35595);
        mpfr_init_set_str(r35596, "7.285691125792036e-223", 10, MPFR_RNDN);
        mpfr_init(r35597);
        mpfr_init_set_str(r35598, "4", 10, MPFR_RNDN);
        mpfr_init(r35599);
        mpfr_init(r35600);
        mpfr_init(r35601);
        mpfr_init(r35602);
        mpfr_init(r35603);
        mpfr_init(r35604);
        mpfr_init(r35605);
        mpfr_init(r35606);
        mpfr_init(r35607);
        mpfr_init(r35608);
        mpfr_init(r35609);
        mpfr_init(r35610);
        mpfr_init(r35611);
        mpfr_init_set_str(r35612, "1.0905893076356243e+100", 10, MPFR_RNDN);
        mpfr_init(r35613);
        mpfr_init_set_str(r35614, "1", 10, MPFR_RNDN);
        mpfr_init(r35615);
        mpfr_init(r35616);
        mpfr_init(r35617);
        mpfr_init(r35618);
        mpfr_init(r35619);
        mpfr_init(r35620);
        mpfr_init(r35621);
        mpfr_init(r35622);
        mpfr_init(r35623);
        mpfr_init(r35624);
        mpfr_init(r35625);
        mpfr_init(r35626);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r35587, b, MPFR_RNDN);
        ;
        mpfr_set_si(r35589, mpfr_cmp(r35587, r35588) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r35592, r35590, r35591, MPFR_RNDN);
        mpfr_set_d(r35593, c, MPFR_RNDN);
        mpfr_div(r35594, r35593, r35587, MPFR_RNDN);
        mpfr_mul(r35595, r35592, r35594, MPFR_RNDN);
        ;
        mpfr_set_si(r35597, mpfr_cmp(r35587, r35596) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r35599, r35598, r35591, MPFR_RNDN);
        mpfr_neg(r35600, r35587, MPFR_RNDN);
        mpfr_sqr(r35601, r35587, MPFR_RNDN);
        mpfr_set_d(r35602, a, MPFR_RNDN);
        mpfr_mul(r35603, r35598, r35593, MPFR_RNDN);
        mpfr_mul(r35604, r35602, r35603, MPFR_RNDN);
        mpfr_sub(r35605, r35601, r35604, MPFR_RNDN);
        mpfr_sqrt(r35606, r35605, MPFR_RNDN);
        mpfr_sqrt(r35607, r35606, MPFR_RNDN);
        mpfr_sqr(r35608, r35607, MPFR_RNDN);
        mpfr_add(r35609, r35600, r35608, MPFR_RNDN);
        mpfr_div(r35610, r35593, r35609, MPFR_RNDN);
        mpfr_mul(r35611, r35599, r35610, MPFR_RNDN);
        ;
        mpfr_set_si(r35613, mpfr_cmp(r35587, r35612) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r35615, r35591, r35602, MPFR_RNDN);
        mpfr_mul(r35616, r35602, r35593, MPFR_RNDN);
        mpfr_mul(r35617, r35598, r35616, MPFR_RNDN);
        mpfr_sub(r35618, r35601, r35617, MPFR_RNDN);
        mpfr_sqrt(r35619, r35618, MPFR_RNDN);
        mpfr_sub(r35620, r35600, r35619, MPFR_RNDN);
        mpfr_div(r35621, r35615, r35620, MPFR_RNDN);
        mpfr_div(r35622, r35614, r35621, MPFR_RNDN);
        mpfr_div(r35623, r35600, r35602, MPFR_RNDN);
        if (mpfr_get_si(r35613, MPFR_RNDN)) { mpfr_set(r35624, r35622, MPFR_RNDN); } else { mpfr_set(r35624, r35623, MPFR_RNDN); };
        if (mpfr_get_si(r35597, MPFR_RNDN)) { mpfr_set(r35625, r35611, MPFR_RNDN); } else { mpfr_set(r35625, r35624, MPFR_RNDN); };
        if (mpfr_get_si(r35589, MPFR_RNDN)) { mpfr_set(r35626, r35595, MPFR_RNDN); } else { mpfr_set(r35626, r35625, MPFR_RNDN); };
        return mpfr_get_d(r35626, MPFR_RNDN);
}

