#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 r19742 = b_2F2;
        float r19743 = -r19742;
        float r19744 = r19742 * r19742;
        float r19745 = a;
        float r19746 = c;
        float r19747 = r19745 * r19746;
        float r19748 = r19744 - r19747;
        float r19749 = sqrt(r19748);
        float r19750 = r19743 + r19749;
        float r19751 = r19750 / r19745;
        return r19751;
}

double f_id(double a, double b_2F2, double c) {
        double r19752 = b_2F2;
        double r19753 = -r19752;
        double r19754 = r19752 * r19752;
        double r19755 = a;
        double r19756 = c;
        double r19757 = r19755 * r19756;
        double r19758 = r19754 - r19757;
        double r19759 = sqrt(r19758);
        double r19760 = r19753 + r19759;
        double r19761 = r19760 / r19755;
        return r19761;
}


double f_of(float a, float b_2F2, float c) {
        float r19762 = b_2F2;
        float r19763 = -3.4960188181991964e+137;
        bool r19764 = r19762 <= r19763;
        float r19765 = -2;
        float r19766 = a;
        float r19767 = r19762 / r19766;
        float r19768 = r19765 * r19767;
        float r19769 = 8.22387869142787e-144;
        bool r19770 = r19762 <= r19769;
        float r19771 = 1;
        float r19772 = -r19762;
        float r19773 = r19762 * r19762;
        float r19774 = c;
        float r19775 = r19766 * r19774;
        float r19776 = r19773 - r19775;
        float r19777 = sqrt(r19776);
        float r19778 = r19772 + r19777;
        float r19779 = r19766 / r19778;
        float r19780 = r19771 / r19779;
        float r19781 = 1.6595239669198776e+39;
        bool r19782 = r19762 <= r19781;
        float r19783 = r19774 * r19766;
        float r19784 = r19772 - r19777;
        float r19785 = r19783 / r19784;
        float r19786 = r19785 / r19766;
        float r19787 = r19774 / r19762;
        float r19788 = -1/2;
        float r19789 = r19787 * r19788;
        float r19790 = r19782 ? r19786 : r19789;
        float r19791 = r19770 ? r19780 : r19790;
        float r19792 = r19764 ? r19768 : r19791;
        return r19792;
}

double f_od(double a, double b_2F2, double c) {
        double r19793 = b_2F2;
        double r19794 = -3.4960188181991964e+137;
        bool r19795 = r19793 <= r19794;
        double r19796 = -2;
        double r19797 = a;
        double r19798 = r19793 / r19797;
        double r19799 = r19796 * r19798;
        double r19800 = 8.22387869142787e-144;
        bool r19801 = r19793 <= r19800;
        double r19802 = 1;
        double r19803 = -r19793;
        double r19804 = r19793 * r19793;
        double r19805 = c;
        double r19806 = r19797 * r19805;
        double r19807 = r19804 - r19806;
        double r19808 = sqrt(r19807);
        double r19809 = r19803 + r19808;
        double r19810 = r19797 / r19809;
        double r19811 = r19802 / r19810;
        double r19812 = 1.6595239669198776e+39;
        bool r19813 = r19793 <= r19812;
        double r19814 = r19805 * r19797;
        double r19815 = r19803 - r19808;
        double r19816 = r19814 / r19815;
        double r19817 = r19816 / r19797;
        double r19818 = r19805 / r19793;
        double r19819 = -1/2;
        double r19820 = r19818 * r19819;
        double r19821 = r19813 ? r19817 : r19820;
        double r19822 = r19801 ? r19811 : r19821;
        double r19823 = r19795 ? r19799 : r19822;
        return r19823;
}

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 r19824, r19825, r19826, r19827, r19828, r19829, r19830, r19831, r19832, r19833;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19824);
        mpfr_init(r19825);
        mpfr_init(r19826);
        mpfr_init(r19827);
        mpfr_init(r19828);
        mpfr_init(r19829);
        mpfr_init(r19830);
        mpfr_init(r19831);
        mpfr_init(r19832);
        mpfr_init(r19833);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r19824, b_2F2, MPFR_RNDN);
        mpfr_neg(r19825, r19824, MPFR_RNDN);
        mpfr_mul(r19826, r19824, r19824, MPFR_RNDN);
        mpfr_set_d(r19827, a, MPFR_RNDN);
        mpfr_set_d(r19828, c, MPFR_RNDN);
        mpfr_mul(r19829, r19827, r19828, MPFR_RNDN);
        mpfr_sub(r19830, r19826, r19829, MPFR_RNDN);
        mpfr_sqrt(r19831, r19830, MPFR_RNDN);
        mpfr_add(r19832, r19825, r19831, MPFR_RNDN);
        mpfr_div(r19833, r19832, r19827, MPFR_RNDN);
        return mpfr_get_d(r19833, MPFR_RNDN);
}

