#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 r27675 = b;
        float r27676 = -r27675;
        float r27677 = r27675 * r27675;
        float r27678 = 4;
        float r27679 = a;
        float r27680 = r27678 * r27679;
        float r27681 = c;
        float r27682 = r27680 * r27681;
        float r27683 = r27677 - r27682;
        float r27684 = sqrt(r27683);
        float r27685 = r27676 + r27684;
        float r27686 = 2;
        float r27687 = r27686 * r27679;
        float r27688 = r27685 / r27687;
        return r27688;
}

double f_id(double a, double b, double c) {
        double r27689 = b;
        double r27690 = -r27689;
        double r27691 = r27689 * r27689;
        double r27692 = 4;
        double r27693 = a;
        double r27694 = r27692 * r27693;
        double r27695 = c;
        double r27696 = r27694 * r27695;
        double r27697 = r27691 - r27696;
        double r27698 = sqrt(r27697);
        double r27699 = r27690 + r27698;
        double r27700 = 2;
        double r27701 = r27700 * r27693;
        double r27702 = r27699 / r27701;
        return r27702;
}


double f_of(float a, float b, float c) {
        float r27703 = b;
        float r27704 = -3.278194171645191e+90;
        bool r27705 = r27703 <= r27704;
        float r27706 = 2;
        float r27707 = c;
        float r27708 = r27706 * r27707;
        float r27709 = a;
        float r27710 = r27703 / r27709;
        float r27711 = r27708 / r27710;
        float r27712 = r27703 + r27703;
        float r27713 = r27711 - r27712;
        float r27714 = r27706 * r27709;
        float r27715 = r27713 / r27714;
        float r27716 = -1.6241581144933301e-288;
        bool r27717 = r27703 <= r27716;
        float r27718 = -r27703;
        float r27719 = r27703 * r27703;
        float r27720 = 4;
        float r27721 = r27720 * r27709;
        float r27722 = r27707 * r27721;
        float r27723 = r27719 - r27722;
        float r27724 = sqrt(r27723);
        float r27725 = r27718 + r27724;
        float r27726 = 1;
        float r27727 = r27726 / r27714;
        float r27728 = r27725 * r27727;
        float r27729 = 3.8248083710801805e+20;
        bool r27730 = r27703 <= r27729;
        float r27731 = r27718 - r27724;
        float r27732 = r27722 / r27731;
        float r27733 = r27732 / r27714;
        float r27734 = -r27707;
        float r27735 = r27734 / r27703;
        float r27736 = r27730 ? r27733 : r27735;
        float r27737 = r27717 ? r27728 : r27736;
        float r27738 = r27705 ? r27715 : r27737;
        return r27738;
}

