#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 r17459 = b;
        float r17460 = -r17459;
        float r17461 = r17459 * r17459;
        float r17462 = 4.0f;
        float r17463 = a;
        float r17464 = r17462 * r17463;
        float r17465 = c;
        float r17466 = r17464 * r17465;
        float r17467 = r17461 - r17466;
        float r17468 = sqrt(r17467);
        float r17469 = r17460 + r17468;
        float r17470 = 2.0f;
        float r17471 = r17470 * r17463;
        float r17472 = r17469 / r17471;
        return r17472;
}

double f_id(double a, double b, double c) {
        double r17473 = b;
        double r17474 = -r17473;
        double r17475 = r17473 * r17473;
        double r17476 = 4.0;
        double r17477 = a;
        double r17478 = r17476 * r17477;
        double r17479 = c;
        double r17480 = r17478 * r17479;
        double r17481 = r17475 - r17480;
        double r17482 = sqrt(r17481);
        double r17483 = r17474 + r17482;
        double r17484 = 2.0;
        double r17485 = r17484 * r17477;
        double r17486 = r17483 / r17485;
        return r17486;
}


double f_of(float a, float b, float c) {
        float r17487 = b;
        float r17488 = -71884515311616.0f;
        bool r17489 = r17487 <= r17488;
        float r17490 = c;
        float r17491 = r17490 / r17487;
        float r17492 = a;
        float r17493 = r17487 / r17492;
        float r17494 = r17491 - r17493;
        float r17495 = 3.5037975311279297f;
        bool r17496 = r17487 <= r17495;
        float r17497 = -r17487;
        float r17498 = r17487 * r17487;
        float r17499 = 4.0f;
        float r17500 = r17499 * r17492;
        float r17501 = r17500 * r17490;
        float r17502 = r17498 - r17501;
        float r17503 = sqrt(r17502);
        float r17504 = r17497 + r17503;
        float r17505 = 1.0f;
        float r17506 = 2.0f;
        float r17507 = r17506 * r17492;
        float r17508 = r17505 / r17507;
        float r17509 = r17504 * r17508;
        float r17510 = -2.0f;
        float r17511 = r17510 / r17506;
        float r17512 = r17491 * r17511;
        float r17513 = r17496 ? r17509 : r17512;
        float r17514 = r17489 ? r17494 : r17513;
        return r17514;
}

double f_od(double a, double b, double c) {
        double r17515 = b;
        double r17516 = -71884515311616.0;
        bool r17517 = r17515 <= r17516;
        double r17518 = c;
        double r17519 = r17518 / r17515;
        double r17520 = a;
        double r17521 = r17515 / r17520;
        double r17522 = r17519 - r17521;
        double r17523 = 3.5037975311279297;
        bool r17524 = r17515 <= r17523;
        double r17525 = -r17515;
        double r17526 = r17515 * r17515;
        double r17527 = 4.0;
        double r17528 = r17527 * r17520;
        double r17529 = r17528 * r17518;
        double r17530 = r17526 - r17529;
        double r17531 = sqrt(r17530);
        double r17532 = r17525 + r17531;
        double r17533 = 1.0;
        double r17534 = 2.0;
        double r17535 = r17534 * r17520;
        double r17536 = r17533 / r17535;
        double r17537 = r17532 * r17536;
        double r17538 = -2.0;
        double r17539 = r17538 / r17534;
        double r17540 = r17519 * r17539;
        double r17541 = r17524 ? r17537 : r17540;
        double r17542 = r17517 ? r17522 : r17541;
        return r17542;
}

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 r17543, r17544, r17545, r17546, r17547, r17548, r17549, r17550, r17551, r17552, r17553, r17554, r17555, r17556;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r17543);
        mpfr_init(r17544);
        mpfr_init(r17545);
        mpfr_init_set_str(r17546, "4", 10, MPFR_RNDN);
        mpfr_init(r17547);
        mpfr_init(r17548);
        mpfr_init(r17549);
        mpfr_init(r17550);
        mpfr_init(r17551);
        mpfr_init(r17552);
        mpfr_init(r17553);
        mpfr_init_set_str(r17554, "2", 10, MPFR_RNDN);
        mpfr_init(r17555);
        mpfr_init(r17556);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r17543, b, MPFR_RNDN);
        mpfr_neg(r17544, r17543, MPFR_RNDN);
        mpfr_sqr(r17545, r17543, MPFR_RNDN);
        ;
        mpfr_set_d(r17547, a, MPFR_RNDN);
        mpfr_mul(r17548, r17546, r17547, MPFR_RNDN);
        mpfr_set_d(r17549, c, MPFR_RNDN);
        mpfr_mul(r17550, r17548, r17549, MPFR_RNDN);
        mpfr_sub(r17551, r17545, r17550, MPFR_RNDN);
        mpfr_sqrt(r17552, r17551, MPFR_RNDN);
        mpfr_add(r17553, r17544, r17552, MPFR_RNDN);
        ;
        mpfr_mul(r17555, r17554, r17547, MPFR_RNDN);
        mpfr_div(r17556, r17553, r17555, MPFR_RNDN);
        return mpfr_get_d(r17556, MPFR_RNDN);
}

