#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Quadratic roots, full range";

double f_if(float a, float b, float c) {
        float r3911600 = b;
        float r3911601 = -r3911600;
        float r3911602 = r3911600 * r3911600;
        float r3911603 = 4;
        float r3911604 = a;
        float r3911605 = r3911603 * r3911604;
        float r3911606 = c;
        float r3911607 = r3911605 * r3911606;
        float r3911608 = r3911602 - r3911607;
        float r3911609 = sqrt(r3911608);
        float r3911610 = r3911601 + r3911609;
        float r3911611 = 2;
        float r3911612 = r3911611 * r3911604;
        float r3911613 = r3911610 / r3911612;
        return r3911613;
}

double f_id(double a, double b, double c) {
        double r3911614 = b;
        double r3911615 = -r3911614;
        double r3911616 = r3911614 * r3911614;
        double r3911617 = 4;
        double r3911618 = a;
        double r3911619 = r3911617 * r3911618;
        double r3911620 = c;
        double r3911621 = r3911619 * r3911620;
        double r3911622 = r3911616 - r3911621;
        double r3911623 = sqrt(r3911622);
        double r3911624 = r3911615 + r3911623;
        double r3911625 = 2;
        double r3911626 = r3911625 * r3911618;
        double r3911627 = r3911624 / r3911626;
        return r3911627;
}


double f_of(float a, float b, float c) {
        float r3911628 = b;
        float r3911629 = -4.831413682538348e+130;
        bool r3911630 = r3911628 <= r3911629;
        float r3911631 = -r3911628;
        float r3911632 = a;
        float r3911633 = r3911631 / r3911632;
        float r3911634 = 4.2357318764457805e-73;
        bool r3911635 = r3911628 <= r3911634;
        float r3911636 = r3911628 * r3911628;
        float r3911637 = 4;
        float r3911638 = r3911637 * r3911632;
        float r3911639 = c;
        float r3911640 = r3911638 * r3911639;
        float r3911641 = r3911636 - r3911640;
        float r3911642 = sqrt(r3911641);
        float r3911643 = r3911631 + r3911642;
        float r3911644 = 2;
        float r3911645 = r3911644 * r3911632;
        float r3911646 = r3911643 / r3911645;
        float r3911647 = r3911639 / r3911628;
        float r3911648 = -2;
        float r3911649 = r3911648 / r3911644;
        float r3911650 = r3911647 * r3911649;
        float r3911651 = r3911635 ? r3911646 : r3911650;
        float r3911652 = r3911630 ? r3911633 : r3911651;
        return r3911652;
}

double f_od(double a, double b, double c) {
        double r3911653 = b;
        double r3911654 = -4.831413682538348e+130;
        bool r3911655 = r3911653 <= r3911654;
        double r3911656 = -r3911653;
        double r3911657 = a;
        double r3911658 = r3911656 / r3911657;
        double r3911659 = 4.2357318764457805e-73;
        bool r3911660 = r3911653 <= r3911659;
        double r3911661 = r3911653 * r3911653;
        double r3911662 = 4;
        double r3911663 = r3911662 * r3911657;
        double r3911664 = c;
        double r3911665 = r3911663 * r3911664;
        double r3911666 = r3911661 - r3911665;
        double r3911667 = sqrt(r3911666);
        double r3911668 = r3911656 + r3911667;
        double r3911669 = 2;
        double r3911670 = r3911669 * r3911657;
        double r3911671 = r3911668 / r3911670;
        double r3911672 = r3911664 / r3911653;
        double r3911673 = -2;
        double r3911674 = r3911673 / r3911669;
        double r3911675 = r3911672 * r3911674;
        double r3911676 = r3911660 ? r3911671 : r3911675;
        double r3911677 = r3911655 ? r3911658 : r3911676;
        return r3911677;
}

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 r3911678, r3911679, r3911680, r3911681, r3911682, r3911683, r3911684, r3911685, r3911686, r3911687, r3911688, r3911689, r3911690, r3911691;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init(r3911678);
        mpfr_init(r3911679);
        mpfr_init(r3911680);
        mpfr_init_set_str(r3911681, "4", 10, MPFR_RNDN);
        mpfr_init(r3911682);
        mpfr_init(r3911683);
        mpfr_init(r3911684);
        mpfr_init(r3911685);
        mpfr_init(r3911686);
        mpfr_init(r3911687);
        mpfr_init(r3911688);
        mpfr_init_set_str(r3911689, "2", 10, MPFR_RNDN);
        mpfr_init(r3911690);
        mpfr_init(r3911691);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r3911678, b, MPFR_RNDN);
        mpfr_neg(r3911679, r3911678, MPFR_RNDN);
        mpfr_mul(r3911680, r3911678, r3911678, MPFR_RNDN);
        ;
        mpfr_set_d(r3911682, a, MPFR_RNDN);
        mpfr_mul(r3911683, r3911681, r3911682, MPFR_RNDN);
        mpfr_set_d(r3911684, c, MPFR_RNDN);
        mpfr_mul(r3911685, r3911683, r3911684, MPFR_RNDN);
        mpfr_sub(r3911686, r3911680, r3911685, MPFR_RNDN);
        mpfr_sqrt(r3911687, r3911686, MPFR_RNDN);
        mpfr_add(r3911688, r3911679, r3911687, MPFR_RNDN);
        ;
        mpfr_mul(r3911690, r3911689, r3911682, MPFR_RNDN);
        mpfr_div(r3911691, r3911688, r3911690, MPFR_RNDN);
        return mpfr_get_d(r3911691, MPFR_RNDN);
}

