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

char *name = "quad2m (problem 3.2.1, negative)";

double f_if(float a, float b_2, float c) {
        float r7732 = b_2;
        float r7733 = -r7732;
        float r7734 = r7732 * r7732;
        float r7735 = a;
        float r7736 = c;
        float r7737 = r7735 * r7736;
        float r7738 = r7734 - r7737;
        float r7739 = sqrt(r7738);
        float r7740 = r7733 - r7739;
        float r7741 = r7740 / r7735;
        return r7741;
}

double f_id(double a, double b_2, double c) {
        double r7742 = b_2;
        double r7743 = -r7742;
        double r7744 = r7742 * r7742;
        double r7745 = a;
        double r7746 = c;
        double r7747 = r7745 * r7746;
        double r7748 = r7744 - r7747;
        double r7749 = sqrt(r7748);
        double r7750 = r7743 - r7749;
        double r7751 = r7750 / r7745;
        return r7751;
}


double f_of(float a, float b_2, float c) {
        float r7752 = b_2;
        float r7753 = -1.338815475246526e+154f;
        bool r7754 = r7752 <= r7753;
        float r7755 = c;
        float r7756 = a;
        float r7757 = r7756 * r7755;
        float r7758 = r7757 / r7752;
        float r7759 = 0.5f;
        float r7760 = r7758 * r7759;
        float r7761 = r7760 - r7752;
        float r7762 = r7761 - r7752;
        float r7763 = r7755 / r7762;
        float r7764 = -1.1965740506185076e-303f;
        bool r7765 = r7752 <= r7764;
        float r7766 = r7752 * r7752;
        float r7767 = r7766 - r7757;
        float r7768 = sqrt(r7767);
        float r7769 = r7768 - r7752;
        float r7770 = r7755 / r7769;
        float r7771 = 1.170080853887373e+54f;
        bool r7772 = r7752 <= r7771;
        float r7773 = -r7752;
        float r7774 = r7773 - r7768;
        float r7775 = r7774 / r7756;
        float r7776 = -2.0f;
        float r7777 = r7752 / r7756;
        float r7778 = r7776 * r7777;
        float r7779 = r7772 ? r7775 : r7778;
        float r7780 = r7765 ? r7770 : r7779;
        float r7781 = r7754 ? r7763 : r7780;
        return r7781;
}

double f_od(double a, double b_2, double c) {
        double r7782 = b_2;
        double r7783 = -1.338815475246526e+154;
        bool r7784 = r7782 <= r7783;
        double r7785 = c;
        double r7786 = a;
        double r7787 = r7786 * r7785;
        double r7788 = r7787 / r7782;
        double r7789 = 0.5;
        double r7790 = r7788 * r7789;
        double r7791 = r7790 - r7782;
        double r7792 = r7791 - r7782;
        double r7793 = r7785 / r7792;
        double r7794 = -1.1965740506185076e-303;
        bool r7795 = r7782 <= r7794;
        double r7796 = r7782 * r7782;
        double r7797 = r7796 - r7787;
        double r7798 = sqrt(r7797);
        double r7799 = r7798 - r7782;
        double r7800 = r7785 / r7799;
        double r7801 = 1.170080853887373e+54;
        bool r7802 = r7782 <= r7801;
        double r7803 = -r7782;
        double r7804 = r7803 - r7798;
        double r7805 = r7804 / r7786;
        double r7806 = -2.0;
        double r7807 = r7782 / r7786;
        double r7808 = r7806 * r7807;
        double r7809 = r7802 ? r7805 : r7808;
        double r7810 = r7795 ? r7800 : r7809;
        double r7811 = r7784 ? r7793 : r7810;
        return r7811;
}

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 r7812, r7813, r7814, r7815, r7816, r7817, r7818, r7819, r7820, r7821;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7812);
        mpfr_init(r7813);
        mpfr_init(r7814);
        mpfr_init(r7815);
        mpfr_init(r7816);
        mpfr_init(r7817);
        mpfr_init(r7818);
        mpfr_init(r7819);
        mpfr_init(r7820);
        mpfr_init(r7821);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r7812, b_2, MPFR_RNDN);
        mpfr_neg(r7813, r7812, MPFR_RNDN);
        mpfr_mul(r7814, r7812, r7812, MPFR_RNDN);
        mpfr_set_d(r7815, a, MPFR_RNDN);
        mpfr_set_d(r7816, c, MPFR_RNDN);
        mpfr_mul(r7817, r7815, r7816, MPFR_RNDN);
        mpfr_sub(r7818, r7814, r7817, MPFR_RNDN);
        mpfr_sqrt(r7819, r7818, MPFR_RNDN);
        mpfr_sub(r7820, r7813, r7819, MPFR_RNDN);
        mpfr_div(r7821, r7820, r7815, MPFR_RNDN);
        return mpfr_get_d(r7821, MPFR_RNDN);
}

