#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 r19734 = b_2F2;
        float r19735 = -r19734;
        float r19736 = r19734 * r19734;
        float r19737 = a;
        float r19738 = c;
        float r19739 = r19737 * r19738;
        float r19740 = r19736 - r19739;
        float r19741 = sqrt(r19740);
        float r19742 = r19735 + r19741;
        float r19743 = r19742 / r19737;
        return r19743;
}

double f_id(double a, double b_2F2, double c) {
        double r19744 = b_2F2;
        double r19745 = -r19744;
        double r19746 = r19744 * r19744;
        double r19747 = a;
        double r19748 = c;
        double r19749 = r19747 * r19748;
        double r19750 = r19746 - r19749;
        double r19751 = sqrt(r19750);
        double r19752 = r19745 + r19751;
        double r19753 = r19752 / r19747;
        return r19753;
}


double f_of(float a, float b_2F2, float c) {
        float r19754 = b_2F2;
        float r19755 = -1.0015408820196246e+67;
        bool r19756 = r19754 <= r19755;
        float r19757 = 1/2;
        float r19758 = c;
        float r19759 = r19758 / r19754;
        float r19760 = r19757 * r19759;
        float r19761 = 2;
        float r19762 = a;
        float r19763 = r19754 / r19762;
        float r19764 = r19761 * r19763;
        float r19765 = r19760 - r19764;
        float r19766 = 5.905604736002757e-181;
        bool r19767 = r19754 <= r19766;
        float r19768 = -r19754;
        float r19769 = r19754 * r19754;
        float r19770 = r19762 * r19758;
        float r19771 = r19769 - r19770;
        float r19772 = sqrt(r19771);
        float r19773 = r19768 + r19772;
        float r19774 = 1;
        float r19775 = r19774 / r19762;
        float r19776 = r19773 * r19775;
        float r19777 = 5.667357913699899e+71;
        bool r19778 = r19754 <= r19777;
        float r19779 = r19758 * r19762;
        float r19780 = r19768 - r19772;
        float r19781 = r19779 / r19780;
        float r19782 = r19781 / r19762;
        float r19783 = r19768 - r19754;
        float r19784 = r19762 / r19754;
        float r19785 = r19757 * r19758;
        float r19786 = r19784 * r19785;
        float r19787 = r19783 + r19786;
        float r19788 = r19758 / r19787;
        float r19789 = r19778 ? r19782 : r19788;
        float r19790 = r19767 ? r19776 : r19789;
        float r19791 = r19756 ? r19765 : r19790;
        return r19791;
}

double f_od(double a, double b_2F2, double c) {
        double r19792 = b_2F2;
        double r19793 = -1.0015408820196246e+67;
        bool r19794 = r19792 <= r19793;
        double r19795 = 1/2;
        double r19796 = c;
        double r19797 = r19796 / r19792;
        double r19798 = r19795 * r19797;
        double r19799 = 2;
        double r19800 = a;
        double r19801 = r19792 / r19800;
        double r19802 = r19799 * r19801;
        double r19803 = r19798 - r19802;
        double r19804 = 5.905604736002757e-181;
        bool r19805 = r19792 <= r19804;
        double r19806 = -r19792;
        double r19807 = r19792 * r19792;
        double r19808 = r19800 * r19796;
        double r19809 = r19807 - r19808;
        double r19810 = sqrt(r19809);
        double r19811 = r19806 + r19810;
        double r19812 = 1;
        double r19813 = r19812 / r19800;
        double r19814 = r19811 * r19813;
        double r19815 = 5.667357913699899e+71;
        bool r19816 = r19792 <= r19815;
        double r19817 = r19796 * r19800;
        double r19818 = r19806 - r19810;
        double r19819 = r19817 / r19818;
        double r19820 = r19819 / r19800;
        double r19821 = r19806 - r19792;
        double r19822 = r19800 / r19792;
        double r19823 = r19795 * r19796;
        double r19824 = r19822 * r19823;
        double r19825 = r19821 + r19824;
        double r19826 = r19796 / r19825;
        double r19827 = r19816 ? r19820 : r19826;
        double r19828 = r19805 ? r19814 : r19827;
        double r19829 = r19794 ? r19803 : r19828;
        return r19829;
}

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

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

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

static mpfr_t 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, r19865, r19866, r19867, r19868, r19869, r19870, r19871, r19872, r19873, r19874, r19875, r19876, r19877;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19840);
        mpfr_init_set_str(r19841, "-1.0015408820196246e+67", 10, MPFR_RNDN);
        mpfr_init(r19842);
        mpfr_init_set_str(r19843, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19844);
        mpfr_init(r19845);
        mpfr_init(r19846);
        mpfr_init_set_str(r19847, "2", 10, MPFR_RNDN);
        mpfr_init(r19848);
        mpfr_init(r19849);
        mpfr_init(r19850);
        mpfr_init(r19851);
        mpfr_init_set_str(r19852, "5.905604736002757e-181", 10, MPFR_RNDN);
        mpfr_init(r19853);
        mpfr_init(r19854);
        mpfr_init(r19855);
        mpfr_init(r19856);
        mpfr_init(r19857);
        mpfr_init(r19858);
        mpfr_init(r19859);
        mpfr_init_set_str(r19860, "1", 10, MPFR_RNDN);
        mpfr_init(r19861);
        mpfr_init(r19862);
        mpfr_init_set_str(r19863, "5.667357913699899e+71", 10, MPFR_RNDN);
        mpfr_init(r19864);
        mpfr_init(r19865);
        mpfr_init(r19866);
        mpfr_init(r19867);
        mpfr_init(r19868);
        mpfr_init(r19869);
        mpfr_init(r19870);
        mpfr_init(r19871);
        mpfr_init(r19872);
        mpfr_init(r19873);
        mpfr_init(r19874);
        mpfr_init(r19875);
        mpfr_init(r19876);
        mpfr_init(r19877);
}

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

