#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 r18522 = b;
        float r18523 = -r18522;
        float r18524 = r18522 * r18522;
        float r18525 = 4.0f;
        float r18526 = a;
        float r18527 = r18525 * r18526;
        float r18528 = c;
        float r18529 = r18527 * r18528;
        float r18530 = r18524 - r18529;
        float r18531 = sqrt(r18530);
        float r18532 = r18523 + r18531;
        float r18533 = 2.0f;
        float r18534 = r18533 * r18526;
        float r18535 = r18532 / r18534;
        return r18535;
}

double f_id(double a, double b, double c) {
        double r18536 = b;
        double r18537 = -r18536;
        double r18538 = r18536 * r18536;
        double r18539 = 4.0;
        double r18540 = a;
        double r18541 = r18539 * r18540;
        double r18542 = c;
        double r18543 = r18541 * r18542;
        double r18544 = r18538 - r18543;
        double r18545 = sqrt(r18544);
        double r18546 = r18537 + r18545;
        double r18547 = 2.0;
        double r18548 = r18547 * r18540;
        double r18549 = r18546 / r18548;
        return r18549;
}


double f_of(float a, float b, float c) {
        float r18550 = b;
        float r18551 = -6.636085511448982e+62f;
        bool r18552 = r18550 <= r18551;
        float r18553 = c;
        float r18554 = r18553 / r18550;
        float r18555 = a;
        float r18556 = r18550 / r18555;
        float r18557 = r18554 - r18556;
        float r18558 = 3.800668809367847e-252f;
        bool r18559 = r18550 <= r18558;
        float r18560 = 1.0f;
        float r18561 = 2.0f;
        float r18562 = r18561 * r18555;
        float r18563 = -r18550;
        float r18564 = r18550 * r18550;
        float r18565 = 4.0f;
        float r18566 = r18565 * r18555;
        float r18567 = r18566 * r18553;
        float r18568 = r18564 - r18567;
        float r18569 = sqrt(r18568);
        float r18570 = r18563 + r18569;
        float r18571 = r18562 / r18570;
        float r18572 = r18560 / r18571;
        float r18573 = 2.7032921376893094e+83f;
        bool r18574 = r18550 <= r18573;
        float r18575 = r18563 - r18569;
        float r18576 = r18567 / r18575;
        float r18577 = r18576 / r18562;
        float r18578 = r18561 / r18553;
        float r18579 = r18565 / r18578;
        float r18580 = r18563 - r18550;
        float r18581 = r18555 * r18561;
        float r18582 = r18581 * r18554;
        float r18583 = r18580 + r18582;
        float r18584 = r18579 / r18583;
        float r18585 = r18574 ? r18577 : r18584;
        float r18586 = r18559 ? r18572 : r18585;
        float r18587 = r18552 ? r18557 : r18586;
        return r18587;
}

