#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 r19703 = b_2F2;
        float r19704 = -r19703;
        float r19705 = r19703 * r19703;
        float r19706 = a;
        float r19707 = c;
        float r19708 = r19706 * r19707;
        float r19709 = r19705 - r19708;
        float r19710 = sqrt(r19709);
        float r19711 = r19704 + r19710;
        float r19712 = r19711 / r19706;
        return r19712;
}

double f_id(double a, double b_2F2, double c) {
        double r19713 = b_2F2;
        double r19714 = -r19713;
        double r19715 = r19713 * r19713;
        double r19716 = a;
        double r19717 = c;
        double r19718 = r19716 * r19717;
        double r19719 = r19715 - r19718;
        double r19720 = sqrt(r19719);
        double r19721 = r19714 + r19720;
        double r19722 = r19721 / r19716;
        return r19722;
}


double f_of(float a, float b_2F2, float c) {
        float r19723 = b_2F2;
        float r19724 = -2.502733322570611e+93;
        bool r19725 = r19723 <= r19724;
        float r19726 = -2;
        float r19727 = a;
        float r19728 = r19723 / r19727;
        float r19729 = r19726 * r19728;
        float r19730 = 2.1241642917832373e-155;
        bool r19731 = r19723 <= r19730;
        float r19732 = 1;
        float r19733 = -r19723;
        float r19734 = r19723 * r19723;
        float r19735 = c;
        float r19736 = r19727 * r19735;
        float r19737 = r19734 - r19736;
        float r19738 = sqrt(r19737);
        float r19739 = r19733 + r19738;
        float r19740 = r19727 / r19739;
        float r19741 = r19732 / r19740;
        float r19742 = 3.1746500024866854e+75;
        bool r19743 = r19723 <= r19742;
        float r19744 = r19735 * r19727;
        float r19745 = r19733 - r19738;
        float r19746 = r19744 / r19745;
        float r19747 = r19746 / r19727;
        float r19748 = r19735 / r19723;
        float r19749 = -1/2;
        float r19750 = r19748 * r19749;
        float r19751 = r19743 ? r19747 : r19750;
        float r19752 = r19731 ? r19741 : r19751;
        float r19753 = r19725 ? r19729 : r19752;
        return r19753;
}

double f_od(double a, double b_2F2, double c) {
        double r19754 = b_2F2;
        double r19755 = -2.502733322570611e+93;
        bool r19756 = r19754 <= r19755;
        double r19757 = -2;
        double r19758 = a;
        double r19759 = r19754 / r19758;
        double r19760 = r19757 * r19759;
        double r19761 = 2.1241642917832373e-155;
        bool r19762 = r19754 <= r19761;
        double r19763 = 1;
        double r19764 = -r19754;
        double r19765 = r19754 * r19754;
        double r19766 = c;
        double r19767 = r19758 * r19766;
        double r19768 = r19765 - r19767;
        double r19769 = sqrt(r19768);
        double r19770 = r19764 + r19769;
        double r19771 = r19758 / r19770;
        double r19772 = r19763 / r19771;
        double r19773 = 3.1746500024866854e+75;
        bool r19774 = r19754 <= r19773;
        double r19775 = r19766 * r19758;
        double r19776 = r19764 - r19769;
        double r19777 = r19775 / r19776;
        double r19778 = r19777 / r19758;
        double r19779 = r19766 / r19754;
        double r19780 = -1/2;
        double r19781 = r19779 * r19780;
        double r19782 = r19774 ? r19778 : r19781;
        double r19783 = r19762 ? r19772 : r19782;
        double r19784 = r19756 ? r19760 : r19783;
        return r19784;
}

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 r19785, r19786, r19787, r19788, r19789, r19790, r19791, r19792, r19793, r19794;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19785);
        mpfr_init(r19786);
        mpfr_init(r19787);
        mpfr_init(r19788);
        mpfr_init(r19789);
        mpfr_init(r19790);
        mpfr_init(r19791);
        mpfr_init(r19792);
        mpfr_init(r19793);
        mpfr_init(r19794);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r19785, b_2F2, MPFR_RNDN);
        mpfr_neg(r19786, r19785, MPFR_RNDN);
        mpfr_mul(r19787, r19785, r19785, MPFR_RNDN);
        mpfr_set_d(r19788, a, MPFR_RNDN);
        mpfr_set_d(r19789, c, MPFR_RNDN);
        mpfr_mul(r19790, r19788, r19789, MPFR_RNDN);
        mpfr_sub(r19791, r19787, r19790, MPFR_RNDN);
        mpfr_sqrt(r19792, r19791, MPFR_RNDN);
        mpfr_add(r19793, r19786, r19792, MPFR_RNDN);
        mpfr_div(r19794, r19793, r19788, MPFR_RNDN);
        return mpfr_get_d(r19794, MPFR_RNDN);
}

