#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_2F2, float c) {
        float r18675 = b_2F2;
        float r18676 = -r18675;
        float r18677 = r18675 * r18675;
        float r18678 = a;
        float r18679 = c;
        float r18680 = r18678 * r18679;
        float r18681 = r18677 - r18680;
        float r18682 = sqrt(r18681);
        float r18683 = r18676 - r18682;
        float r18684 = r18683 / r18678;
        return r18684;
}

double f_id(double a, double b_2F2, double c) {
        double r18685 = b_2F2;
        double r18686 = -r18685;
        double r18687 = r18685 * r18685;
        double r18688 = a;
        double r18689 = c;
        double r18690 = r18688 * r18689;
        double r18691 = r18687 - r18690;
        double r18692 = sqrt(r18691);
        double r18693 = r18686 - r18692;
        double r18694 = r18693 / r18688;
        return r18694;
}


double f_of(float a, float b_2F2, float c) {
        float r18695 = b_2F2;
        float r18696 = -41706129517399.03f;
        bool r18697 = r18695 <= r18696;
        float r18698 = c;
        float r18699 = 0.5f;
        float r18700 = r18698 * r18699;
        float r18701 = a;
        float r18702 = r18701 / r18695;
        float r18703 = r18700 * r18702;
        float r18704 = -r18695;
        float r18705 = r18704 - r18695;
        float r18706 = r18703 + r18705;
        float r18707 = r18698 / r18706;
        float r18708 = -7.032654145395441e-187f;
        bool r18709 = r18695 <= r18708;
        float r18710 = 1.0f;
        float r18711 = r18698 / r18710;
        float r18712 = r18695 * r18695;
        float r18713 = r18701 * r18698;
        float r18714 = r18712 - r18713;
        float r18715 = sqrt(r18714);
        float r18716 = r18704 + r18715;
        float r18717 = r18701 / r18716;
        float r18718 = r18711 * r18717;
        float r18719 = r18718 / r18701;
        float r18720 = 3.713630071503827e+83f;
        bool r18721 = r18695 <= r18720;
        float r18722 = r18704 - r18715;
        float r18723 = r18710 / r18701;
        float r18724 = r18722 * r18723;
        float r18725 = -2.0f;
        float r18726 = r18695 / r18701;
        float r18727 = r18725 * r18726;
        float r18728 = r18721 ? r18724 : r18727;
        float r18729 = r18709 ? r18719 : r18728;
        float r18730 = r18697 ? r18707 : r18729;
        return r18730;
}

double f_od(double a, double b_2F2, double c) {
        double r18731 = b_2F2;
        double r18732 = -41706129517399.03;
        bool r18733 = r18731 <= r18732;
        double r18734 = c;
        double r18735 = 0.5;
        double r18736 = r18734 * r18735;
        double r18737 = a;
        double r18738 = r18737 / r18731;
        double r18739 = r18736 * r18738;
        double r18740 = -r18731;
        double r18741 = r18740 - r18731;
        double r18742 = r18739 + r18741;
        double r18743 = r18734 / r18742;
        double r18744 = -7.032654145395441e-187;
        bool r18745 = r18731 <= r18744;
        double r18746 = 1.0;
        double r18747 = r18734 / r18746;
        double r18748 = r18731 * r18731;
        double r18749 = r18737 * r18734;
        double r18750 = r18748 - r18749;
        double r18751 = sqrt(r18750);
        double r18752 = r18740 + r18751;
        double r18753 = r18737 / r18752;
        double r18754 = r18747 * r18753;
        double r18755 = r18754 / r18737;
        double r18756 = 3.713630071503827e+83;
        bool r18757 = r18731 <= r18756;
        double r18758 = r18740 - r18751;
        double r18759 = r18746 / r18737;
        double r18760 = r18758 * r18759;
        double r18761 = -2.0;
        double r18762 = r18731 / r18737;
        double r18763 = r18761 * r18762;
        double r18764 = r18757 ? r18760 : r18763;
        double r18765 = r18745 ? r18755 : r18764;
        double r18766 = r18733 ? r18743 : r18765;
        return r18766;
}

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 r18767, r18768, r18769, r18770, r18771, r18772, r18773, r18774, r18775, r18776;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r18767);
        mpfr_init(r18768);
        mpfr_init(r18769);
        mpfr_init(r18770);
        mpfr_init(r18771);
        mpfr_init(r18772);
        mpfr_init(r18773);
        mpfr_init(r18774);
        mpfr_init(r18775);
        mpfr_init(r18776);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r18767, b_2F2, MPFR_RNDN);
        mpfr_neg(r18768, r18767, MPFR_RNDN);
        mpfr_sqr(r18769, r18767, MPFR_RNDN);
        mpfr_set_d(r18770, a, MPFR_RNDN);
        mpfr_set_d(r18771, c, MPFR_RNDN);
        mpfr_mul(r18772, r18770, r18771, MPFR_RNDN);
        mpfr_sub(r18773, r18769, r18772, MPFR_RNDN);
        mpfr_sqrt(r18774, r18773, MPFR_RNDN);
        mpfr_sub(r18775, r18768, r18774, MPFR_RNDN);
        mpfr_div(r18776, r18775, r18770, MPFR_RNDN);
        return mpfr_get_d(r18776, MPFR_RNDN);
}

