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

char *name = "quad2p (problem 3.2.1, positive)";

double f_if(float a, float b_2F2, float c) {
        float r18719 = b_2F2;
        float r18720 = -r18719;
        float r18721 = r18719 * r18719;
        float r18722 = a;
        float r18723 = c;
        float r18724 = r18722 * r18723;
        float r18725 = r18721 - r18724;
        float r18726 = sqrt(r18725);
        float r18727 = r18720 + r18726;
        float r18728 = r18727 / r18722;
        return r18728;
}

double f_id(double a, double b_2F2, double c) {
        double r18729 = b_2F2;
        double r18730 = -r18729;
        double r18731 = r18729 * r18729;
        double r18732 = a;
        double r18733 = c;
        double r18734 = r18732 * r18733;
        double r18735 = r18731 - r18734;
        double r18736 = sqrt(r18735);
        double r18737 = r18730 + r18736;
        double r18738 = r18737 / r18732;
        return r18738;
}


double f_of(float a, float b_2F2, float c) {
        float r18739 = b_2F2;
        float r18740 = -1.5852813649951211e+33f;
        bool r18741 = r18739 <= r18740;
        float r18742 = c;
        float r18743 = r18742 / r18739;
        float r18744 = a;
        float r18745 = 0.5f;
        float r18746 = r18744 * r18745;
        float r18747 = r18743 * r18746;
        float r18748 = -r18739;
        float r18749 = r18739 - r18748;
        float r18750 = r18747 - r18749;
        float r18751 = r18750 / r18744;
        float r18752 = 5.3630996565742086e-235f;
        bool r18753 = r18739 <= r18752;
        float r18754 = 1.0f;
        float r18755 = r18739 * r18739;
        float r18756 = r18744 * r18742;
        float r18757 = r18755 - r18756;
        float r18758 = sqrt(r18757);
        float r18759 = r18748 + r18758;
        float r18760 = r18744 / r18759;
        float r18761 = r18754 / r18760;
        float r18762 = 1.6164635363498484e-18f;
        bool r18763 = r18739 <= r18762;
        float r18764 = r18742 * r18744;
        float r18765 = r18748 - r18758;
        float r18766 = r18764 / r18765;
        float r18767 = r18766 / r18744;
        float r18768 = -0.5f;
        float r18769 = r18743 * r18768;
        float r18770 = r18763 ? r18767 : r18769;
        float r18771 = r18753 ? r18761 : r18770;
        float r18772 = r18741 ? r18751 : r18771;
        return r18772;
}

double f_od(double a, double b_2F2, double c) {
        double r18773 = b_2F2;
        double r18774 = -1.5852813649951211e+33;
        bool r18775 = r18773 <= r18774;
        double r18776 = c;
        double r18777 = r18776 / r18773;
        double r18778 = a;
        double r18779 = 0.5;
        double r18780 = r18778 * r18779;
        double r18781 = r18777 * r18780;
        double r18782 = -r18773;
        double r18783 = r18773 - r18782;
        double r18784 = r18781 - r18783;
        double r18785 = r18784 / r18778;
        double r18786 = 5.3630996565742086e-235;
        bool r18787 = r18773 <= r18786;
        double r18788 = 1.0;
        double r18789 = r18773 * r18773;
        double r18790 = r18778 * r18776;
        double r18791 = r18789 - r18790;
        double r18792 = sqrt(r18791);
        double r18793 = r18782 + r18792;
        double r18794 = r18778 / r18793;
        double r18795 = r18788 / r18794;
        double r18796 = 1.6164635363498484e-18;
        bool r18797 = r18773 <= r18796;
        double r18798 = r18776 * r18778;
        double r18799 = r18782 - r18792;
        double r18800 = r18798 / r18799;
        double r18801 = r18800 / r18778;
        double r18802 = -0.5;
        double r18803 = r18777 * r18802;
        double r18804 = r18797 ? r18801 : r18803;
        double r18805 = r18787 ? r18795 : r18804;
        double r18806 = r18775 ? r18785 : r18805;
        return r18806;
}

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 r18807, r18808, r18809, r18810, r18811, r18812, r18813, r18814, r18815, r18816;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r18807);
        mpfr_init(r18808);
        mpfr_init(r18809);
        mpfr_init(r18810);
        mpfr_init(r18811);
        mpfr_init(r18812);
        mpfr_init(r18813);
        mpfr_init(r18814);
        mpfr_init(r18815);
        mpfr_init(r18816);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r18807, b_2F2, MPFR_RNDN);
        mpfr_neg(r18808, r18807, MPFR_RNDN);
        mpfr_sqr(r18809, r18807, MPFR_RNDN);
        mpfr_set_d(r18810, a, MPFR_RNDN);
        mpfr_set_d(r18811, c, MPFR_RNDN);
        mpfr_mul(r18812, r18810, r18811, MPFR_RNDN);
        mpfr_sub(r18813, r18809, r18812, MPFR_RNDN);
        mpfr_sqrt(r18814, r18813, MPFR_RNDN);
        mpfr_add(r18815, r18808, r18814, MPFR_RNDN);
        mpfr_div(r18816, r18815, r18810, MPFR_RNDN);
        return mpfr_get_d(r18816, MPFR_RNDN);
}