static mpfr_t r17557, r17558, r17559, r17560, r17561, r17562, r17563, r17564, r17565, r17566, r17567, r17568, r17569, r17570, r17571, r17572, r17573, r17574, r17575, r17576, r17577, r17578, r17579, r17580, r17581, r17582, r17583, r17584;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r17557);
        mpfr_init_set_str(r17558, "-7.1884515f+13", 10, MPFR_RNDN);
        mpfr_init(r17559);
        mpfr_init(r17560);
        mpfr_init(r17561);
        mpfr_init(r17562);
        mpfr_init(r17563);
        mpfr_init(r17564);
        mpfr_init_set_str(r17565, "3.5037975f0", 10, MPFR_RNDN);
        mpfr_init(r17566);
        mpfr_init(r17567);
        mpfr_init(r17568);
        mpfr_init_set_str(r17569, "4", 10, MPFR_RNDN);
        mpfr_init(r17570);
        mpfr_init(r17571);
        mpfr_init(r17572);
        mpfr_init(r17573);
        mpfr_init(r17574);
        mpfr_init_set_str(r17575, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r17576, "2", 10, MPFR_RNDN);
        mpfr_init(r17577);
        mpfr_init(r17578);
        mpfr_init(r17579);
        mpfr_init_set_str(r17580, "-2", 10, MPFR_RNDN);
        mpfr_init(r17581);
        mpfr_init(r17582);
        mpfr_init(r17583);
        mpfr_init(r17584);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r17557, b, MPFR_RNDN);
        ;
        mpfr_set_si(r17559, mpfr_cmp(r17557, r17558) <= 0, MPFR_RNDN);
        mpfr_set_d(r17560, c, MPFR_RNDN);
        mpfr_div(r17561, r17560, r17557, MPFR_RNDN);
        mpfr_set_d(r17562, a, MPFR_RNDN);
        mpfr_div(r17563, r17557, r17562, MPFR_RNDN);
        mpfr_sub(r17564, r17561, r17563, MPFR_RNDN);
        ;
        mpfr_set_si(r17566, mpfr_cmp(r17557, r17565) <= 0, MPFR_RNDN);
        mpfr_neg(r17567, r17557, MPFR_RNDN);
        mpfr_sqr(r17568, r17557, MPFR_RNDN);
        ;
        mpfr_mul(r17570, r17569, r17562, MPFR_RNDN);
        mpfr_mul(r17571, r17570, r17560, MPFR_RNDN);
        mpfr_sub(r17572, r17568, r17571, MPFR_RNDN);
        mpfr_sqrt(r17573, r17572, MPFR_RNDN);
        mpfr_add(r17574, r17567, r17573, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r17577, r17576, r17562, MPFR_RNDN);
        mpfr_div(r17578, r17575, r17577, MPFR_RNDN);
        mpfr_mul(r17579, r17574, r17578, MPFR_RNDN);
        ;
        mpfr_div(r17581, r17580, r17576, MPFR_RNDN);
        mpfr_mul(r17582, r17561, r17581, MPFR_RNDN);
        if (mpfr_get_si(r17566, MPFR_RNDN)) { mpfr_set(r17583, r17579, MPFR_RNDN); } else { mpfr_set(r17583, r17582, MPFR_RNDN); };
        if (mpfr_get_si(r17559, MPFR_RNDN)) { mpfr_set(r17584, r17564, MPFR_RNDN); } else { mpfr_set(r17584, r17583, MPFR_RNDN); };
        return mpfr_get_d(r17584, MPFR_RNDN);
}

