#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 r19754 = b_2F2;
        float r19755 = -r19754;
        float r19756 = r19754 * r19754;
        float r19757 = a;
        float r19758 = c;
        float r19759 = r19757 * r19758;
        float r19760 = r19756 - r19759;
        float r19761 = sqrt(r19760);
        float r19762 = r19755 + r19761;
        float r19763 = r19762 / r19757;
        return r19763;
}

double f_id(double a, double b_2F2, double c) {
        double r19764 = b_2F2;
        double r19765 = -r19764;
        double r19766 = r19764 * r19764;
        double r19767 = a;
        double r19768 = c;
        double r19769 = r19767 * r19768;
        double r19770 = r19766 - r19769;
        double r19771 = sqrt(r19770);
        double r19772 = r19765 + r19771;
        double r19773 = r19772 / r19767;
        return r19773;
}


double f_of(float a, float b_2F2, float c) {
        float r19774 = b_2F2;
        float r19775 = -1.4693721793722456e+115;
        bool r19776 = r19774 <= r19775;
        float r19777 = -2;
        float r19778 = a;
        float r19779 = r19774 / r19778;
        float r19780 = r19777 * r19779;
        float r19781 = 5.471597732237248e-245;
        bool r19782 = r19774 <= r19781;
        float r19783 = 1;
        float r19784 = -r19774;
        float r19785 = r19774 * r19774;
        float r19786 = c;
        float r19787 = r19778 * r19786;
        float r19788 = r19785 - r19787;
        float r19789 = sqrt(r19788);
        float r19790 = r19784 + r19789;
        float r19791 = r19778 / r19790;
        float r19792 = r19783 / r19791;
        float r19793 = 2.0777803968180052e+112;
        bool r19794 = r19774 <= r19793;
        float r19795 = r19784 - r19789;
        float r19796 = r19786 / r19795;
        float r19797 = r19786 / r19774;
        float r19798 = -1/2;
        float r19799 = r19797 * r19798;
        float r19800 = r19794 ? r19796 : r19799;
        float r19801 = r19782 ? r19792 : r19800;
        float r19802 = r19776 ? r19780 : r19801;
        return r19802;
}

double f_od(double a, double b_2F2, double c) {
        double r19803 = b_2F2;
        double r19804 = -1.4693721793722456e+115;
        bool r19805 = r19803 <= r19804;
        double r19806 = -2;
        double r19807 = a;
        double r19808 = r19803 / r19807;
        double r19809 = r19806 * r19808;
        double r19810 = 5.471597732237248e-245;
        bool r19811 = r19803 <= r19810;
        double r19812 = 1;
        double r19813 = -r19803;
        double r19814 = r19803 * r19803;
        double r19815 = c;
        double r19816 = r19807 * r19815;
        double r19817 = r19814 - r19816;
        double r19818 = sqrt(r19817);
        double r19819 = r19813 + r19818;
        double r19820 = r19807 / r19819;
        double r19821 = r19812 / r19820;
        double r19822 = 2.0777803968180052e+112;
        bool r19823 = r19803 <= r19822;
        double r19824 = r19813 - r19818;
        double r19825 = r19815 / r19824;
        double r19826 = r19815 / r19803;
        double r19827 = -1/2;
        double r19828 = r19826 * r19827;
        double r19829 = r19823 ? r19825 : r19828;
        double r19830 = r19811 ? r19821 : r19829;
        double r19831 = r19805 ? r19809 : r19830;
        return r19831;
}

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 r19832, r19833, r19834, r19835, r19836, r19837, r19838, r19839, r19840, r19841;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19832);
        mpfr_init(r19833);
        mpfr_init(r19834);
        mpfr_init(r19835);
        mpfr_init(r19836);
        mpfr_init(r19837);
        mpfr_init(r19838);
        mpfr_init(r19839);
        mpfr_init(r19840);
        mpfr_init(r19841);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r19832, b_2F2, MPFR_RNDN);
        mpfr_neg(r19833, r19832, MPFR_RNDN);
        mpfr_mul(r19834, r19832, r19832, MPFR_RNDN);
        mpfr_set_d(r19835, a, MPFR_RNDN);
        mpfr_set_d(r19836, c, MPFR_RNDN);
        mpfr_mul(r19837, r19835, r19836, MPFR_RNDN);
        mpfr_sub(r19838, r19834, r19837, MPFR_RNDN);
        mpfr_sqrt(r19839, r19838, MPFR_RNDN);
        mpfr_add(r19840, r19833, r19839, MPFR_RNDN);
        mpfr_div(r19841, r19840, r19835, MPFR_RNDN);
        return mpfr_get_d(r19841, MPFR_RNDN);
}

