#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 r10522 = b;
        float r10523 = -r10522;
        float r10524 = r10522 * r10522;
        float r10525 = 4.0f;
        float r10526 = a;
        float r10527 = r10525 * r10526;
        float r10528 = c;
        float r10529 = r10527 * r10528;
        float r10530 = r10524 - r10529;
        float r10531 = sqrt(r10530);
        float r10532 = r10523 + r10531;
        float r10533 = 2.0f;
        float r10534 = r10533 * r10526;
        float r10535 = r10532 / r10534;
        return r10535;
}

double f_id(double a, double b, double c) {
        double r10536 = b;
        double r10537 = -r10536;
        double r10538 = r10536 * r10536;
        double r10539 = 4.0;
        double r10540 = a;
        double r10541 = r10539 * r10540;
        double r10542 = c;
        double r10543 = r10541 * r10542;
        double r10544 = r10538 - r10543;
        double r10545 = sqrt(r10544);
        double r10546 = r10537 + r10545;
        double r10547 = 2.0;
        double r10548 = r10547 * r10540;
        double r10549 = r10546 / r10548;
        return r10549;
}


double f_of(float a, float b, float c) {
        float r10550 = b;
        float r10551 = -1.338815475246526e+154f;
        bool r10552 = r10550 <= r10551;
        float r10553 = -0.5f;
        float r10554 = a;
        float r10555 = r10550 / r10554;
        float r10556 = r10553 * r10555;
        float r10557 = 3.690239526200231e-95f;
        bool r10558 = r10550 <= r10557;
        float r10559 = 4.0f;
        float r10560 = r10554 * r10559;
        float r10561 = c;
        float r10562 = -r10561;
        float r10563 = r10550 * r10550;
        float r10564 = fma(r10560, r10562, r10563);
        float r10565 = sqrt(r10564);
        float r10566 = 2.0f;
        float r10567 = r10566 * r10554;
        float r10568 = r10565 / r10567;
        float r10569 = r10550 / r10567;
        float r10570 = r10568 - r10569;
        float r10571 = r10562 * r10560;
        float r10572 = r10565 + r10550;
        float r10573 = r10567 * r10572;
        float r10574 = r10571 / r10573;
        float r10575 = r10558 ? r10570 : r10574;
        float r10576 = r10552 ? r10556 : r10575;
        return r10576;
}

double f_od(double a, double b, double c) {
        double r10577 = b;
        double r10578 = -1.338815475246526e+154;
        bool r10579 = r10577 <= r10578;
        double r10580 = -0.5;
        double r10581 = a;
        double r10582 = r10577 / r10581;
        double r10583 = r10580 * r10582;
        double r10584 = 3.690239526200231e-95;
        bool r10585 = r10577 <= r10584;
        double r10586 = 4.0;
        double r10587 = r10581 * r10586;
        double r10588 = c;
        double r10589 = -r10588;
        double r10590 = r10577 * r10577;
        double r10591 = fma(r10587, r10589, r10590);
        double r10592 = sqrt(r10591);
        double r10593 = 2.0;
        double r10594 = r10593 * r10581;
        double r10595 = r10592 / r10594;
        double r10596 = r10577 / r10594;
        double r10597 = r10595 - r10596;
        double r10598 = r10589 * r10587;
        double r10599 = r10592 + r10577;
        double r10600 = r10594 * r10599;
        double r10601 = r10598 / r10600;
        double r10602 = r10585 ? r10597 : r10601;
        double r10603 = r10579 ? r10583 : r10602;
        return r10603;
}

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 r10604, r10605, r10606, r10607, r10608, r10609, r10610, r10611, r10612, r10613, r10614, r10615, r10616, r10617;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3152);
        mpfr_init(r10604);
        mpfr_init(r10605);
        mpfr_init(r10606);
        mpfr_init_set_str(r10607, "4", 10, MPFR_RNDN);
        mpfr_init(r10608);
        mpfr_init(r10609);
        mpfr_init(r10610);
        mpfr_init(r10611);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
        mpfr_init_set_str(r10615, "2", 10, MPFR_RNDN);
        mpfr_init(r10616);
        mpfr_init(r10617);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r10604, b, MPFR_RNDN);
        mpfr_neg(r10605, r10604, MPFR_RNDN);
        mpfr_mul(r10606, r10604, r10604, MPFR_RNDN);
        ;
        mpfr_set_d(r10608, a, MPFR_RNDN);
        mpfr_mul(r10609, r10607, r10608, MPFR_RNDN);
        mpfr_set_d(r10610, c, MPFR_RNDN);
        mpfr_mul(r10611, r10609, r10610, MPFR_RNDN);
        mpfr_sub(r10612, r10606, r10611, MPFR_RNDN);
        mpfr_sqrt(r10613, r10612, MPFR_RNDN);
        mpfr_add(r10614, r10605, r10613, MPFR_RNDN);
        ;
        mpfr_mul(r10616, r10615, r10608, MPFR_RNDN);
        mpfr_div(r10617, r10614, r10616, MPFR_RNDN);
        return mpfr_get_d(r10617, MPFR_RNDN);
}

