#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 = -7.833327672762858e+152;
        bool r19725 = r19723 <= r19724;
        float r19726 = -2;
        float r19727 = a;
        float r19728 = r19723 / r19727;
        float r19729 = r19726 * r19728;
        float r19730 = 7.698366662298276e-138;
        bool r19731 = r19723 <= r19730;
        float r19732 = -r19723;
        float r19733 = r19723 * r19723;
        float r19734 = c;
        float r19735 = r19727 * r19734;
        float r19736 = r19733 - r19735;
        float r19737 = sqrt(r19736);
        float r19738 = r19732 + r19737;
        float r19739 = 1;
        float r19740 = r19739 / r19727;
        float r19741 = r19738 * r19740;
        float r19742 = r19734 / r19723;
        float r19743 = -1/2;
        float r19744 = r19742 * r19743;
        float r19745 = r19731 ? r19741 : r19744;
        float r19746 = r19725 ? r19729 : r19745;
        return r19746;
}

double f_od(double a, double b_2F2, double c) {
        double r19747 = b_2F2;
        double r19748 = -7.833327672762858e+152;
        bool r19749 = r19747 <= r19748;
        double r19750 = -2;
        double r19751 = a;
        double r19752 = r19747 / r19751;
        double r19753 = r19750 * r19752;
        double r19754 = 7.698366662298276e-138;
        bool r19755 = r19747 <= r19754;
        double r19756 = -r19747;
        double r19757 = r19747 * r19747;
        double r19758 = c;
        double r19759 = r19751 * r19758;
        double r19760 = r19757 - r19759;
        double r19761 = sqrt(r19760);
        double r19762 = r19756 + r19761;
        double r19763 = 1;
        double r19764 = r19763 / r19751;
        double r19765 = r19762 * r19764;
        double r19766 = r19758 / r19747;
        double r19767 = -1/2;
        double r19768 = r19766 * r19767;
        double r19769 = r19755 ? r19765 : r19768;
        double r19770 = r19749 ? r19753 : r19769;
        return r19770;
}

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 r19771, r19772, r19773, r19774, r19775, r19776, r19777, r19778, r19779, r19780;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r19771);
        mpfr_init(r19772);
        mpfr_init(r19773);
        mpfr_init(r19774);
        mpfr_init(r19775);
        mpfr_init(r19776);
        mpfr_init(r19777);
        mpfr_init(r19778);
        mpfr_init(r19779);
        mpfr_init(r19780);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r19771, b_2F2, MPFR_RNDN);
        mpfr_neg(r19772, r19771, MPFR_RNDN);
        mpfr_mul(r19773, r19771, r19771, MPFR_RNDN);
        mpfr_set_d(r19774, a, MPFR_RNDN);
        mpfr_set_d(r19775, c, MPFR_RNDN);
        mpfr_mul(r19776, r19774, r19775, MPFR_RNDN);
        mpfr_sub(r19777, r19773, r19776, MPFR_RNDN);
        mpfr_sqrt(r19778, r19777, MPFR_RNDN);
        mpfr_add(r19779, r19772, r19778, MPFR_RNDN);
        mpfr_div(r19780, r19779, r19774, MPFR_RNDN);
        return mpfr_get_d(r19780, MPFR_RNDN);
}

