#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 r39539 = b;
        float r39540 = -r39539;
        float r39541 = r39539 * r39539;
        float r39542 = 4;
        float r39543 = a;
        float r39544 = r39542 * r39543;
        float r39545 = c;
        float r39546 = r39544 * r39545;
        float r39547 = r39541 - r39546;
        float r39548 = sqrt(r39547);
        float r39549 = r39540 + r39548;
        float r39550 = 2;
        float r39551 = r39550 * r39543;
        float r39552 = r39549 / r39551;
        return r39552;
}

double f_id(double a, double b, double c) {
        double r39553 = b;
        double r39554 = -r39553;
        double r39555 = r39553 * r39553;
        double r39556 = 4;
        double r39557 = a;
        double r39558 = r39556 * r39557;
        double r39559 = c;
        double r39560 = r39558 * r39559;
        double r39561 = r39555 - r39560;
        double r39562 = sqrt(r39561);
        double r39563 = r39554 + r39562;
        double r39564 = 2;
        double r39565 = r39564 * r39557;
        double r39566 = r39563 / r39565;
        return r39566;
}


double f_of(float a, float b, float c) {
        float r39567 = b;
        float r39568 = -7.833327672762858e+152;
        bool r39569 = r39567 <= r39568;
        float r39570 = -r39567;
        float r39571 = a;
        float r39572 = r39570 / r39571;
        float r39573 = 7.698366662298276e-138;
        bool r39574 = r39567 <= r39573;
        float r39575 = r39567 * r39567;
        float r39576 = 4;
        float r39577 = r39576 * r39571;
        float r39578 = c;
        float r39579 = r39577 * r39578;
        float r39580 = r39575 - r39579;
        float r39581 = sqrt(r39580);
        float r39582 = r39570 + r39581;
        float r39583 = 2;
        float r39584 = r39583 * r39571;
        float r39585 = r39582 / r39584;
        float r39586 = r39578 / r39567;
        float r39587 = -2;
        float r39588 = r39587 / r39583;
        float r39589 = r39586 * r39588;
        float r39590 = r39574 ? r39585 : r39589;
        float r39591 = r39569 ? r39572 : r39590;
        return r39591;
}

double f_od(double a, double b, double c) {
        double r39592 = b;
        double r39593 = -7.833327672762858e+152;
        bool r39594 = r39592 <= r39593;
        double r39595 = -r39592;
        double r39596 = a;
        double r39597 = r39595 / r39596;
        double r39598 = 7.698366662298276e-138;
        bool r39599 = r39592 <= r39598;
        double r39600 = r39592 * r39592;
        double r39601 = 4;
        double r39602 = r39601 * r39596;
        double r39603 = c;
        double r39604 = r39602 * r39603;
        double r39605 = r39600 - r39604;
        double r39606 = sqrt(r39605);
        double r39607 = r39595 + r39606;
        double r39608 = 2;
        double r39609 = r39608 * r39596;
        double r39610 = r39607 / r39609;
        double r39611 = r39603 / r39592;
        double r39612 = -2;
        double r39613 = r39612 / r39608;
        double r39614 = r39611 * r39613;
        double r39615 = r39599 ? r39610 : r39614;
        double r39616 = r39594 ? r39597 : r39615;
        return r39616;
}

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 r39617, r39618, r39619, r39620, r39621, r39622, r39623, r39624, r39625, r39626, r39627, r39628, r39629, r39630;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r39617);
        mpfr_init(r39618);
        mpfr_init(r39619);
        mpfr_init_set_str(r39620, "4", 10, MPFR_RNDN);
        mpfr_init(r39621);
        mpfr_init(r39622);
        mpfr_init(r39623);
        mpfr_init(r39624);
        mpfr_init(r39625);
        mpfr_init(r39626);
        mpfr_init(r39627);
        mpfr_init_set_str(r39628, "2", 10, MPFR_RNDN);
        mpfr_init(r39629);
        mpfr_init(r39630);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r39617, b, MPFR_RNDN);
        mpfr_neg(r39618, r39617, MPFR_RNDN);
        mpfr_mul(r39619, r39617, r39617, MPFR_RNDN);
        ;
        mpfr_set_d(r39621, a, MPFR_RNDN);
        mpfr_mul(r39622, r39620, r39621, MPFR_RNDN);
        mpfr_set_d(r39623, c, MPFR_RNDN);
        mpfr_mul(r39624, r39622, r39623, MPFR_RNDN);
        mpfr_sub(r39625, r39619, r39624, MPFR_RNDN);
        mpfr_sqrt(r39626, r39625, MPFR_RNDN);
        mpfr_add(r39627, r39618, r39626, MPFR_RNDN);
        ;
        mpfr_mul(r39629, r39628, r39621, MPFR_RNDN);
        mpfr_div(r39630, r39627, r39629, MPFR_RNDN);
        return mpfr_get_d(r39630, MPFR_RNDN);
}