static mpfr_t r19834, r19835, r19836, r19837, r19838, r19839, r19840, r19841, r19842, r19843, r19844, r19845, r19846, r19847, r19848, r19849, r19850, r19851, r19852, r19853, r19854, r19855, r19856, r19857, r19858, r19859, r19860, r19861, r19862, r19863, r19864;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19834);
        mpfr_init_set_str(r19835, "-3.4960188181991964e+137", 10, MPFR_RNDN);
        mpfr_init(r19836);
        mpfr_init_set_str(r19837, "-2", 10, MPFR_RNDN);
        mpfr_init(r19838);
        mpfr_init(r19839);
        mpfr_init(r19840);
        mpfr_init_set_str(r19841, "8.22387869142787e-144", 10, MPFR_RNDN);
        mpfr_init(r19842);
        mpfr_init_set_str(r19843, "1", 10, MPFR_RNDN);
        mpfr_init(r19844);
        mpfr_init(r19845);
        mpfr_init(r19846);
        mpfr_init(r19847);
        mpfr_init(r19848);
        mpfr_init(r19849);
        mpfr_init(r19850);
        mpfr_init(r19851);
        mpfr_init(r19852);
        mpfr_init_set_str(r19853, "1.6595239669198776e+39", 10, MPFR_RNDN);
        mpfr_init(r19854);
        mpfr_init(r19855);
        mpfr_init(r19856);
        mpfr_init(r19857);
        mpfr_init(r19858);
        mpfr_init(r19859);
        mpfr_init_set_str(r19860, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19861);
        mpfr_init(r19862);
        mpfr_init(r19863);
        mpfr_init(r19864);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r19834, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19836, mpfr_cmp(r19834, r19835) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19838, a, MPFR_RNDN);
        mpfr_div(r19839, r19834, r19838, MPFR_RNDN);
        mpfr_mul(r19840, r19837, r19839, MPFR_RNDN);
        ;
        mpfr_set_si(r19842, mpfr_cmp(r19834, r19841) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r19844, r19834, MPFR_RNDN);
        mpfr_mul(r19845, r19834, r19834, MPFR_RNDN);
        mpfr_set_d(r19846, c, MPFR_RNDN);
        mpfr_mul(r19847, r19838, r19846, MPFR_RNDN);
        mpfr_sub(r19848, r19845, r19847, MPFR_RNDN);
        mpfr_sqrt(r19849, r19848, MPFR_RNDN);
        mpfr_add(r19850, r19844, r19849, MPFR_RNDN);
        mpfr_div(r19851, r19838, r19850, MPFR_RNDN);
        mpfr_div(r19852, r19843, r19851, MPFR_RNDN);
        ;
        mpfr_set_si(r19854, mpfr_cmp(r19834, r19853) <= 0, MPFR_RNDN);
        mpfr_mul(r19855, r19846, r19838, MPFR_RNDN);
        mpfr_sub(r19856, r19844, r19849, MPFR_RNDN);
        mpfr_div(r19857, r19855, r19856, MPFR_RNDN);
        mpfr_div(r19858, r19857, r19838, MPFR_RNDN);
        mpfr_div(r19859, r19846, r19834, MPFR_RNDN);
        ;
        mpfr_mul(r19861, r19859, r19860, MPFR_RNDN);
        if (mpfr_get_si(r19854, MPFR_RNDN)) { mpfr_set(r19862, r19858, MPFR_RNDN); } else { mpfr_set(r19862, r19861, MPFR_RNDN); };
        if (mpfr_get_si(r19842, MPFR_RNDN)) { mpfr_set(r19863, r19852, MPFR_RNDN); } else { mpfr_set(r19863, r19862, MPFR_RNDN); };
        if (mpfr_get_si(r19836, MPFR_RNDN)) { mpfr_set(r19864, r19840, MPFR_RNDN); } else { mpfr_set(r19864, r19863, MPFR_RNDN); };
        return mpfr_get_d(r19864, MPFR_RNDN);
}