static mpfr_t r7822, r7823, r7824, r7825, r7826, r7827, r7828, r7829, r7830, r7831, r7832, r7833, r7834, r7835, r7836, r7837, r7838, r7839, r7840, r7841, r7842, r7843, r7844, r7845, r7846, r7847, r7848, r7849, r7850, r7851;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7822);
        mpfr_init_set_str(r7823, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r7824);
        mpfr_init(r7825);
        mpfr_init(r7826);
        mpfr_init(r7827);
        mpfr_init(r7828);
        mpfr_init_set_str(r7829, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7830);
        mpfr_init(r7831);
        mpfr_init(r7832);
        mpfr_init(r7833);
        mpfr_init_set_str(r7834, "-1.1965740506185076e-303", 10, MPFR_RNDN);
        mpfr_init(r7835);
        mpfr_init(r7836);
        mpfr_init(r7837);
        mpfr_init(r7838);
        mpfr_init(r7839);
        mpfr_init(r7840);
        mpfr_init_set_str(r7841, "1.170080853887373e+54", 10, MPFR_RNDN);
        mpfr_init(r7842);
        mpfr_init(r7843);
        mpfr_init(r7844);
        mpfr_init(r7845);
        mpfr_init_set_str(r7846, "-2", 10, MPFR_RNDN);
        mpfr_init(r7847);
        mpfr_init(r7848);
        mpfr_init(r7849);
        mpfr_init(r7850);
        mpfr_init(r7851);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r7822, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r7824, mpfr_cmp(r7822, r7823) <= 0, MPFR_RNDN);
        mpfr_set_d(r7825, c, MPFR_RNDN);
        mpfr_set_d(r7826, a, MPFR_RNDN);
        mpfr_mul(r7827, r7826, r7825, MPFR_RNDN);
        mpfr_div(r7828, r7827, r7822, MPFR_RNDN);
        ;
        mpfr_mul(r7830, r7828, r7829, MPFR_RNDN);
        mpfr_sub(r7831, r7830, r7822, MPFR_RNDN);
        mpfr_sub(r7832, r7831, r7822, MPFR_RNDN);
        mpfr_div(r7833, r7825, r7832, MPFR_RNDN);
        ;
        mpfr_set_si(r7835, mpfr_cmp(r7822, r7834) <= 0, MPFR_RNDN);
        mpfr_mul(r7836, r7822, r7822, MPFR_RNDN);
        mpfr_sub(r7837, r7836, r7827, MPFR_RNDN);
        mpfr_sqrt(r7838, r7837, MPFR_RNDN);
        mpfr_sub(r7839, r7838, r7822, MPFR_RNDN);
        mpfr_div(r7840, r7825, r7839, MPFR_RNDN);
        ;
        mpfr_set_si(r7842, mpfr_cmp(r7822, r7841) <= 0, MPFR_RNDN);
        mpfr_neg(r7843, r7822, MPFR_RNDN);
        mpfr_sub(r7844, r7843, r7838, MPFR_RNDN);
        mpfr_div(r7845, r7844, r7826, MPFR_RNDN);
        ;
        mpfr_div(r7847, r7822, r7826, MPFR_RNDN);
        mpfr_mul(r7848, r7846, r7847, MPFR_RNDN);
        if (mpfr_get_si(r7842, MPFR_RNDN)) { mpfr_set(r7849, r7845, MPFR_RNDN); } else { mpfr_set(r7849, r7848, MPFR_RNDN); };
        if (mpfr_get_si(r7835, MPFR_RNDN)) { mpfr_set(r7850, r7840, MPFR_RNDN); } else { mpfr_set(r7850, r7849, MPFR_RNDN); };
        if (mpfr_get_si(r7824, MPFR_RNDN)) { mpfr_set(r7851, r7833, MPFR_RNDN); } else { mpfr_set(r7851, r7850, MPFR_RNDN); };
        return mpfr_get_d(r7851, MPFR_RNDN);
}