static mpfr_t r39631, r39632, r39633, r39634, r39635, r39636, r39637, r39638, r39639, r39640, r39641, r39642, r39643, r39644, r39645, r39646, r39647, r39648, r39649, r39650, r39651, r39652, r39653, r39654, r39655;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r39631);
        mpfr_init_set_str(r39632, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r39633);
        mpfr_init(r39634);
        mpfr_init(r39635);
        mpfr_init(r39636);
        mpfr_init_set_str(r39637, "7.698366662298276e-138", 10, MPFR_RNDN);
        mpfr_init(r39638);
        mpfr_init(r39639);
        mpfr_init_set_str(r39640, "4", 10, MPFR_RNDN);
        mpfr_init(r39641);
        mpfr_init(r39642);
        mpfr_init(r39643);
        mpfr_init(r39644);
        mpfr_init(r39645);
        mpfr_init(r39646);
        mpfr_init_set_str(r39647, "2", 10, MPFR_RNDN);
        mpfr_init(r39648);
        mpfr_init(r39649);
        mpfr_init(r39650);
        mpfr_init_set_str(r39651, "-2", 10, MPFR_RNDN);
        mpfr_init(r39652);
        mpfr_init(r39653);
        mpfr_init(r39654);
        mpfr_init(r39655);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r39631, b, MPFR_RNDN);
        ;
        mpfr_set_si(r39633, mpfr_cmp(r39631, r39632) <= 0, MPFR_RNDN);
        mpfr_neg(r39634, r39631, MPFR_RNDN);
        mpfr_set_d(r39635, a, MPFR_RNDN);
        mpfr_div(r39636, r39634, r39635, MPFR_RNDN);
        ;
        mpfr_set_si(r39638, mpfr_cmp(r39631, r39637) <= 0, MPFR_RNDN);
        mpfr_mul(r39639, r39631, r39631, MPFR_RNDN);
        ;
        mpfr_mul(r39641, r39640, r39635, MPFR_RNDN);
        mpfr_set_d(r39642, c, MPFR_RNDN);
        mpfr_mul(r39643, r39641, r39642, MPFR_RNDN);
        mpfr_sub(r39644, r39639, r39643, MPFR_RNDN);
        mpfr_sqrt(r39645, r39644, MPFR_RNDN);
        mpfr_add(r39646, r39634, r39645, MPFR_RNDN);
        ;
        mpfr_mul(r39648, r39647, r39635, MPFR_RNDN);
        mpfr_div(r39649, r39646, r39648, MPFR_RNDN);
        mpfr_div(r39650, r39642, r39631, MPFR_RNDN);
        ;
        mpfr_div(r39652, r39651, r39647, MPFR_RNDN);
        mpfr_mul(r39653, r39650, r39652, MPFR_RNDN);
        if (mpfr_get_si(r39638, MPFR_RNDN)) { mpfr_set(r39654, r39649, MPFR_RNDN); } else { mpfr_set(r39654, r39653, MPFR_RNDN); };
        if (mpfr_get_si(r39633, MPFR_RNDN)) { mpfr_set(r39655, r39636, MPFR_RNDN); } else { mpfr_set(r39655, r39654, MPFR_RNDN); };
        return mpfr_get_d(r39655, MPFR_RNDN);
}

static mpfr_t r39656, r39657, r39658, r39659, r39660, r39661, r39662, r39663, r39664, r39665, r39666, r39667, r39668, r39669, r39670, r39671, r39672, r39673, r39674, r39675, r39676, r39677, r39678, r39679, r39680;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r39656);
        mpfr_init_set_str(r39657, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r39658);
        mpfr_init(r39659);
        mpfr_init(r39660);
        mpfr_init(r39661);
        mpfr_init_set_str(r39662, "7.698366662298276e-138", 10, MPFR_RNDN);
        mpfr_init(r39663);
        mpfr_init(r39664);
        mpfr_init_set_str(r39665, "4", 10, MPFR_RNDN);
        mpfr_init(r39666);
        mpfr_init(r39667);
        mpfr_init(r39668);
        mpfr_init(r39669);
        mpfr_init(r39670);
        mpfr_init(r39671);
        mpfr_init_set_str(r39672, "2", 10, MPFR_RNDN);
        mpfr_init(r39673);
        mpfr_init(r39674);
        mpfr_init(r39675);
        mpfr_init_set_str(r39676, "-2", 10, MPFR_RNDN);
        mpfr_init(r39677);
        mpfr_init(r39678);
        mpfr_init(r39679);
        mpfr_init(r39680);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r39656, b, MPFR_RNDN);
        ;
        mpfr_set_si(r39658, mpfr_cmp(r39656, r39657) <= 0, MPFR_RNDN);
        mpfr_neg(r39659, r39656, MPFR_RNDN);
        mpfr_set_d(r39660, a, MPFR_RNDN);
        mpfr_div(r39661, r39659, r39660, MPFR_RNDN);
        ;
        mpfr_set_si(r39663, mpfr_cmp(r39656, r39662) <= 0, MPFR_RNDN);
        mpfr_mul(r39664, r39656, r39656, MPFR_RNDN);
        ;
        mpfr_mul(r39666, r39665, r39660, MPFR_RNDN);
        mpfr_set_d(r39667, c, MPFR_RNDN);
        mpfr_mul(r39668, r39666, r39667, MPFR_RNDN);
        mpfr_sub(r39669, r39664, r39668, MPFR_RNDN);
        mpfr_sqrt(r39670, r39669, MPFR_RNDN);
        mpfr_add(r39671, r39659, r39670, MPFR_RNDN);
        ;
        mpfr_mul(r39673, r39672, r39660, MPFR_RNDN);
        mpfr_div(r39674, r39671, r39673, MPFR_RNDN);
        mpfr_div(r39675, r39667, r39656, MPFR_RNDN);
        ;
        mpfr_div(r39677, r39676, r39672, MPFR_RNDN);
        mpfr_mul(r39678, r39675, r39677, MPFR_RNDN);
        if (mpfr_get_si(r39663, MPFR_RNDN)) { mpfr_set(r39679, r39674, MPFR_RNDN); } else { mpfr_set(r39679, r39678, MPFR_RNDN); };
        if (mpfr_get_si(r39658, MPFR_RNDN)) { mpfr_set(r39680, r39661, MPFR_RNDN); } else { mpfr_set(r39680, r39679, MPFR_RNDN); };
        return mpfr_get_d(r39680, MPFR_RNDN);
}