static mpfr_t r17585, r17586, r17587, r17588, r17589, r17590, r17591, r17592, r17593, r17594, r17595, r17596, r17597, r17598, r17599, r17600, r17601, r17602, r17603, r17604, r17605, r17606, r17607, r17608, r17609, r17610, r17611, r17612;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r17585);
        mpfr_init_set_str(r17586, "-7.1884515f+13", 10, MPFR_RNDN);
        mpfr_init(r17587);
        mpfr_init(r17588);
        mpfr_init(r17589);
        mpfr_init(r17590);
        mpfr_init(r17591);
        mpfr_init(r17592);
        mpfr_init_set_str(r17593, "3.5037975f0", 10, MPFR_RNDN);
        mpfr_init(r17594);
        mpfr_init(r17595);
        mpfr_init(r17596);
        mpfr_init_set_str(r17597, "4", 10, MPFR_RNDN);
        mpfr_init(r17598);
        mpfr_init(r17599);
        mpfr_init(r17600);
        mpfr_init(r17601);
        mpfr_init(r17602);
        mpfr_init_set_str(r17603, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r17604, "2", 10, MPFR_RNDN);
        mpfr_init(r17605);
        mpfr_init(r17606);
        mpfr_init(r17607);
        mpfr_init_set_str(r17608, "-2", 10, MPFR_RNDN);
        mpfr_init(r17609);
        mpfr_init(r17610);
        mpfr_init(r17611);
        mpfr_init(r17612);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r17585, b, MPFR_RNDN);
        ;
        mpfr_set_si(r17587, mpfr_cmp(r17585, r17586) <= 0, MPFR_RNDN);
        mpfr_set_d(r17588, c, MPFR_RNDN);
        mpfr_div(r17589, r17588, r17585, MPFR_RNDN);
        mpfr_set_d(r17590, a, MPFR_RNDN);
        mpfr_div(r17591, r17585, r17590, MPFR_RNDN);
        mpfr_sub(r17592, r17589, r17591, MPFR_RNDN);
        ;
        mpfr_set_si(r17594, mpfr_cmp(r17585, r17593) <= 0, MPFR_RNDN);
        mpfr_neg(r17595, r17585, MPFR_RNDN);
        mpfr_sqr(r17596, r17585, MPFR_RNDN);
        ;
        mpfr_mul(r17598, r17597, r17590, MPFR_RNDN);
        mpfr_mul(r17599, r17598, r17588, MPFR_RNDN);
        mpfr_sub(r17600, r17596, r17599, MPFR_RNDN);
        mpfr_sqrt(r17601, r17600, MPFR_RNDN);
        mpfr_add(r17602, r17595, r17601, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r17605, r17604, r17590, MPFR_RNDN);
        mpfr_div(r17606, r17603, r17605, MPFR_RNDN);
        mpfr_mul(r17607, r17602, r17606, MPFR_RNDN);
        ;
        mpfr_div(r17609, r17608, r17604, MPFR_RNDN);
        mpfr_mul(r17610, r17589, r17609, MPFR_RNDN);
        if (mpfr_get_si(r17594, MPFR_RNDN)) { mpfr_set(r17611, r17607, MPFR_RNDN); } else { mpfr_set(r17611, r17610, MPFR_RNDN); };
        if (mpfr_get_si(r17587, MPFR_RNDN)) { mpfr_set(r17612, r17592, MPFR_RNDN); } else { mpfr_set(r17612, r17611, MPFR_RNDN); };
        return mpfr_get_d(r17612, MPFR_RNDN);
}