static mpfr_t r19795, r19796, r19797, r19798, r19799, r19800, r19801, r19802, r19803, r19804, r19805, r19806, r19807, r19808, r19809, r19810, r19811, r19812, r19813, r19814, r19815, r19816, r19817, r19818, r19819, r19820, r19821, r19822, r19823, r19824, r19825;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19795);
        mpfr_init_set_str(r19796, "-2.502733322570611e+93", 10, MPFR_RNDN);
        mpfr_init(r19797);
        mpfr_init_set_str(r19798, "-2", 10, MPFR_RNDN);
        mpfr_init(r19799);
        mpfr_init(r19800);
        mpfr_init(r19801);
        mpfr_init_set_str(r19802, "2.1241642917832373e-155", 10, MPFR_RNDN);
        mpfr_init(r19803);
        mpfr_init_set_str(r19804, "1", 10, MPFR_RNDN);
        mpfr_init(r19805);
        mpfr_init(r19806);
        mpfr_init(r19807);
        mpfr_init(r19808);
        mpfr_init(r19809);
        mpfr_init(r19810);
        mpfr_init(r19811);
        mpfr_init(r19812);
        mpfr_init(r19813);
        mpfr_init_set_str(r19814, "3.1746500024866854e+75", 10, MPFR_RNDN);
        mpfr_init(r19815);
        mpfr_init(r19816);
        mpfr_init(r19817);
        mpfr_init(r19818);
        mpfr_init(r19819);
        mpfr_init(r19820);
        mpfr_init_set_str(r19821, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19822);
        mpfr_init(r19823);
        mpfr_init(r19824);
        mpfr_init(r19825);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r19795, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19797, mpfr_cmp(r19795, r19796) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19799, a, MPFR_RNDN);
        mpfr_div(r19800, r19795, r19799, MPFR_RNDN);
        mpfr_mul(r19801, r19798, r19800, MPFR_RNDN);
        ;
        mpfr_set_si(r19803, mpfr_cmp(r19795, r19802) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r19805, r19795, MPFR_RNDN);
        mpfr_mul(r19806, r19795, r19795, MPFR_RNDN);
        mpfr_set_d(r19807, c, MPFR_RNDN);
        mpfr_mul(r19808, r19799, r19807, MPFR_RNDN);
        mpfr_sub(r19809, r19806, r19808, MPFR_RNDN);
        mpfr_sqrt(r19810, r19809, MPFR_RNDN);
        mpfr_add(r19811, r19805, r19810, MPFR_RNDN);
        mpfr_div(r19812, r19799, r19811, MPFR_RNDN);
        mpfr_div(r19813, r19804, r19812, MPFR_RNDN);
        ;
        mpfr_set_si(r19815, mpfr_cmp(r19795, r19814) <= 0, MPFR_RNDN);
        mpfr_mul(r19816, r19807, r19799, MPFR_RNDN);
        mpfr_sub(r19817, r19805, r19810, MPFR_RNDN);
        mpfr_div(r19818, r19816, r19817, MPFR_RNDN);
        mpfr_div(r19819, r19818, r19799, MPFR_RNDN);
        mpfr_div(r19820, r19807, r19795, MPFR_RNDN);
        ;
        mpfr_mul(r19822, r19820, r19821, MPFR_RNDN);
        if (mpfr_get_si(r19815, MPFR_RNDN)) { mpfr_set(r19823, r19819, MPFR_RNDN); } else { mpfr_set(r19823, r19822, MPFR_RNDN); };
        if (mpfr_get_si(r19803, MPFR_RNDN)) { mpfr_set(r19824, r19813, MPFR_RNDN); } else { mpfr_set(r19824, r19823, MPFR_RNDN); };
        if (mpfr_get_si(r19797, MPFR_RNDN)) { mpfr_set(r19825, r19801, MPFR_RNDN); } else { mpfr_set(r19825, r19824, MPFR_RNDN); };
        return mpfr_get_d(r19825, MPFR_RNDN);
}