static mpfr_t r19781, r19782, r19783, r19784, r19785, r19786, r19787, r19788, r19789, r19790, r19791, r19792, r19793, r19794, r19795, r19796, r19797, r19798, r19799, r19800, r19801, r19802, r19803, r19804;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r19781);
        mpfr_init_set_str(r19782, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r19783);
        mpfr_init_set_str(r19784, "-2", 10, MPFR_RNDN);
        mpfr_init(r19785);
        mpfr_init(r19786);
        mpfr_init(r19787);
        mpfr_init_set_str(r19788, "7.698366662298276e-138", 10, MPFR_RNDN);
        mpfr_init(r19789);
        mpfr_init(r19790);
        mpfr_init(r19791);
        mpfr_init(r19792);
        mpfr_init(r19793);
        mpfr_init(r19794);
        mpfr_init(r19795);
        mpfr_init(r19796);
        mpfr_init_set_str(r19797, "1", 10, MPFR_RNDN);
        mpfr_init(r19798);
        mpfr_init(r19799);
        mpfr_init(r19800);
        mpfr_init_set_str(r19801, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19802);
        mpfr_init(r19803);
        mpfr_init(r19804);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r19781, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19783, mpfr_cmp(r19781, r19782) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19785, a, MPFR_RNDN);
        mpfr_div(r19786, r19781, r19785, MPFR_RNDN);
        mpfr_mul(r19787, r19784, r19786, MPFR_RNDN);
        ;
        mpfr_set_si(r19789, mpfr_cmp(r19781, r19788) <= 0, MPFR_RNDN);
        mpfr_neg(r19790, r19781, MPFR_RNDN);
        mpfr_mul(r19791, r19781, r19781, MPFR_RNDN);
        mpfr_set_d(r19792, c, MPFR_RNDN);
        mpfr_mul(r19793, r19785, r19792, MPFR_RNDN);
        mpfr_sub(r19794, r19791, r19793, MPFR_RNDN);
        mpfr_sqrt(r19795, r19794, MPFR_RNDN);
        mpfr_add(r19796, r19790, r19795, MPFR_RNDN);
        ;
        mpfr_div(r19798, r19797, r19785, MPFR_RNDN);
        mpfr_mul(r19799, r19796, r19798, MPFR_RNDN);
        mpfr_div(r19800, r19792, r19781, MPFR_RNDN);
        ;
        mpfr_mul(r19802, r19800, r19801, MPFR_RNDN);
        if (mpfr_get_si(r19789, MPFR_RNDN)) { mpfr_set(r19803, r19799, MPFR_RNDN); } else { mpfr_set(r19803, r19802, MPFR_RNDN); };
        if (mpfr_get_si(r19783, MPFR_RNDN)) { mpfr_set(r19804, r19787, MPFR_RNDN); } else { mpfr_set(r19804, r19803, MPFR_RNDN); };
        return mpfr_get_d(r19804, MPFR_RNDN);
}

static mpfr_t r19805, r19806, r19807, r19808, r19809, r19810, r19811, r19812, r19813, r19814, r19815, r19816, r19817, r19818, r19819, r19820, r19821, r19822, r19823, r19824, r19825, r19826, r19827, r19828;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r19805);
        mpfr_init_set_str(r19806, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r19807);
        mpfr_init_set_str(r19808, "-2", 10, MPFR_RNDN);
        mpfr_init(r19809);
        mpfr_init(r19810);
        mpfr_init(r19811);
        mpfr_init_set_str(r19812, "7.698366662298276e-138", 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(r19820);
        mpfr_init_set_str(r19821, "1", 10, MPFR_RNDN);
        mpfr_init(r19822);
        mpfr_init(r19823);
        mpfr_init(r19824);
        mpfr_init_set_str(r19825, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19826);
        mpfr_init(r19827);
        mpfr_init(r19828);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r19805, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19807, mpfr_cmp(r19805, r19806) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19809, a, MPFR_RNDN);
        mpfr_div(r19810, r19805, r19809, MPFR_RNDN);
        mpfr_mul(r19811, r19808, r19810, MPFR_RNDN);
        ;
        mpfr_set_si(r19813, mpfr_cmp(r19805, r19812) <= 0, MPFR_RNDN);
        mpfr_neg(r19814, r19805, MPFR_RNDN);
        mpfr_mul(r19815, r19805, r19805, MPFR_RNDN);
        mpfr_set_d(r19816, c, MPFR_RNDN);
        mpfr_mul(r19817, r19809, r19816, MPFR_RNDN);
        mpfr_sub(r19818, r19815, r19817, MPFR_RNDN);
        mpfr_sqrt(r19819, r19818, MPFR_RNDN);
        mpfr_add(r19820, r19814, r19819, MPFR_RNDN);
        ;
        mpfr_div(r19822, r19821, r19809, MPFR_RNDN);
        mpfr_mul(r19823, r19820, r19822, MPFR_RNDN);
        mpfr_div(r19824, r19816, r19805, MPFR_RNDN);
        ;
        mpfr_mul(r19826, r19824, r19825, MPFR_RNDN);
        if (mpfr_get_si(r19813, MPFR_RNDN)) { mpfr_set(r19827, r19823, MPFR_RNDN); } else { mpfr_set(r19827, r19826, MPFR_RNDN); };
        if (mpfr_get_si(r19807, MPFR_RNDN)) { mpfr_set(r19828, r19811, MPFR_RNDN); } else { mpfr_set(r19828, r19827, MPFR_RNDN); };
        return mpfr_get_d(r19828, MPFR_RNDN);
}