static mpfr_t r18777, r18778, r18779, r18780, r18781, r18782, r18783, r18784, r18785, r18786, r18787, r18788, r18789, r18790, r18791, r18792, r18793, r18794, r18795, r18796, r18797, r18798, r18799, r18800, r18801, r18802, r18803, r18804, r18805, r18806, r18807, r18808, r18809, r18810, r18811, r18812;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r18777);
        mpfr_init_set_str(r18778, "-41706129517399.03", 10, MPFR_RNDN);
        mpfr_init(r18779);
        mpfr_init(r18780);
        mpfr_init_set_str(r18781, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18782);
        mpfr_init(r18783);
        mpfr_init(r18784);
        mpfr_init(r18785);
        mpfr_init(r18786);
        mpfr_init(r18787);
        mpfr_init(r18788);
        mpfr_init(r18789);
        mpfr_init_set_str(r18790, "-7.032654145395441e-187", 10, MPFR_RNDN);
        mpfr_init(r18791);
        mpfr_init_set_str(r18792, "1", 10, MPFR_RNDN);
        mpfr_init(r18793);
        mpfr_init(r18794);
        mpfr_init(r18795);
        mpfr_init(r18796);
        mpfr_init(r18797);
        mpfr_init(r18798);
        mpfr_init(r18799);
        mpfr_init(r18800);
        mpfr_init(r18801);
        mpfr_init_set_str(r18802, "3.713630071503827e+83", 10, MPFR_RNDN);
        mpfr_init(r18803);
        mpfr_init(r18804);
        mpfr_init(r18805);
        mpfr_init(r18806);
        mpfr_init_set_str(r18807, "-2", 10, MPFR_RNDN);
        mpfr_init(r18808);
        mpfr_init(r18809);
        mpfr_init(r18810);
        mpfr_init(r18811);
        mpfr_init(r18812);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r18777, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r18779, mpfr_cmp(r18777, r18778) <= 0, MPFR_RNDN);
        mpfr_set_d(r18780, c, MPFR_RNDN);
        ;
        mpfr_mul(r18782, r18780, r18781, MPFR_RNDN);
        mpfr_set_d(r18783, a, MPFR_RNDN);
        mpfr_div(r18784, r18783, r18777, MPFR_RNDN);
        mpfr_mul(r18785, r18782, r18784, MPFR_RNDN);
        mpfr_neg(r18786, r18777, MPFR_RNDN);
        mpfr_sub(r18787, r18786, r18777, MPFR_RNDN);
        mpfr_add(r18788, r18785, r18787, MPFR_RNDN);
        mpfr_div(r18789, r18780, r18788, MPFR_RNDN);
        ;
        mpfr_set_si(r18791, mpfr_cmp(r18777, r18790) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r18793, r18780, r18792, MPFR_RNDN);
        mpfr_sqr(r18794, r18777, MPFR_RNDN);
        mpfr_mul(r18795, r18783, r18780, MPFR_RNDN);
        mpfr_sub(r18796, r18794, r18795, MPFR_RNDN);
        mpfr_sqrt(r18797, r18796, MPFR_RNDN);
        mpfr_add(r18798, r18786, r18797, MPFR_RNDN);
        mpfr_div(r18799, r18783, r18798, MPFR_RNDN);
        mpfr_mul(r18800, r18793, r18799, MPFR_RNDN);
        mpfr_div(r18801, r18800, r18783, MPFR_RNDN);
        ;
        mpfr_set_si(r18803, mpfr_cmp(r18777, r18802) <= 0, MPFR_RNDN);
        mpfr_sub(r18804, r18786, r18797, MPFR_RNDN);
        mpfr_div(r18805, r18792, r18783, MPFR_RNDN);
        mpfr_mul(r18806, r18804, r18805, MPFR_RNDN);
        ;
        mpfr_div(r18808, r18777, r18783, MPFR_RNDN);
        mpfr_mul(r18809, r18807, r18808, MPFR_RNDN);
        if (mpfr_get_si(r18803, MPFR_RNDN)) { mpfr_set(r18810, r18806, MPFR_RNDN); } else { mpfr_set(r18810, r18809, MPFR_RNDN); };
        if (mpfr_get_si(r18791, MPFR_RNDN)) { mpfr_set(r18811, r18801, MPFR_RNDN); } else { mpfr_set(r18811, r18810, MPFR_RNDN); };
        if (mpfr_get_si(r18779, MPFR_RNDN)) { mpfr_set(r18812, r18789, MPFR_RNDN); } else { mpfr_set(r18812, r18811, MPFR_RNDN); };
        return mpfr_get_d(r18812, MPFR_RNDN);
}