double f_od(double a, double b, double c) {
        double r27739 = b;
        double r27740 = -3.278194171645191e+90;
        bool r27741 = r27739 <= r27740;
        double r27742 = 2;
        double r27743 = c;
        double r27744 = r27742 * r27743;
        double r27745 = a;
        double r27746 = r27739 / r27745;
        double r27747 = r27744 / r27746;
        double r27748 = r27739 + r27739;
        double r27749 = r27747 - r27748;
        double r27750 = r27742 * r27745;
        double r27751 = r27749 / r27750;
        double r27752 = -1.6241581144933301e-288;
        bool r27753 = r27739 <= r27752;
        double r27754 = -r27739;
        double r27755 = r27739 * r27739;
        double r27756 = 4;
        double r27757 = r27756 * r27745;
        double r27758 = r27743 * r27757;
        double r27759 = r27755 - r27758;
        double r27760 = sqrt(r27759);
        double r27761 = r27754 + r27760;
        double r27762 = 1;
        double r27763 = r27762 / r27750;
        double r27764 = r27761 * r27763;
        double r27765 = 3.8248083710801805e+20;
        bool r27766 = r27739 <= r27765;
        double r27767 = r27754 - r27760;
        double r27768 = r27758 / r27767;
        double r27769 = r27768 / r27750;
        double r27770 = -r27743;
        double r27771 = r27770 / r27739;
        double r27772 = r27766 ? r27769 : r27771;
        double r27773 = r27753 ? r27764 : r27772;
        double r27774 = r27741 ? r27751 : r27773;
        return r27774;
}

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 r27775, r27776, r27777, r27778, r27779, r27780, r27781, r27782, r27783, r27784, r27785, r27786, r27787, r27788;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r27775);
        mpfr_init(r27776);
        mpfr_init(r27777);
        mpfr_init_set_str(r27778, "4", 10, MPFR_RNDN);
        mpfr_init(r27779);
        mpfr_init(r27780);
        mpfr_init(r27781);
        mpfr_init(r27782);
        mpfr_init(r27783);
        mpfr_init(r27784);
        mpfr_init(r27785);
        mpfr_init_set_str(r27786, "2", 10, MPFR_RNDN);
        mpfr_init(r27787);
        mpfr_init(r27788);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r27775, b, MPFR_RNDN);
        mpfr_neg(r27776, r27775, MPFR_RNDN);
        mpfr_mul(r27777, r27775, r27775, MPFR_RNDN);
        ;
        mpfr_set_d(r27779, a, MPFR_RNDN);
        mpfr_mul(r27780, r27778, r27779, MPFR_RNDN);
        mpfr_set_d(r27781, c, MPFR_RNDN);
        mpfr_mul(r27782, r27780, r27781, MPFR_RNDN);
        mpfr_sub(r27783, r27777, r27782, MPFR_RNDN);
        mpfr_sqrt(r27784, r27783, MPFR_RNDN);
        mpfr_add(r27785, r27776, r27784, MPFR_RNDN);
        ;
        mpfr_mul(r27787, r27786, r27779, MPFR_RNDN);
        mpfr_div(r27788, r27785, r27787, MPFR_RNDN);
        return mpfr_get_d(r27788, MPFR_RNDN);
}

