#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 r19695 = b_2F2;
        float r19696 = -r19695;
        float r19697 = r19695 * r19695;
        float r19698 = a;
        float r19699 = c;
        float r19700 = r19698 * r19699;
        float r19701 = r19697 - r19700;
        float r19702 = sqrt(r19701);
        float r19703 = r19696 + r19702;
        float r19704 = r19703 / r19698;
        return r19704;
}

double f_id(double a, double b_2F2, double c) {
        double r19705 = b_2F2;
        double r19706 = -r19705;
        double r19707 = r19705 * r19705;
        double r19708 = a;
        double r19709 = c;
        double r19710 = r19708 * r19709;
        double r19711 = r19707 - r19710;
        double r19712 = sqrt(r19711);
        double r19713 = r19706 + r19712;
        double r19714 = r19713 / r19708;
        return r19714;
}


double f_of(float a, float b_2F2, float c) {
        float r19715 = b_2F2;
        float r19716 = -1.324034465589458e+149;
        bool r19717 = r19715 <= r19716;
        float r19718 = -2;
        float r19719 = a;
        float r19720 = r19715 / r19719;
        float r19721 = r19718 * r19720;
        float r19722 = 4.9585500140491613e-225;
        bool r19723 = r19715 <= r19722;
        float r19724 = -r19715;
        float r19725 = r19715 * r19715;
        float r19726 = c;
        float r19727 = r19719 * r19726;
        float r19728 = r19725 - r19727;
        float r19729 = sqrt(r19728);
        float r19730 = r19724 + r19729;
        float r19731 = 1;
        float r19732 = r19731 / r19719;
        float r19733 = r19730 * r19732;
        float r19734 = 1.1498155483847317e+81;
        bool r19735 = r19715 <= r19734;
        float r19736 = r19726 * r19719;
        float r19737 = r19724 - r19729;
        float r19738 = r19736 / r19737;
        float r19739 = r19738 * r19732;
        float r19740 = r19724 + r19715;
        float r19741 = r19740 / r19719;
        float r19742 = 1/2;
        float r19743 = r19715 / r19726;
        float r19744 = r19742 / r19743;
        float r19745 = r19741 - r19744;
        float r19746 = r19735 ? r19739 : r19745;
        float r19747 = r19723 ? r19733 : r19746;
        float r19748 = r19717 ? r19721 : r19747;
        return r19748;
}

double f_od(double a, double b_2F2, double c) {
        double r19749 = b_2F2;
        double r19750 = -1.324034465589458e+149;
        bool r19751 = r19749 <= r19750;
        double r19752 = -2;
        double r19753 = a;
        double r19754 = r19749 / r19753;
        double r19755 = r19752 * r19754;
        double r19756 = 4.9585500140491613e-225;
        bool r19757 = r19749 <= r19756;
        double r19758 = -r19749;
        double r19759 = r19749 * r19749;
        double r19760 = c;
        double r19761 = r19753 * r19760;
        double r19762 = r19759 - r19761;
        double r19763 = sqrt(r19762);
        double r19764 = r19758 + r19763;
        double r19765 = 1;
        double r19766 = r19765 / r19753;
        double r19767 = r19764 * r19766;
        double r19768 = 1.1498155483847317e+81;
        bool r19769 = r19749 <= r19768;
        double r19770 = r19760 * r19753;
        double r19771 = r19758 - r19763;
        double r19772 = r19770 / r19771;
        double r19773 = r19772 * r19766;
        double r19774 = r19758 + r19749;
        double r19775 = r19774 / r19753;
        double r19776 = 1/2;
        double r19777 = r19749 / r19760;
        double r19778 = r19776 / r19777;
        double r19779 = r19775 - r19778;
        double r19780 = r19769 ? r19773 : r19779;
        double r19781 = r19757 ? r19767 : r19780;
        double r19782 = r19751 ? r19755 : r19781;
        return r19782;
}

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

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

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

static mpfr_t r19793, r19794, 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, r19826;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19793);
        mpfr_init_set_str(r19794, "-1.324034465589458e+149", 10, MPFR_RNDN);
        mpfr_init(r19795);
        mpfr_init_set_str(r19796, "-2", 10, MPFR_RNDN);
        mpfr_init(r19797);
        mpfr_init(r19798);
        mpfr_init(r19799);
        mpfr_init_set_str(r19800, "4.9585500140491613e-225", 10, MPFR_RNDN);
        mpfr_init(r19801);
        mpfr_init(r19802);
        mpfr_init(r19803);
        mpfr_init(r19804);
        mpfr_init(r19805);
        mpfr_init(r19806);
        mpfr_init(r19807);
        mpfr_init(r19808);
        mpfr_init_set_str(r19809, "1", 10, MPFR_RNDN);
        mpfr_init(r19810);
        mpfr_init(r19811);
        mpfr_init_set_str(r19812, "1.1498155483847317e+81", 10, MPFR_RNDN);
        mpfr_init(r19813);
        mpfr_init(r19814);
        mpfr_init(r19815);
        mpfr_init(r19816);
        mpfr_init(r19817);
        mpfr_init(r19818);
        mpfr_init(r19819);
        mpfr_init_set_str(r19820, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19821);
        mpfr_init(r19822);
        mpfr_init(r19823);
        mpfr_init(r19824);
        mpfr_init(r19825);
        mpfr_init(r19826);
}

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

static mpfr_t 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, r19857, r19858, r19859, r19860;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19827);
        mpfr_init_set_str(r19828, "-1.324034465589458e+149", 10, MPFR_RNDN);
        mpfr_init(r19829);
        mpfr_init_set_str(r19830, "-2", 10, MPFR_RNDN);
        mpfr_init(r19831);
        mpfr_init(r19832);
        mpfr_init(r19833);
        mpfr_init_set_str(r19834, "4.9585500140491613e-225", 10, MPFR_RNDN);
        mpfr_init(r19835);
        mpfr_init(r19836);
        mpfr_init(r19837);
        mpfr_init(r19838);
        mpfr_init(r19839);
        mpfr_init(r19840);
        mpfr_init(r19841);
        mpfr_init(r19842);
        mpfr_init_set_str(r19843, "1", 10, MPFR_RNDN);
        mpfr_init(r19844);
        mpfr_init(r19845);
        mpfr_init_set_str(r19846, "1.1498155483847317e+81", 10, MPFR_RNDN);
        mpfr_init(r19847);
        mpfr_init(r19848);
        mpfr_init(r19849);
        mpfr_init(r19850);
        mpfr_init(r19851);
        mpfr_init(r19852);
        mpfr_init(r19853);
        mpfr_init_set_str(r19854, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19855);
        mpfr_init(r19856);
        mpfr_init(r19857);
        mpfr_init(r19858);
        mpfr_init(r19859);
        mpfr_init(r19860);
}

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