double f_od(double a, double b, double c) {
        double r18588 = b;
        double r18589 = -6.636085511448982e+62;
        bool r18590 = r18588 <= r18589;
        double r18591 = c;
        double r18592 = r18591 / r18588;
        double r18593 = a;
        double r18594 = r18588 / r18593;
        double r18595 = r18592 - r18594;
        double r18596 = 3.800668809367847e-252;
        bool r18597 = r18588 <= r18596;
        double r18598 = 1.0;
        double r18599 = 2.0;
        double r18600 = r18599 * r18593;
        double r18601 = -r18588;
        double r18602 = r18588 * r18588;
        double r18603 = 4.0;
        double r18604 = r18603 * r18593;
        double r18605 = r18604 * r18591;
        double r18606 = r18602 - r18605;
        double r18607 = sqrt(r18606);
        double r18608 = r18601 + r18607;
        double r18609 = r18600 / r18608;
        double r18610 = r18598 / r18609;
        double r18611 = 2.7032921376893094e+83;
        bool r18612 = r18588 <= r18611;
        double r18613 = r18601 - r18607;
        double r18614 = r18605 / r18613;
        double r18615 = r18614 / r18600;
        double r18616 = r18599 / r18591;
        double r18617 = r18603 / r18616;
        double r18618 = r18601 - r18588;
        double r18619 = r18593 * r18599;
        double r18620 = r18619 * r18592;
        double r18621 = r18618 + r18620;
        double r18622 = r18617 / r18621;
        double r18623 = r18612 ? r18615 : r18622;
        double r18624 = r18597 ? r18610 : r18623;
        double r18625 = r18590 ? r18595 : r18624;
        return r18625;
}

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 r18626, r18627, r18628, r18629, r18630, r18631, r18632, r18633, r18634, r18635, r18636, r18637, r18638, r18639;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r18626);
        mpfr_init(r18627);
        mpfr_init(r18628);
        mpfr_init_set_str(r18629, "4", 10, MPFR_RNDN);
        mpfr_init(r18630);
        mpfr_init(r18631);
        mpfr_init(r18632);
        mpfr_init(r18633);
        mpfr_init(r18634);
        mpfr_init(r18635);
        mpfr_init(r18636);
        mpfr_init_set_str(r18637, "2", 10, MPFR_RNDN);
        mpfr_init(r18638);
        mpfr_init(r18639);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r18626, b, MPFR_RNDN);
        mpfr_neg(r18627, r18626, MPFR_RNDN);
        mpfr_sqr(r18628, r18626, MPFR_RNDN);
        ;
        mpfr_set_d(r18630, a, MPFR_RNDN);
        mpfr_mul(r18631, r18629, r18630, MPFR_RNDN);
        mpfr_set_d(r18632, c, MPFR_RNDN);
        mpfr_mul(r18633, r18631, r18632, MPFR_RNDN);
        mpfr_sub(r18634, r18628, r18633, MPFR_RNDN);
        mpfr_sqrt(r18635, r18634, MPFR_RNDN);
        mpfr_add(r18636, r18627, r18635, MPFR_RNDN);
        ;
        mpfr_mul(r18638, r18637, r18630, MPFR_RNDN);
        mpfr_div(r18639, r18636, r18638, MPFR_RNDN);
        return mpfr_get_d(r18639, MPFR_RNDN);
}