static mpfr_t r3911692, r3911693, r3911694, r3911695, r3911696, r3911697, r3911698, r3911699, r3911700, r3911701, r3911702, r3911703, r3911704, r3911705, r3911706, r3911707, r3911708, r3911709, r3911710, r3911711, r3911712, r3911713, r3911714, r3911715, r3911716;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r3911692);
        mpfr_init_set_str(r3911693, "-4.831413682538348e+130", 10, MPFR_RNDN);
        mpfr_init(r3911694);
        mpfr_init(r3911695);
        mpfr_init(r3911696);
        mpfr_init(r3911697);
        mpfr_init_set_str(r3911698, "4.2357318764457805e-73", 10, MPFR_RNDN);
        mpfr_init(r3911699);
        mpfr_init(r3911700);
        mpfr_init_set_str(r3911701, "4", 10, MPFR_RNDN);
        mpfr_init(r3911702);
        mpfr_init(r3911703);
        mpfr_init(r3911704);
        mpfr_init(r3911705);
        mpfr_init(r3911706);
        mpfr_init(r3911707);
        mpfr_init_set_str(r3911708, "2", 10, MPFR_RNDN);
        mpfr_init(r3911709);
        mpfr_init(r3911710);
        mpfr_init(r3911711);
        mpfr_init_set_str(r3911712, "-2", 10, MPFR_RNDN);
        mpfr_init(r3911713);
        mpfr_init(r3911714);
        mpfr_init(r3911715);
        mpfr_init(r3911716);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r3911692, b, MPFR_RNDN);
        ;
        mpfr_set_si(r3911694, mpfr_cmp(r3911692, r3911693) <= 0, MPFR_RNDN);
        mpfr_neg(r3911695, r3911692, MPFR_RNDN);
        mpfr_set_d(r3911696, a, MPFR_RNDN);
        mpfr_div(r3911697, r3911695, r3911696, MPFR_RNDN);
        ;
        mpfr_set_si(r3911699, mpfr_cmp(r3911692, r3911698) <= 0, MPFR_RNDN);
        mpfr_mul(r3911700, r3911692, r3911692, MPFR_RNDN);
        ;
        mpfr_mul(r3911702, r3911701, r3911696, MPFR_RNDN);
        mpfr_set_d(r3911703, c, MPFR_RNDN);
        mpfr_mul(r3911704, r3911702, r3911703, MPFR_RNDN);
        mpfr_sub(r3911705, r3911700, r3911704, MPFR_RNDN);
        mpfr_sqrt(r3911706, r3911705, MPFR_RNDN);
        mpfr_add(r3911707, r3911695, r3911706, MPFR_RNDN);
        ;
        mpfr_mul(r3911709, r3911708, r3911696, MPFR_RNDN);
        mpfr_div(r3911710, r3911707, r3911709, MPFR_RNDN);
        mpfr_div(r3911711, r3911703, r3911692, MPFR_RNDN);
        ;
        mpfr_div(r3911713, r3911712, r3911708, MPFR_RNDN);
        mpfr_mul(r3911714, r3911711, r3911713, MPFR_RNDN);
        if (mpfr_get_si(r3911699, MPFR_RNDN)) { mpfr_set(r3911715, r3911710, MPFR_RNDN); } else { mpfr_set(r3911715, r3911714, MPFR_RNDN); };
        if (mpfr_get_si(r3911694, MPFR_RNDN)) { mpfr_set(r3911716, r3911697, MPFR_RNDN); } else { mpfr_set(r3911716, r3911715, MPFR_RNDN); };
        return mpfr_get_d(r3911716, MPFR_RNDN);
}