static mpfr_t 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, r18849, r18850;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r18817);
        mpfr_init_set_str(r18818, "-1.5852813649951211e+33", 10, MPFR_RNDN);
        mpfr_init(r18819);
        mpfr_init(r18820);
        mpfr_init(r18821);
        mpfr_init(r18822);
        mpfr_init_set_str(r18823, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18824);
        mpfr_init(r18825);
        mpfr_init(r18826);
        mpfr_init(r18827);
        mpfr_init(r18828);
        mpfr_init(r18829);
        mpfr_init_set_str(r18830, "5.3630996565742086e-235", 10, MPFR_RNDN);
        mpfr_init(r18831);
        mpfr_init_set_str(r18832, "1", 10, MPFR_RNDN);
        mpfr_init(r18833);
        mpfr_init(r18834);
        mpfr_init(r18835);
        mpfr_init(r18836);
        mpfr_init(r18837);
        mpfr_init(r18838);
        mpfr_init(r18839);
        mpfr_init_set_str(r18840, "1.6164635363498484e-18", 10, MPFR_RNDN);
        mpfr_init(r18841);
        mpfr_init(r18842);
        mpfr_init(r18843);
        mpfr_init(r18844);
        mpfr_init(r18845);
        mpfr_init_set_str(r18846, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r18847);
        mpfr_init(r18848);
        mpfr_init(r18849);
        mpfr_init(r18850);
}

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

static mpfr_t r18851, r18852, r18853, r18854, r18855, r18856, r18857, r18858, r18859, r18860, r18861, r18862, r18863, r18864, r18865, r18866, r18867, r18868, r18869, r18870, r18871, r18872, r18873, r18874, r18875, r18876, r18877, r18878, r18879, r18880, r18881, r18882, r18883, r18884;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r18851);
        mpfr_init_set_str(r18852, "-1.5852813649951211e+33", 10, MPFR_RNDN);
        mpfr_init(r18853);
        mpfr_init(r18854);
        mpfr_init(r18855);
        mpfr_init(r18856);
        mpfr_init_set_str(r18857, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18858);
        mpfr_init(r18859);
        mpfr_init(r18860);
        mpfr_init(r18861);
        mpfr_init(r18862);
        mpfr_init(r18863);
        mpfr_init_set_str(r18864, "5.3630996565742086e-235", 10, MPFR_RNDN);
        mpfr_init(r18865);
        mpfr_init_set_str(r18866, "1", 10, MPFR_RNDN);
        mpfr_init(r18867);
        mpfr_init(r18868);
        mpfr_init(r18869);
        mpfr_init(r18870);
        mpfr_init(r18871);
        mpfr_init(r18872);
        mpfr_init(r18873);
        mpfr_init_set_str(r18874, "1.6164635363498484e-18", 10, MPFR_RNDN);
        mpfr_init(r18875);
        mpfr_init(r18876);
        mpfr_init(r18877);
        mpfr_init(r18878);
        mpfr_init(r18879);
        mpfr_init_set_str(r18880, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r18881);
        mpfr_init(r18882);
        mpfr_init(r18883);
        mpfr_init(r18884);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r18851, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r18853, mpfr_cmp(r18851, r18852) <= 0, MPFR_RNDN);
        mpfr_set_d(r18854, c, MPFR_RNDN);
        mpfr_div(r18855, r18854, r18851, MPFR_RNDN);
        mpfr_set_d(r18856, a, MPFR_RNDN);
        ;
        mpfr_mul(r18858, r18856, r18857, MPFR_RNDN);
        mpfr_mul(r18859, r18855, r18858, MPFR_RNDN);
        mpfr_neg(r18860, r18851, MPFR_RNDN);
        mpfr_sub(r18861, r18851, r18860, MPFR_RNDN);
        mpfr_sub(r18862, r18859, r18861, MPFR_RNDN);
        mpfr_div(r18863, r18862, r18856, MPFR_RNDN);
        ;
        mpfr_set_si(r18865, mpfr_cmp(r18851, r18864) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r18867, r18851, MPFR_RNDN);
        mpfr_mul(r18868, r18856, r18854, MPFR_RNDN);
        mpfr_sub(r18869, r18867, r18868, MPFR_RNDN);
        mpfr_sqrt(r18870, r18869, MPFR_RNDN);
        mpfr_add(r18871, r18860, r18870, MPFR_RNDN);
        mpfr_div(r18872, r18856, r18871, MPFR_RNDN);
        mpfr_div(r18873, r18866, r18872, MPFR_RNDN);
        ;
        mpfr_set_si(r18875, mpfr_cmp(r18851, r18874) <= 0, MPFR_RNDN);
        mpfr_mul(r18876, r18854, r18856, MPFR_RNDN);
        mpfr_sub(r18877, r18860, r18870, MPFR_RNDN);
        mpfr_div(r18878, r18876, r18877, MPFR_RNDN);
        mpfr_div(r18879, r18878, r18856, MPFR_RNDN);
        ;
        mpfr_mul(r18881, r18855, r18880, MPFR_RNDN);
        if (mpfr_get_si(r18875, MPFR_RNDN)) { mpfr_set(r18882, r18879, MPFR_RNDN); } else { mpfr_set(r18882, r18881, MPFR_RNDN); };
        if (mpfr_get_si(r18865, MPFR_RNDN)) { mpfr_set(r18883, r18873, MPFR_RNDN); } else { mpfr_set(r18883, r18882, MPFR_RNDN); };
        if (mpfr_get_si(r18853, MPFR_RNDN)) { mpfr_set(r18884, r18863, MPFR_RNDN); } else { mpfr_set(r18884, r18883, MPFR_RNDN); };
        return mpfr_get_d(r18884, MPFR_RNDN);
}