static mpfr_t r27789, r27790, r27791, r27792, r27793, r27794, r27795, r27796, r27797, r27798, r27799, r27800, r27801, r27802, r27803, r27804, r27805, r27806, r27807, r27808, r27809, r27810, r27811, r27812, r27813, r27814, r27815, r27816, r27817, r27818, r27819, r27820, r27821, r27822, r27823, r27824;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r27789);
        mpfr_init_set_str(r27790, "-3.278194171645191e+90", 10, MPFR_RNDN);
        mpfr_init(r27791);
        mpfr_init_set_str(r27792, "2", 10, MPFR_RNDN);
        mpfr_init(r27793);
        mpfr_init(r27794);
        mpfr_init(r27795);
        mpfr_init(r27796);
        mpfr_init(r27797);
        mpfr_init(r27798);
        mpfr_init(r27799);
        mpfr_init(r27800);
        mpfr_init(r27801);
        mpfr_init_set_str(r27802, "-1.6241581144933301e-288", 10, MPFR_RNDN);
        mpfr_init(r27803);
        mpfr_init(r27804);
        mpfr_init(r27805);
        mpfr_init_set_str(r27806, "4", 10, MPFR_RNDN);
        mpfr_init(r27807);
        mpfr_init(r27808);
        mpfr_init(r27809);
        mpfr_init(r27810);
        mpfr_init(r27811);
        mpfr_init_set_str(r27812, "1", 10, MPFR_RNDN);
        mpfr_init(r27813);
        mpfr_init(r27814);
        mpfr_init_set_str(r27815, "3.8248083710801805e+20", 10, MPFR_RNDN);
        mpfr_init(r27816);
        mpfr_init(r27817);
        mpfr_init(r27818);
        mpfr_init(r27819);
        mpfr_init(r27820);
        mpfr_init(r27821);
        mpfr_init(r27822);
        mpfr_init(r27823);
        mpfr_init(r27824);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r27789, b, MPFR_RNDN);
        ;
        mpfr_set_si(r27791, mpfr_cmp(r27789, r27790) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r27793, c, MPFR_RNDN);
        mpfr_mul(r27794, r27792, r27793, MPFR_RNDN);
        mpfr_set_d(r27795, a, MPFR_RNDN);
        mpfr_div(r27796, r27789, r27795, MPFR_RNDN);
        mpfr_div(r27797, r27794, r27796, MPFR_RNDN);
        mpfr_add(r27798, r27789, r27789, MPFR_RNDN);
        mpfr_sub(r27799, r27797, r27798, MPFR_RNDN);
        mpfr_mul(r27800, r27792, r27795, MPFR_RNDN);
        mpfr_div(r27801, r27799, r27800, MPFR_RNDN);
        ;
        mpfr_set_si(r27803, mpfr_cmp(r27789, r27802) <= 0, MPFR_RNDN);
        mpfr_neg(r27804, r27789, MPFR_RNDN);
        mpfr_mul(r27805, r27789, r27789, MPFR_RNDN);
        ;
        mpfr_mul(r27807, r27806, r27795, MPFR_RNDN);
        mpfr_mul(r27808, r27793, r27807, MPFR_RNDN);
        mpfr_sub(r27809, r27805, r27808, MPFR_RNDN);
        mpfr_sqrt(r27810, r27809, MPFR_RNDN);
        mpfr_add(r27811, r27804, r27810, MPFR_RNDN);
        ;
        mpfr_div(r27813, r27812, r27800, MPFR_RNDN);
        mpfr_mul(r27814, r27811, r27813, MPFR_RNDN);
        ;
        mpfr_set_si(r27816, mpfr_cmp(r27789, r27815) <= 0, MPFR_RNDN);
        mpfr_sub(r27817, r27804, r27810, MPFR_RNDN);
        mpfr_div(r27818, r27808, r27817, MPFR_RNDN);
        mpfr_div(r27819, r27818, r27800, MPFR_RNDN);
        mpfr_neg(r27820, r27793, MPFR_RNDN);
        mpfr_div(r27821, r27820, r27789, MPFR_RNDN);
        if (mpfr_get_si(r27816, MPFR_RNDN)) { mpfr_set(r27822, r27819, MPFR_RNDN); } else { mpfr_set(r27822, r27821, MPFR_RNDN); };
        if (mpfr_get_si(r27803, MPFR_RNDN)) { mpfr_set(r27823, r27814, MPFR_RNDN); } else { mpfr_set(r27823, r27822, MPFR_RNDN); };
        if (mpfr_get_si(r27791, MPFR_RNDN)) { mpfr_set(r27824, r27801, MPFR_RNDN); } else { mpfr_set(r27824, r27823, MPFR_RNDN); };
        return mpfr_get_d(r27824, MPFR_RNDN);
}