static mpfr_t r10618, r10619, r10620, r10621, r10622, r10623, r10624, r10625, r10626, r10627, r10628, r10629, r10630, r10631, r10632, r10633, r10634, r10635, r10636, r10637, r10638, r10639, r10640, r10641, r10642, r10643, r10644;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3152);
        mpfr_init(r10618);
        mpfr_init_set_str(r10619, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r10620);
        mpfr_init_set_str(r10621, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r10622);
        mpfr_init(r10623);
        mpfr_init(r10624);
        mpfr_init_set_str(r10625, "3.690239526200231e-95", 10, MPFR_RNDN);
        mpfr_init(r10626);
        mpfr_init_set_str(r10627, "4", 10, MPFR_RNDN);
        mpfr_init(r10628);
        mpfr_init(r10629);
        mpfr_init(r10630);
        mpfr_init(r10631);
        mpfr_init(r10632);
        mpfr_init(r10633);
        mpfr_init_set_str(r10634, "2", 10, MPFR_RNDN);
        mpfr_init(r10635);
        mpfr_init(r10636);
        mpfr_init(r10637);
        mpfr_init(r10638);
        mpfr_init(r10639);
        mpfr_init(r10640);
        mpfr_init(r10641);
        mpfr_init(r10642);
        mpfr_init(r10643);
        mpfr_init(r10644);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r10618, b, MPFR_RNDN);
        ;
        mpfr_set_si(r10620, mpfr_cmp(r10618, r10619) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10622, a, MPFR_RNDN);
        mpfr_div(r10623, r10618, r10622, MPFR_RNDN);
        mpfr_mul(r10624, r10621, r10623, MPFR_RNDN);
        ;
        mpfr_set_si(r10626, mpfr_cmp(r10618, r10625) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r10628, r10622, r10627, MPFR_RNDN);
        mpfr_set_d(r10629, c, MPFR_RNDN);
        mpfr_neg(r10630, r10629, MPFR_RNDN);
        mpfr_mul(r10631, r10618, r10618, MPFR_RNDN);
        mpfr_fma(r10632, r10628, r10630, r10631, MPFR_RNDN);
        mpfr_sqrt(r10633, r10632, MPFR_RNDN);
        ;
        mpfr_mul(r10635, r10634, r10622, MPFR_RNDN);
        mpfr_div(r10636, r10633, r10635, MPFR_RNDN);
        mpfr_div(r10637, r10618, r10635, MPFR_RNDN);
        mpfr_sub(r10638, r10636, r10637, MPFR_RNDN);
        mpfr_mul(r10639, r10630, r10628, MPFR_RNDN);
        mpfr_add(r10640, r10633, r10618, MPFR_RNDN);
        mpfr_mul(r10641, r10635, r10640, MPFR_RNDN);
        mpfr_div(r10642, r10639, r10641, MPFR_RNDN);
        if (mpfr_get_si(r10626, MPFR_RNDN)) { mpfr_set(r10643, r10638, MPFR_RNDN); } else { mpfr_set(r10643, r10642, MPFR_RNDN); };
        if (mpfr_get_si(r10620, MPFR_RNDN)) { mpfr_set(r10644, r10624, MPFR_RNDN); } else { mpfr_set(r10644, r10643, MPFR_RNDN); };
        return mpfr_get_d(r10644, MPFR_RNDN);
}