static mpfr_t r19865, r19866, r19867, r19868, r19869, r19870, r19871, r19872, r19873, r19874, r19875, r19876, r19877, r19878, r19879, r19880, r19881, r19882, r19883, r19884, r19885, r19886, r19887, r19888, r19889, r19890, r19891, r19892, r19893, r19894, r19895;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19865);
        mpfr_init_set_str(r19866, "-3.4960188181991964e+137", 10, MPFR_RNDN);
        mpfr_init(r19867);
        mpfr_init_set_str(r19868, "-2", 10, MPFR_RNDN);
        mpfr_init(r19869);
        mpfr_init(r19870);
        mpfr_init(r19871);
        mpfr_init_set_str(r19872, "8.22387869142787e-144", 10, MPFR_RNDN);
        mpfr_init(r19873);
        mpfr_init_set_str(r19874, "1", 10, MPFR_RNDN);
        mpfr_init(r19875);
        mpfr_init(r19876);
        mpfr_init(r19877);
        mpfr_init(r19878);
        mpfr_init(r19879);
        mpfr_init(r19880);
        mpfr_init(r19881);
        mpfr_init(r19882);
        mpfr_init(r19883);
        mpfr_init_set_str(r19884, "1.6595239669198776e+39", 10, MPFR_RNDN);
        mpfr_init(r19885);
        mpfr_init(r19886);
        mpfr_init(r19887);
        mpfr_init(r19888);
        mpfr_init(r19889);
        mpfr_init(r19890);
        mpfr_init_set_str(r19891, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19892);
        mpfr_init(r19893);
        mpfr_init(r19894);
        mpfr_init(r19895);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r19865, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19867, mpfr_cmp(r19865, r19866) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19869, a, MPFR_RNDN);
        mpfr_div(r19870, r19865, r19869, MPFR_RNDN);
        mpfr_mul(r19871, r19868, r19870, MPFR_RNDN);
        ;
        mpfr_set_si(r19873, mpfr_cmp(r19865, r19872) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r19875, r19865, MPFR_RNDN);
        mpfr_mul(r19876, r19865, r19865, MPFR_RNDN);
        mpfr_set_d(r19877, c, MPFR_RNDN);
        mpfr_mul(r19878, r19869, r19877, MPFR_RNDN);
        mpfr_sub(r19879, r19876, r19878, MPFR_RNDN);
        mpfr_sqrt(r19880, r19879, MPFR_RNDN);
        mpfr_add(r19881, r19875, r19880, MPFR_RNDN);
        mpfr_div(r19882, r19869, r19881, MPFR_RNDN);
        mpfr_div(r19883, r19874, r19882, MPFR_RNDN);
        ;
        mpfr_set_si(r19885, mpfr_cmp(r19865, r19884) <= 0, MPFR_RNDN);
        mpfr_mul(r19886, r19877, r19869, MPFR_RNDN);
        mpfr_sub(r19887, r19875, r19880, MPFR_RNDN);
        mpfr_div(r19888, r19886, r19887, MPFR_RNDN);
        mpfr_div(r19889, r19888, r19869, MPFR_RNDN);
        mpfr_div(r19890, r19877, r19865, MPFR_RNDN);
        ;
        mpfr_mul(r19892, r19890, r19891, MPFR_RNDN);
        if (mpfr_get_si(r19885, MPFR_RNDN)) { mpfr_set(r19893, r19889, MPFR_RNDN); } else { mpfr_set(r19893, r19892, MPFR_RNDN); };
        if (mpfr_get_si(r19873, MPFR_RNDN)) { mpfr_set(r19894, r19883, MPFR_RNDN); } else { mpfr_set(r19894, r19893, MPFR_RNDN); };
        if (mpfr_get_si(r19867, MPFR_RNDN)) { mpfr_set(r19895, r19871, MPFR_RNDN); } else { mpfr_set(r19895, r19894, MPFR_RNDN); };
        return mpfr_get_d(r19895, MPFR_RNDN);
}