static mpfr_t r18640, r18641, r18642, r18643, r18644, r18645, r18646, r18647, r18648, r18649, r18650, r18651, r18652, r18653, r18654, r18655, r18656, r18657, r18658, r18659, r18660, r18661, r18662, r18663, r18664, r18665, r18666, r18667, r18668, r18669, r18670, r18671, r18672, r18673, r18674, r18675, r18676, r18677;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18640);
        mpfr_init_set_str(r18641, "-6.636085511448982e+62", 10, MPFR_RNDN);
        mpfr_init(r18642);
        mpfr_init(r18643);
        mpfr_init(r18644);
        mpfr_init(r18645);
        mpfr_init(r18646);
        mpfr_init(r18647);
        mpfr_init_set_str(r18648, "3.800668809367847e-252", 10, MPFR_RNDN);
        mpfr_init(r18649);
        mpfr_init_set_str(r18650, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18651, "2", 10, MPFR_RNDN);
        mpfr_init(r18652);
        mpfr_init(r18653);
        mpfr_init(r18654);
        mpfr_init_set_str(r18655, "4", 10, MPFR_RNDN);
        mpfr_init(r18656);
        mpfr_init(r18657);
        mpfr_init(r18658);
        mpfr_init(r18659);
        mpfr_init(r18660);
        mpfr_init(r18661);
        mpfr_init(r18662);
        mpfr_init_set_str(r18663, "2.7032921376893094e+83", 10, MPFR_RNDN);
        mpfr_init(r18664);
        mpfr_init(r18665);
        mpfr_init(r18666);
        mpfr_init(r18667);
        mpfr_init(r18668);
        mpfr_init(r18669);
        mpfr_init(r18670);
        mpfr_init(r18671);
        mpfr_init(r18672);
        mpfr_init(r18673);
        mpfr_init(r18674);
        mpfr_init(r18675);
        mpfr_init(r18676);
        mpfr_init(r18677);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r18640, b, MPFR_RNDN);
        ;
        mpfr_set_si(r18642, mpfr_cmp(r18640, r18641) <= 0, MPFR_RNDN);
        mpfr_set_d(r18643, c, MPFR_RNDN);
        mpfr_div(r18644, r18643, r18640, MPFR_RNDN);
        mpfr_set_d(r18645, a, MPFR_RNDN);
        mpfr_div(r18646, r18640, r18645, MPFR_RNDN);
        mpfr_sub(r18647, r18644, r18646, MPFR_RNDN);
        ;
        mpfr_set_si(r18649, mpfr_cmp(r18640, r18648) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r18652, r18651, r18645, MPFR_RNDN);
        mpfr_neg(r18653, r18640, MPFR_RNDN);
        mpfr_sqr(r18654, r18640, MPFR_RNDN);
        ;
        mpfr_mul(r18656, r18655, r18645, MPFR_RNDN);
        mpfr_mul(r18657, r18656, r18643, MPFR_RNDN);
        mpfr_sub(r18658, r18654, r18657, MPFR_RNDN);
        mpfr_sqrt(r18659, r18658, MPFR_RNDN);
        mpfr_add(r18660, r18653, r18659, MPFR_RNDN);
        mpfr_div(r18661, r18652, r18660, MPFR_RNDN);
        mpfr_div(r18662, r18650, r18661, MPFR_RNDN);
        ;
        mpfr_set_si(r18664, mpfr_cmp(r18640, r18663) <= 0, MPFR_RNDN);
        mpfr_sub(r18665, r18653, r18659, MPFR_RNDN);
        mpfr_div(r18666, r18657, r18665, MPFR_RNDN);
        mpfr_div(r18667, r18666, r18652, MPFR_RNDN);
        mpfr_div(r18668, r18651, r18643, MPFR_RNDN);
        mpfr_div(r18669, r18655, r18668, MPFR_RNDN);
        mpfr_sub(r18670, r18653, r18640, MPFR_RNDN);
        mpfr_mul(r18671, r18645, r18651, MPFR_RNDN);
        mpfr_mul(r18672, r18671, r18644, MPFR_RNDN);
        mpfr_add(r18673, r18670, r18672, MPFR_RNDN);
        mpfr_div(r18674, r18669, r18673, MPFR_RNDN);
        if (mpfr_get_si(r18664, MPFR_RNDN)) { mpfr_set(r18675, r18667, MPFR_RNDN); } else { mpfr_set(r18675, r18674, MPFR_RNDN); };
        if (mpfr_get_si(r18649, MPFR_RNDN)) { mpfr_set(r18676, r18662, MPFR_RNDN); } else { mpfr_set(r18676, r18675, MPFR_RNDN); };
        if (mpfr_get_si(r18642, MPFR_RNDN)) { mpfr_set(r18677, r18647, MPFR_RNDN); } else { mpfr_set(r18677, r18676, MPFR_RNDN); };
        return mpfr_get_d(r18677, MPFR_RNDN);
}