static mpfr_t r19878, r19879, r19880, r19881, r19882, r19883, r19884, r19885, r19886, r19887, r19888, r19889, r19890, r19891, r19892, r19893, r19894, r19895, r19896, r19897, r19898, r19899, r19900, r19901, r19902, r19903, r19904, r19905, r19906, r19907, r19908, r19909, r19910, r19911, r19912, r19913, r19914, r19915;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19878);
        mpfr_init_set_str(r19879, "-1.0015408820196246e+67", 10, MPFR_RNDN);
        mpfr_init(r19880);
        mpfr_init_set_str(r19881, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19882);
        mpfr_init(r19883);
        mpfr_init(r19884);
        mpfr_init_set_str(r19885, "2", 10, MPFR_RNDN);
        mpfr_init(r19886);
        mpfr_init(r19887);
        mpfr_init(r19888);
        mpfr_init(r19889);
        mpfr_init_set_str(r19890, "5.905604736002757e-181", 10, MPFR_RNDN);
        mpfr_init(r19891);
        mpfr_init(r19892);
        mpfr_init(r19893);
        mpfr_init(r19894);
        mpfr_init(r19895);
        mpfr_init(r19896);
        mpfr_init(r19897);
        mpfr_init_set_str(r19898, "1", 10, MPFR_RNDN);
        mpfr_init(r19899);
        mpfr_init(r19900);
        mpfr_init_set_str(r19901, "5.667357913699899e+71", 10, MPFR_RNDN);
        mpfr_init(r19902);
        mpfr_init(r19903);
        mpfr_init(r19904);
        mpfr_init(r19905);
        mpfr_init(r19906);
        mpfr_init(r19907);
        mpfr_init(r19908);
        mpfr_init(r19909);
        mpfr_init(r19910);
        mpfr_init(r19911);
        mpfr_init(r19912);
        mpfr_init(r19913);
        mpfr_init(r19914);
        mpfr_init(r19915);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r19878, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19880, mpfr_cmp(r19878, r19879) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19882, c, MPFR_RNDN);
        mpfr_div(r19883, r19882, r19878, MPFR_RNDN);
        mpfr_mul(r19884, r19881, r19883, MPFR_RNDN);
        ;
        mpfr_set_d(r19886, a, MPFR_RNDN);
        mpfr_div(r19887, r19878, r19886, MPFR_RNDN);
        mpfr_mul(r19888, r19885, r19887, MPFR_RNDN);
        mpfr_sub(r19889, r19884, r19888, MPFR_RNDN);
        ;
        mpfr_set_si(r19891, mpfr_cmp(r19878, r19890) <= 0, MPFR_RNDN);
        mpfr_neg(r19892, r19878, MPFR_RNDN);
        mpfr_mul(r19893, r19878, r19878, MPFR_RNDN);
        mpfr_mul(r19894, r19886, r19882, MPFR_RNDN);
        mpfr_sub(r19895, r19893, r19894, MPFR_RNDN);
        mpfr_sqrt(r19896, r19895, MPFR_RNDN);
        mpfr_add(r19897, r19892, r19896, MPFR_RNDN);
        ;
        mpfr_div(r19899, r19898, r19886, MPFR_RNDN);
        mpfr_mul(r19900, r19897, r19899, MPFR_RNDN);
        ;
        mpfr_set_si(r19902, mpfr_cmp(r19878, r19901) <= 0, MPFR_RNDN);
        mpfr_mul(r19903, r19882, r19886, MPFR_RNDN);
        mpfr_sub(r19904, r19892, r19896, MPFR_RNDN);
        mpfr_div(r19905, r19903, r19904, MPFR_RNDN);
        mpfr_div(r19906, r19905, r19886, MPFR_RNDN);
        mpfr_sub(r19907, r19892, r19878, MPFR_RNDN);
        mpfr_div(r19908, r19886, r19878, MPFR_RNDN);
        mpfr_mul(r19909, r19881, r19882, MPFR_RNDN);
        mpfr_mul(r19910, r19908, r19909, MPFR_RNDN);
        mpfr_add(r19911, r19907, r19910, MPFR_RNDN);
        mpfr_div(r19912, r19882, r19911, MPFR_RNDN);
        if (mpfr_get_si(r19902, MPFR_RNDN)) { mpfr_set(r19913, r19906, MPFR_RNDN); } else { mpfr_set(r19913, r19912, MPFR_RNDN); };
        if (mpfr_get_si(r19891, MPFR_RNDN)) { mpfr_set(r19914, r19900, MPFR_RNDN); } else { mpfr_set(r19914, r19913, MPFR_RNDN); };
        if (mpfr_get_si(r19880, MPFR_RNDN)) { mpfr_set(r19915, r19889, MPFR_RNDN); } else { mpfr_set(r19915, r19914, MPFR_RNDN); };
        return mpfr_get_d(r19915, MPFR_RNDN);
}