static mpfr_t r19842, r19843, r19844, r19845, r19846, r19847, r19848, r19849, r19850, r19851, r19852, r19853, r19854, r19855, r19856, r19857, r19858, r19859, r19860, r19861, r19862, r19863, r19864, r19865, r19866, r19867, r19868, r19869, r19870;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19842);
        mpfr_init_set_str(r19843, "-1.4693721793722456e+115", 10, MPFR_RNDN);
        mpfr_init(r19844);
        mpfr_init_set_str(r19845, "-2", 10, MPFR_RNDN);
        mpfr_init(r19846);
        mpfr_init(r19847);
        mpfr_init(r19848);
        mpfr_init_set_str(r19849, "5.471597732237248e-245", 10, MPFR_RNDN);
        mpfr_init(r19850);
        mpfr_init_set_str(r19851, "1", 10, MPFR_RNDN);
        mpfr_init(r19852);
        mpfr_init(r19853);
        mpfr_init(r19854);
        mpfr_init(r19855);
        mpfr_init(r19856);
        mpfr_init(r19857);
        mpfr_init(r19858);
        mpfr_init(r19859);
        mpfr_init(r19860);
        mpfr_init_set_str(r19861, "2.0777803968180052e+112", 10, MPFR_RNDN);
        mpfr_init(r19862);
        mpfr_init(r19863);
        mpfr_init(r19864);
        mpfr_init(r19865);
        mpfr_init_set_str(r19866, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19867);
        mpfr_init(r19868);
        mpfr_init(r19869);
        mpfr_init(r19870);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r19842, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19844, mpfr_cmp(r19842, r19843) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19846, a, MPFR_RNDN);
        mpfr_div(r19847, r19842, r19846, MPFR_RNDN);
        mpfr_mul(r19848, r19845, r19847, MPFR_RNDN);
        ;
        mpfr_set_si(r19850, mpfr_cmp(r19842, r19849) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r19852, r19842, MPFR_RNDN);
        mpfr_mul(r19853, r19842, r19842, MPFR_RNDN);
        mpfr_set_d(r19854, c, MPFR_RNDN);
        mpfr_mul(r19855, r19846, r19854, MPFR_RNDN);
        mpfr_sub(r19856, r19853, r19855, MPFR_RNDN);
        mpfr_sqrt(r19857, r19856, MPFR_RNDN);
        mpfr_add(r19858, r19852, r19857, MPFR_RNDN);
        mpfr_div(r19859, r19846, r19858, MPFR_RNDN);
        mpfr_div(r19860, r19851, r19859, MPFR_RNDN);
        ;
        mpfr_set_si(r19862, mpfr_cmp(r19842, r19861) <= 0, MPFR_RNDN);
        mpfr_sub(r19863, r19852, r19857, MPFR_RNDN);
        mpfr_div(r19864, r19854, r19863, MPFR_RNDN);
        mpfr_div(r19865, r19854, r19842, MPFR_RNDN);
        ;
        mpfr_mul(r19867, r19865, r19866, MPFR_RNDN);
        if (mpfr_get_si(r19862, MPFR_RNDN)) { mpfr_set(r19868, r19864, MPFR_RNDN); } else { mpfr_set(r19868, r19867, MPFR_RNDN); };
        if (mpfr_get_si(r19850, MPFR_RNDN)) { mpfr_set(r19869, r19860, MPFR_RNDN); } else { mpfr_set(r19869, r19868, MPFR_RNDN); };
        if (mpfr_get_si(r19844, MPFR_RNDN)) { mpfr_set(r19870, r19848, MPFR_RNDN); } else { mpfr_set(r19870, r19869, MPFR_RNDN); };
        return mpfr_get_d(r19870, MPFR_RNDN);
}

static mpfr_t 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, r19896, r19897, r19898, r19899;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19871);
        mpfr_init_set_str(r19872, "-1.4693721793722456e+115", 10, MPFR_RNDN);
        mpfr_init(r19873);
        mpfr_init_set_str(r19874, "-2", 10, MPFR_RNDN);
        mpfr_init(r19875);
        mpfr_init(r19876);
        mpfr_init(r19877);
        mpfr_init_set_str(r19878, "5.471597732237248e-245", 10, MPFR_RNDN);
        mpfr_init(r19879);
        mpfr_init_set_str(r19880, "1", 10, MPFR_RNDN);
        mpfr_init(r19881);
        mpfr_init(r19882);
        mpfr_init(r19883);
        mpfr_init(r19884);
        mpfr_init(r19885);
        mpfr_init(r19886);
        mpfr_init(r19887);
        mpfr_init(r19888);
        mpfr_init(r19889);
        mpfr_init_set_str(r19890, "2.0777803968180052e+112", 10, MPFR_RNDN);
        mpfr_init(r19891);
        mpfr_init(r19892);
        mpfr_init(r19893);
        mpfr_init(r19894);
        mpfr_init_set_str(r19895, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19896);
        mpfr_init(r19897);
        mpfr_init(r19898);
        mpfr_init(r19899);
}

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