static mpfr_t r18678, r18679, r18680, r18681, r18682, r18683, r18684, r18685, r18686, r18687, r18688, r18689, r18690, r18691, r18692, r18693, r18694, r18695, r18696, r18697, r18698, r18699, r18700, r18701, r18702, r18703, r18704, r18705, r18706, r18707, r18708, r18709, r18710, r18711, r18712, r18713, r18714, r18715;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18678);
        mpfr_init_set_str(r18679, "-6.636085511448982e+62", 10, MPFR_RNDN);
        mpfr_init(r18680);
        mpfr_init(r18681);
        mpfr_init(r18682);
        mpfr_init(r18683);
        mpfr_init(r18684);
        mpfr_init(r18685);
        mpfr_init_set_str(r18686, "3.800668809367847e-252", 10, MPFR_RNDN);
        mpfr_init(r18687);
        mpfr_init_set_str(r18688, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18689, "2", 10, MPFR_RNDN);
        mpfr_init(r18690);
        mpfr_init(r18691);
        mpfr_init(r18692);
        mpfr_init_set_str(r18693, "4", 10, MPFR_RNDN);
        mpfr_init(r18694);
        mpfr_init(r18695);
        mpfr_init(r18696);
        mpfr_init(r18697);
        mpfr_init(r18698);
        mpfr_init(r18699);
        mpfr_init(r18700);
        mpfr_init_set_str(r18701, "2.7032921376893094e+83", 10, MPFR_RNDN);
        mpfr_init(r18702);
        mpfr_init(r18703);
        mpfr_init(r18704);
        mpfr_init(r18705);
        mpfr_init(r18706);
        mpfr_init(r18707);
        mpfr_init(r18708);
        mpfr_init(r18709);
        mpfr_init(r18710);
        mpfr_init(r18711);
        mpfr_init(r18712);
        mpfr_init(r18713);
        mpfr_init(r18714);
        mpfr_init(r18715);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r18678, b, MPFR_RNDN);
        ;
        mpfr_set_si(r18680, mpfr_cmp(r18678, r18679) <= 0, MPFR_RNDN);
        mpfr_set_d(r18681, c, MPFR_RNDN);
        mpfr_div(r18682, r18681, r18678, MPFR_RNDN);
        mpfr_set_d(r18683, a, MPFR_RNDN);
        mpfr_div(r18684, r18678, r18683, MPFR_RNDN);
        mpfr_sub(r18685, r18682, r18684, MPFR_RNDN);
        ;
        mpfr_set_si(r18687, mpfr_cmp(r18678, r18686) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r18690, r18689, r18683, MPFR_RNDN);
        mpfr_neg(r18691, r18678, MPFR_RNDN);
        mpfr_sqr(r18692, r18678, MPFR_RNDN);
        ;
        mpfr_mul(r18694, r18693, r18683, MPFR_RNDN);
        mpfr_mul(r18695, r18694, r18681, MPFR_RNDN);
        mpfr_sub(r18696, r18692, r18695, MPFR_RNDN);
        mpfr_sqrt(r18697, r18696, MPFR_RNDN);
        mpfr_add(r18698, r18691, r18697, MPFR_RNDN);
        mpfr_div(r18699, r18690, r18698, MPFR_RNDN);
        mpfr_div(r18700, r18688, r18699, MPFR_RNDN);
        ;
        mpfr_set_si(r18702, mpfr_cmp(r18678, r18701) <= 0, MPFR_RNDN);
        mpfr_sub(r18703, r18691, r18697, MPFR_RNDN);
        mpfr_div(r18704, r18695, r18703, MPFR_RNDN);
        mpfr_div(r18705, r18704, r18690, MPFR_RNDN);
        mpfr_div(r18706, r18689, r18681, MPFR_RNDN);
        mpfr_div(r18707, r18693, r18706, MPFR_RNDN);
        mpfr_sub(r18708, r18691, r18678, MPFR_RNDN);
        mpfr_mul(r18709, r18683, r18689, MPFR_RNDN);
        mpfr_mul(r18710, r18709, r18682, MPFR_RNDN);
        mpfr_add(r18711, r18708, r18710, MPFR_RNDN);
        mpfr_div(r18712, r18707, r18711, MPFR_RNDN);
        if (mpfr_get_si(r18702, MPFR_RNDN)) { mpfr_set(r18713, r18705, MPFR_RNDN); } else { mpfr_set(r18713, r18712, MPFR_RNDN); };
        if (mpfr_get_si(r18687, MPFR_RNDN)) { mpfr_set(r18714, r18700, MPFR_RNDN); } else { mpfr_set(r18714, r18713, MPFR_RNDN); };
        if (mpfr_get_si(r18680, MPFR_RNDN)) { mpfr_set(r18715, r18685, MPFR_RNDN); } else { mpfr_set(r18715, r18714, MPFR_RNDN); };
        return mpfr_get_d(r18715, MPFR_RNDN);
}