static mpfr_t r3911717, r3911718, r3911719, r3911720, r3911721, r3911722, r3911723, r3911724, r3911725, r3911726, r3911727, r3911728, r3911729, r3911730, r3911731, r3911732, r3911733, r3911734, r3911735, r3911736, r3911737, r3911738, r3911739, r3911740, r3911741;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r3911717);
        mpfr_init_set_str(r3911718, "-4.831413682538348e+130", 10, MPFR_RNDN);
        mpfr_init(r3911719);
        mpfr_init(r3911720);
        mpfr_init(r3911721);
        mpfr_init(r3911722);
        mpfr_init_set_str(r3911723, "4.2357318764457805e-73", 10, MPFR_RNDN);
        mpfr_init(r3911724);
        mpfr_init(r3911725);
        mpfr_init_set_str(r3911726, "4", 10, MPFR_RNDN);
        mpfr_init(r3911727);
        mpfr_init(r3911728);
        mpfr_init(r3911729);
        mpfr_init(r3911730);
        mpfr_init(r3911731);
        mpfr_init(r3911732);
        mpfr_init_set_str(r3911733, "2", 10, MPFR_RNDN);
        mpfr_init(r3911734);
        mpfr_init(r3911735);
        mpfr_init(r3911736);
        mpfr_init_set_str(r3911737, "-2", 10, MPFR_RNDN);
        mpfr_init(r3911738);
        mpfr_init(r3911739);
        mpfr_init(r3911740);
        mpfr_init(r3911741);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r3911717, b, MPFR_RNDN);
        ;
        mpfr_set_si(r3911719, mpfr_cmp(r3911717, r3911718) <= 0, MPFR_RNDN);
        mpfr_neg(r3911720, r3911717, MPFR_RNDN);
        mpfr_set_d(r3911721, a, MPFR_RNDN);
        mpfr_div(r3911722, r3911720, r3911721, MPFR_RNDN);
        ;
        mpfr_set_si(r3911724, mpfr_cmp(r3911717, r3911723) <= 0, MPFR_RNDN);
        mpfr_mul(r3911725, r3911717, r3911717, MPFR_RNDN);
        ;
        mpfr_mul(r3911727, r3911726, r3911721, MPFR_RNDN);
        mpfr_set_d(r3911728, c, MPFR_RNDN);
        mpfr_mul(r3911729, r3911727, r3911728, MPFR_RNDN);
        mpfr_sub(r3911730, r3911725, r3911729, MPFR_RNDN);
        mpfr_sqrt(r3911731, r3911730, MPFR_RNDN);
        mpfr_add(r3911732, r3911720, r3911731, MPFR_RNDN);
        ;
        mpfr_mul(r3911734, r3911733, r3911721, MPFR_RNDN);
        mpfr_div(r3911735, r3911732, r3911734, MPFR_RNDN);
        mpfr_div(r3911736, r3911728, r3911717, MPFR_RNDN);
        ;
        mpfr_div(r3911738, r3911737, r3911733, MPFR_RNDN);
        mpfr_mul(r3911739, r3911736, r3911738, MPFR_RNDN);
        if (mpfr_get_si(r3911724, MPFR_RNDN)) { mpfr_set(r3911740, r3911735, MPFR_RNDN); } else { mpfr_set(r3911740, r3911739, MPFR_RNDN); };
        if (mpfr_get_si(r3911719, MPFR_RNDN)) { mpfr_set(r3911741, r3911722, MPFR_RNDN); } else { mpfr_set(r3911741, r3911740, MPFR_RNDN); };
        return mpfr_get_d(r3911741, MPFR_RNDN);
}