static mpfr_t r7852, r7853, r7854, r7855, r7856, r7857, r7858, r7859, r7860, r7861, r7862, r7863, r7864, r7865, r7866, r7867, r7868, r7869, r7870, r7871, r7872, r7873, r7874, r7875, r7876, r7877, r7878, r7879, r7880, r7881;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7852);
        mpfr_init_set_str(r7853, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r7854);
        mpfr_init(r7855);
        mpfr_init(r7856);
        mpfr_init(r7857);
        mpfr_init(r7858);
        mpfr_init_set_str(r7859, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7860);
        mpfr_init(r7861);
        mpfr_init(r7862);
        mpfr_init(r7863);
        mpfr_init_set_str(r7864, "-1.1965740506185076e-303", 10, MPFR_RNDN);
        mpfr_init(r7865);
        mpfr_init(r7866);
        mpfr_init(r7867);
        mpfr_init(r7868);
        mpfr_init(r7869);
        mpfr_init(r7870);
        mpfr_init_set_str(r7871, "1.170080853887373e+54", 10, MPFR_RNDN);
        mpfr_init(r7872);
        mpfr_init(r7873);
        mpfr_init(r7874);
        mpfr_init(r7875);
        mpfr_init_set_str(r7876, "-2", 10, MPFR_RNDN);
        mpfr_init(r7877);
        mpfr_init(r7878);
        mpfr_init(r7879);
        mpfr_init(r7880);
        mpfr_init(r7881);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r7852, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r7854, mpfr_cmp(r7852, r7853) <= 0, MPFR_RNDN);
        mpfr_set_d(r7855, c, MPFR_RNDN);
        mpfr_set_d(r7856, a, MPFR_RNDN);
        mpfr_mul(r7857, r7856, r7855, MPFR_RNDN);
        mpfr_div(r7858, r7857, r7852, MPFR_RNDN);
        ;
        mpfr_mul(r7860, r7858, r7859, MPFR_RNDN);
        mpfr_sub(r7861, r7860, r7852, MPFR_RNDN);
        mpfr_sub(r7862, r7861, r7852, MPFR_RNDN);
        mpfr_div(r7863, r7855, r7862, MPFR_RNDN);
        ;
        mpfr_set_si(r7865, mpfr_cmp(r7852, r7864) <= 0, MPFR_RNDN);
        mpfr_mul(r7866, r7852, r7852, MPFR_RNDN);
        mpfr_sub(r7867, r7866, r7857, MPFR_RNDN);
        mpfr_sqrt(r7868, r7867, MPFR_RNDN);
        mpfr_sub(r7869, r7868, r7852, MPFR_RNDN);
        mpfr_div(r7870, r7855, r7869, MPFR_RNDN);
        ;
        mpfr_set_si(r7872, mpfr_cmp(r7852, r7871) <= 0, MPFR_RNDN);
        mpfr_neg(r7873, r7852, MPFR_RNDN);
        mpfr_sub(r7874, r7873, r7868, MPFR_RNDN);
        mpfr_div(r7875, r7874, r7856, MPFR_RNDN);
        ;
        mpfr_div(r7877, r7852, r7856, MPFR_RNDN);
        mpfr_mul(r7878, r7876, r7877, MPFR_RNDN);
        if (mpfr_get_si(r7872, MPFR_RNDN)) { mpfr_set(r7879, r7875, MPFR_RNDN); } else { mpfr_set(r7879, r7878, MPFR_RNDN); };
        if (mpfr_get_si(r7865, MPFR_RNDN)) { mpfr_set(r7880, r7870, MPFR_RNDN); } else { mpfr_set(r7880, r7879, MPFR_RNDN); };
        if (mpfr_get_si(r7854, MPFR_RNDN)) { mpfr_set(r7881, r7863, MPFR_RNDN); } else { mpfr_set(r7881, r7880, MPFR_RNDN); };
        return mpfr_get_d(r7881, MPFR_RNDN);
}