static mpfr_t r18813, r18814, r18815, r18816, r18817, r18818, r18819, r18820, r18821, r18822, r18823, r18824, r18825, r18826, r18827, r18828, r18829, r18830, r18831, r18832, r18833, r18834, r18835, r18836, r18837, r18838, r18839, r18840, r18841, r18842, r18843, r18844, r18845, r18846, r18847, r18848;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r18813);
        mpfr_init_set_str(r18814, "-41706129517399.03", 10, MPFR_RNDN);
        mpfr_init(r18815);
        mpfr_init(r18816);
        mpfr_init_set_str(r18817, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18818);
        mpfr_init(r18819);
        mpfr_init(r18820);
        mpfr_init(r18821);
        mpfr_init(r18822);
        mpfr_init(r18823);
        mpfr_init(r18824);
        mpfr_init(r18825);
        mpfr_init_set_str(r18826, "-7.032654145395441e-187", 10, MPFR_RNDN);
        mpfr_init(r18827);
        mpfr_init_set_str(r18828, "1", 10, MPFR_RNDN);
        mpfr_init(r18829);
        mpfr_init(r18830);
        mpfr_init(r18831);
        mpfr_init(r18832);
        mpfr_init(r18833);
        mpfr_init(r18834);
        mpfr_init(r18835);
        mpfr_init(r18836);
        mpfr_init(r18837);
        mpfr_init_set_str(r18838, "3.713630071503827e+83", 10, MPFR_RNDN);
        mpfr_init(r18839);
        mpfr_init(r18840);
        mpfr_init(r18841);
        mpfr_init(r18842);
        mpfr_init_set_str(r18843, "-2", 10, MPFR_RNDN);
        mpfr_init(r18844);
        mpfr_init(r18845);
        mpfr_init(r18846);
        mpfr_init(r18847);
        mpfr_init(r18848);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r18813, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r18815, mpfr_cmp(r18813, r18814) <= 0, MPFR_RNDN);
        mpfr_set_d(r18816, c, MPFR_RNDN);
        ;
        mpfr_mul(r18818, r18816, r18817, MPFR_RNDN);
        mpfr_set_d(r18819, a, MPFR_RNDN);
        mpfr_div(r18820, r18819, r18813, MPFR_RNDN);
        mpfr_mul(r18821, r18818, r18820, MPFR_RNDN);
        mpfr_neg(r18822, r18813, MPFR_RNDN);
        mpfr_sub(r18823, r18822, r18813, MPFR_RNDN);
        mpfr_add(r18824, r18821, r18823, MPFR_RNDN);
        mpfr_div(r18825, r18816, r18824, MPFR_RNDN);
        ;
        mpfr_set_si(r18827, mpfr_cmp(r18813, r18826) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r18829, r18816, r18828, MPFR_RNDN);
        mpfr_sqr(r18830, r18813, MPFR_RNDN);
        mpfr_mul(r18831, r18819, r18816, MPFR_RNDN);
        mpfr_sub(r18832, r18830, r18831, MPFR_RNDN);
        mpfr_sqrt(r18833, r18832, MPFR_RNDN);
        mpfr_add(r18834, r18822, r18833, MPFR_RNDN);
        mpfr_div(r18835, r18819, r18834, MPFR_RNDN);
        mpfr_mul(r18836, r18829, r18835, MPFR_RNDN);
        mpfr_div(r18837, r18836, r18819, MPFR_RNDN);
        ;
        mpfr_set_si(r18839, mpfr_cmp(r18813, r18838) <= 0, MPFR_RNDN);
        mpfr_sub(r18840, r18822, r18833, MPFR_RNDN);
        mpfr_div(r18841, r18828, r18819, MPFR_RNDN);
        mpfr_mul(r18842, r18840, r18841, MPFR_RNDN);
        ;
        mpfr_div(r18844, r18813, r18819, MPFR_RNDN);
        mpfr_mul(r18845, r18843, r18844, MPFR_RNDN);
        if (mpfr_get_si(r18839, MPFR_RNDN)) { mpfr_set(r18846, r18842, MPFR_RNDN); } else { mpfr_set(r18846, r18845, MPFR_RNDN); };
        if (mpfr_get_si(r18827, MPFR_RNDN)) { mpfr_set(r18847, r18837, MPFR_RNDN); } else { mpfr_set(r18847, r18846, MPFR_RNDN); };
        if (mpfr_get_si(r18815, MPFR_RNDN)) { mpfr_set(r18848, r18825, MPFR_RNDN); } else { mpfr_set(r18848, r18847, MPFR_RNDN); };
        return mpfr_get_d(r18848, MPFR_RNDN);
}