static mpfr_t r19826, r19827, r19828, r19829, r19830, r19831, r19832, r19833, r19834, r19835, r19836, r19837, r19838, r19839, r19840, r19841, r19842, r19843, r19844, r19845, r19846, r19847, r19848, r19849, r19850, r19851, r19852, r19853, r19854, r19855, r19856;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19826);
        mpfr_init_set_str(r19827, "-2.502733322570611e+93", 10, MPFR_RNDN);
        mpfr_init(r19828);
        mpfr_init_set_str(r19829, "-2", 10, MPFR_RNDN);
        mpfr_init(r19830);
        mpfr_init(r19831);
        mpfr_init(r19832);
        mpfr_init_set_str(r19833, "2.1241642917832373e-155", 10, MPFR_RNDN);
        mpfr_init(r19834);
        mpfr_init_set_str(r19835, "1", 10, MPFR_RNDN);
        mpfr_init(r19836);
        mpfr_init(r19837);
        mpfr_init(r19838);
        mpfr_init(r19839);
        mpfr_init(r19840);
        mpfr_init(r19841);
        mpfr_init(r19842);
        mpfr_init(r19843);
        mpfr_init(r19844);
        mpfr_init_set_str(r19845, "3.1746500024866854e+75", 10, MPFR_RNDN);
        mpfr_init(r19846);
        mpfr_init(r19847);
        mpfr_init(r19848);
        mpfr_init(r19849);
        mpfr_init(r19850);
        mpfr_init(r19851);
        mpfr_init_set_str(r19852, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19853);
        mpfr_init(r19854);
        mpfr_init(r19855);
        mpfr_init(r19856);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r19826, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19828, mpfr_cmp(r19826, r19827) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19830, a, MPFR_RNDN);
        mpfr_div(r19831, r19826, r19830, MPFR_RNDN);
        mpfr_mul(r19832, r19829, r19831, MPFR_RNDN);
        ;
        mpfr_set_si(r19834, mpfr_cmp(r19826, r19833) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r19836, r19826, MPFR_RNDN);
        mpfr_mul(r19837, r19826, r19826, MPFR_RNDN);
        mpfr_set_d(r19838, c, MPFR_RNDN);
        mpfr_mul(r19839, r19830, r19838, MPFR_RNDN);
        mpfr_sub(r19840, r19837, r19839, MPFR_RNDN);
        mpfr_sqrt(r19841, r19840, MPFR_RNDN);
        mpfr_add(r19842, r19836, r19841, MPFR_RNDN);
        mpfr_div(r19843, r19830, r19842, MPFR_RNDN);
        mpfr_div(r19844, r19835, r19843, MPFR_RNDN);
        ;
        mpfr_set_si(r19846, mpfr_cmp(r19826, r19845) <= 0, MPFR_RNDN);
        mpfr_mul(r19847, r19838, r19830, MPFR_RNDN);
        mpfr_sub(r19848, r19836, r19841, MPFR_RNDN);
        mpfr_div(r19849, r19847, r19848, MPFR_RNDN);
        mpfr_div(r19850, r19849, r19830, MPFR_RNDN);
        mpfr_div(r19851, r19838, r19826, MPFR_RNDN);
        ;
        mpfr_mul(r19853, r19851, r19852, MPFR_RNDN);
        if (mpfr_get_si(r19846, MPFR_RNDN)) { mpfr_set(r19854, r19850, MPFR_RNDN); } else { mpfr_set(r19854, r19853, MPFR_RNDN); };
        if (mpfr_get_si(r19834, MPFR_RNDN)) { mpfr_set(r19855, r19844, MPFR_RNDN); } else { mpfr_set(r19855, r19854, MPFR_RNDN); };
        if (mpfr_get_si(r19828, MPFR_RNDN)) { mpfr_set(r19856, r19832, MPFR_RNDN); } else { mpfr_set(r19856, r19855, MPFR_RNDN); };
        return mpfr_get_d(r19856, MPFR_RNDN);
}