static mpfr_t r10645, r10646, r10647, r10648, r10649, r10650, r10651, r10652, r10653, r10654, r10655, r10656, r10657, r10658, r10659, r10660, r10661, r10662, r10663, r10664, r10665, r10666, r10667, r10668, r10669, r10670, r10671;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3152);
        mpfr_init(r10645);
        mpfr_init_set_str(r10646, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r10647);
        mpfr_init_set_str(r10648, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r10649);
        mpfr_init(r10650);
        mpfr_init(r10651);
        mpfr_init_set_str(r10652, "3.690239526200231e-95", 10, MPFR_RNDN);
        mpfr_init(r10653);
        mpfr_init_set_str(r10654, "4", 10, MPFR_RNDN);
        mpfr_init(r10655);
        mpfr_init(r10656);
        mpfr_init(r10657);
        mpfr_init(r10658);
        mpfr_init(r10659);
        mpfr_init(r10660);
        mpfr_init_set_str(r10661, "2", 10, MPFR_RNDN);
        mpfr_init(r10662);
        mpfr_init(r10663);
        mpfr_init(r10664);
        mpfr_init(r10665);
        mpfr_init(r10666);
        mpfr_init(r10667);
        mpfr_init(r10668);
        mpfr_init(r10669);
        mpfr_init(r10670);
        mpfr_init(r10671);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r10645, b, MPFR_RNDN);
        ;
        mpfr_set_si(r10647, mpfr_cmp(r10645, r10646) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10649, a, MPFR_RNDN);
        mpfr_div(r10650, r10645, r10649, MPFR_RNDN);
        mpfr_mul(r10651, r10648, r10650, MPFR_RNDN);
        ;
        mpfr_set_si(r10653, mpfr_cmp(r10645, r10652) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r10655, r10649, r10654, MPFR_RNDN);
        mpfr_set_d(r10656, c, MPFR_RNDN);
        mpfr_neg(r10657, r10656, MPFR_RNDN);
        mpfr_mul(r10658, r10645, r10645, MPFR_RNDN);
        mpfr_fma(r10659, r10655, r10657, r10658, MPFR_RNDN);
        mpfr_sqrt(r10660, r10659, MPFR_RNDN);
        ;
        mpfr_mul(r10662, r10661, r10649, MPFR_RNDN);
        mpfr_div(r10663, r10660, r10662, MPFR_RNDN);
        mpfr_div(r10664, r10645, r10662, MPFR_RNDN);
        mpfr_sub(r10665, r10663, r10664, MPFR_RNDN);
        mpfr_mul(r10666, r10657, r10655, MPFR_RNDN);
        mpfr_add(r10667, r10660, r10645, MPFR_RNDN);
        mpfr_mul(r10668, r10662, r10667, MPFR_RNDN);
        mpfr_div(r10669, r10666, r10668, MPFR_RNDN);
        if (mpfr_get_si(r10653, MPFR_RNDN)) { mpfr_set(r10670, r10665, MPFR_RNDN); } else { mpfr_set(r10670, r10669, MPFR_RNDN); };
        if (mpfr_get_si(r10647, MPFR_RNDN)) { mpfr_set(r10671, r10651, MPFR_RNDN); } else { mpfr_set(r10671, r10670, MPFR_RNDN); };
        return mpfr_get_d(r10671, MPFR_RNDN);
}