static mpfr_t r27825, r27826, r27827, r27828, r27829, r27830, r27831, r27832, r27833, r27834, r27835, r27836, r27837, r27838, r27839, r27840, r27841, r27842, r27843, r27844, r27845, r27846, r27847, r27848, r27849, r27850, r27851, r27852, r27853, r27854, r27855, r27856, r27857, r27858, r27859, r27860;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r27825);
        mpfr_init_set_str(r27826, "-3.278194171645191e+90", 10, MPFR_RNDN);
        mpfr_init(r27827);
        mpfr_init_set_str(r27828, "2", 10, MPFR_RNDN);
        mpfr_init(r27829);
        mpfr_init(r27830);
        mpfr_init(r27831);
        mpfr_init(r27832);
        mpfr_init(r27833);
        mpfr_init(r27834);
        mpfr_init(r27835);
        mpfr_init(r27836);
        mpfr_init(r27837);
        mpfr_init_set_str(r27838, "-1.6241581144933301e-288", 10, MPFR_RNDN);
        mpfr_init(r27839);
        mpfr_init(r27840);
        mpfr_init(r27841);
        mpfr_init_set_str(r27842, "4", 10, MPFR_RNDN);
        mpfr_init(r27843);
        mpfr_init(r27844);
        mpfr_init(r27845);
        mpfr_init(r27846);
        mpfr_init(r27847);
        mpfr_init_set_str(r27848, "1", 10, MPFR_RNDN);
        mpfr_init(r27849);
        mpfr_init(r27850);
        mpfr_init_set_str(r27851, "3.8248083710801805e+20", 10, MPFR_RNDN);
        mpfr_init(r27852);
        mpfr_init(r27853);
        mpfr_init(r27854);
        mpfr_init(r27855);
        mpfr_init(r27856);
        mpfr_init(r27857);
        mpfr_init(r27858);
        mpfr_init(r27859);
        mpfr_init(r27860);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r27825, b, MPFR_RNDN);
        ;
        mpfr_set_si(r27827, mpfr_cmp(r27825, r27826) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r27829, c, MPFR_RNDN);
        mpfr_mul(r27830, r27828, r27829, MPFR_RNDN);
        mpfr_set_d(r27831, a, MPFR_RNDN);
        mpfr_div(r27832, r27825, r27831, MPFR_RNDN);
        mpfr_div(r27833, r27830, r27832, MPFR_RNDN);
        mpfr_add(r27834, r27825, r27825, MPFR_RNDN);
        mpfr_sub(r27835, r27833, r27834, MPFR_RNDN);
        mpfr_mul(r27836, r27828, r27831, MPFR_RNDN);
        mpfr_div(r27837, r27835, r27836, MPFR_RNDN);
        ;
        mpfr_set_si(r27839, mpfr_cmp(r27825, r27838) <= 0, MPFR_RNDN);
        mpfr_neg(r27840, r27825, MPFR_RNDN);
        mpfr_mul(r27841, r27825, r27825, MPFR_RNDN);
        ;
        mpfr_mul(r27843, r27842, r27831, MPFR_RNDN);
        mpfr_mul(r27844, r27829, r27843, MPFR_RNDN);
        mpfr_sub(r27845, r27841, r27844, MPFR_RNDN);
        mpfr_sqrt(r27846, r27845, MPFR_RNDN);
        mpfr_add(r27847, r27840, r27846, MPFR_RNDN);
        ;
        mpfr_div(r27849, r27848, r27836, MPFR_RNDN);
        mpfr_mul(r27850, r27847, r27849, MPFR_RNDN);
        ;
        mpfr_set_si(r27852, mpfr_cmp(r27825, r27851) <= 0, MPFR_RNDN);
        mpfr_sub(r27853, r27840, r27846, MPFR_RNDN);
        mpfr_div(r27854, r27844, r27853, MPFR_RNDN);
        mpfr_div(r27855, r27854, r27836, MPFR_RNDN);
        mpfr_neg(r27856, r27829, MPFR_RNDN);
        mpfr_div(r27857, r27856, r27825, MPFR_RNDN);
        if (mpfr_get_si(r27852, MPFR_RNDN)) { mpfr_set(r27858, r27855, MPFR_RNDN); } else { mpfr_set(r27858, r27857, MPFR_RNDN); };
        if (mpfr_get_si(r27839, MPFR_RNDN)) { mpfr_set(r27859, r27850, MPFR_RNDN); } else { mpfr_set(r27859, r27858, MPFR_RNDN); };
        if (mpfr_get_si(r27827, MPFR_RNDN)) { mpfr_set(r27860, r27837, MPFR_RNDN); } else { mpfr_set(r27860, r27859, MPFR_RNDN); };
        return mpfr_get_d(r27860, MPFR_RNDN);
}

