#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Complex division, real part";

double f_if(float a, float b, float c, float d) {
        float r9694 = a;
        float r9695 = c;
        float r9696 = r9694 * r9695;
        float r9697 = b;
        float r9698 = d;
        float r9699 = r9697 * r9698;
        float r9700 = r9696 + r9699;
        float r9701 = r9695 * r9695;
        float r9702 = r9698 * r9698;
        float r9703 = r9701 + r9702;
        float r9704 = r9700 / r9703;
        return r9704;
}

double f_id(double a, double b, double c, double d) {
        double r9705 = a;
        double r9706 = c;
        double r9707 = r9705 * r9706;
        double r9708 = b;
        double r9709 = d;
        double r9710 = r9708 * r9709;
        double r9711 = r9707 + r9710;
        double r9712 = r9706 * r9706;
        double r9713 = r9709 * r9709;
        double r9714 = r9712 + r9713;
        double r9715 = r9711 / r9714;
        return r9715;
}


double f_of(float a, float b, float c, float d) {
        float r9716 = c;
        float r9717 = -3.99472859135185e+198f;
        bool r9718 = r9716 <= r9717;
        float r9719 = 1.0f;
        float r9720 = -r9719;
        float r9721 = d;
        float r9722 = hypot(r9716, r9721);
        float r9723 = r9720 / r9722;
        float r9724 = a;
        float r9725 = r9723 * r9724;
        float r9726 = 3.4737304064170775e+78f;
        bool r9727 = r9716 <= r9726;
        float r9728 = b;
        float r9729 = r9724 * r9716;
        float r9730 = fma(r9721, r9728, r9729);
        float r9731 = r9730 / r9722;
        float r9732 = r9731 / r9722;
        float r9733 = r9724 / r9722;
        float r9734 = r9727 ? r9732 : r9733;
        float r9735 = r9718 ? r9725 : r9734;
        return r9735;
}

double f_od(double a, double b, double c, double d) {
        double r9736 = c;
        double r9737 = -3.99472859135185e+198;
        bool r9738 = r9736 <= r9737;
        double r9739 = 1.0;
        double r9740 = -r9739;
        double r9741 = d;
        double r9742 = hypot(r9736, r9741);
        double r9743 = r9740 / r9742;
        double r9744 = a;
        double r9745 = r9743 * r9744;
        double r9746 = 3.4737304064170775e+78;
        bool r9747 = r9736 <= r9746;
        double r9748 = b;
        double r9749 = r9744 * r9736;
        double r9750 = fma(r9741, r9748, r9749);
        double r9751 = r9750 / r9742;
        double r9752 = r9751 / r9742;
        double r9753 = r9744 / r9742;
        double r9754 = r9747 ? r9752 : r9753;
        double r9755 = r9738 ? r9745 : r9754;
        return r9755;
}

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 r9756, r9757, r9758, r9759, r9760, r9761, r9762, r9763, r9764, r9765, r9766;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9756);
        mpfr_init(r9757);
        mpfr_init(r9758);
        mpfr_init(r9759);
        mpfr_init(r9760);
        mpfr_init(r9761);
        mpfr_init(r9762);
        mpfr_init(r9763);
        mpfr_init(r9764);
        mpfr_init(r9765);
        mpfr_init(r9766);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r9756, a, MPFR_RNDN);
        mpfr_set_d(r9757, c, MPFR_RNDN);
        mpfr_mul(r9758, r9756, r9757, MPFR_RNDN);
        mpfr_set_d(r9759, b, MPFR_RNDN);
        mpfr_set_d(r9760, d, MPFR_RNDN);
        mpfr_mul(r9761, r9759, r9760, MPFR_RNDN);
        mpfr_add(r9762, r9758, r9761, MPFR_RNDN);
        mpfr_mul(r9763, r9757, r9757, MPFR_RNDN);
        mpfr_mul(r9764, r9760, r9760, MPFR_RNDN);
        mpfr_add(r9765, r9763, r9764, MPFR_RNDN);
        mpfr_div(r9766, r9762, r9765, MPFR_RNDN);
        return mpfr_get_d(r9766, MPFR_RNDN);
}

static mpfr_t r9767, r9768, r9769, r9770, r9771, r9772, r9773, r9774, r9775, r9776, r9777, r9778, r9779, r9780, r9781, r9782, r9783, r9784, r9785, r9786;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9767);
        mpfr_init_set_str(r9768, "-3.99472859135185e+198", 10, MPFR_RNDN);
        mpfr_init(r9769);
        mpfr_init_set_str(r9770, "1", 10, MPFR_RNDN);
        mpfr_init(r9771);
        mpfr_init(r9772);
        mpfr_init(r9773);
        mpfr_init(r9774);
        mpfr_init(r9775);
        mpfr_init(r9776);
        mpfr_init_set_str(r9777, "3.4737304064170775e+78", 10, MPFR_RNDN);
        mpfr_init(r9778);
        mpfr_init(r9779);
        mpfr_init(r9780);
        mpfr_init(r9781);
        mpfr_init(r9782);
        mpfr_init(r9783);
        mpfr_init(r9784);
        mpfr_init(r9785);
        mpfr_init(r9786);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r9767, c, MPFR_RNDN);
        ;
        mpfr_set_si(r9769, mpfr_cmp(r9767, r9768) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r9771, r9770, MPFR_RNDN);
        mpfr_set_d(r9772, d, MPFR_RNDN);
        mpfr_hypot(r9773, r9767, r9772, MPFR_RNDN);
        mpfr_div(r9774, r9771, r9773, MPFR_RNDN);
        mpfr_set_d(r9775, a, MPFR_RNDN);
        mpfr_mul(r9776, r9774, r9775, MPFR_RNDN);
        ;
        mpfr_set_si(r9778, mpfr_cmp(r9767, r9777) <= 0, MPFR_RNDN);
        mpfr_set_d(r9779, b, MPFR_RNDN);
        mpfr_mul(r9780, r9775, r9767, MPFR_RNDN);
        mpfr_fma(r9781, r9772, r9779, r9780, MPFR_RNDN);
        mpfr_div(r9782, r9781, r9773, MPFR_RNDN);
        mpfr_div(r9783, r9782, r9773, MPFR_RNDN);
        mpfr_div(r9784, r9775, r9773, MPFR_RNDN);
        if (mpfr_get_si(r9778, MPFR_RNDN)) { mpfr_set(r9785, r9783, MPFR_RNDN); } else { mpfr_set(r9785, r9784, MPFR_RNDN); };
        if (mpfr_get_si(r9769, MPFR_RNDN)) { mpfr_set(r9786, r9776, MPFR_RNDN); } else { mpfr_set(r9786, r9785, MPFR_RNDN); };
        return mpfr_get_d(r9786, MPFR_RNDN);
}

static mpfr_t r9787, r9788, r9789, r9790, r9791, r9792, r9793, r9794, r9795, r9796, r9797, r9798, r9799, r9800, r9801, r9802, r9803, r9804, r9805, r9806;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9787);
        mpfr_init_set_str(r9788, "-3.99472859135185e+198", 10, MPFR_RNDN);
        mpfr_init(r9789);
        mpfr_init_set_str(r9790, "1", 10, MPFR_RNDN);
        mpfr_init(r9791);
        mpfr_init(r9792);
        mpfr_init(r9793);
        mpfr_init(r9794);
        mpfr_init(r9795);
        mpfr_init(r9796);
        mpfr_init_set_str(r9797, "3.4737304064170775e+78", 10, MPFR_RNDN);
        mpfr_init(r9798);
        mpfr_init(r9799);
        mpfr_init(r9800);
        mpfr_init(r9801);
        mpfr_init(r9802);
        mpfr_init(r9803);
        mpfr_init(r9804);
        mpfr_init(r9805);
        mpfr_init(r9806);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r9787, c, MPFR_RNDN);
        ;
        mpfr_set_si(r9789, mpfr_cmp(r9787, r9788) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r9791, r9790, MPFR_RNDN);
        mpfr_set_d(r9792, d, MPFR_RNDN);
        mpfr_hypot(r9793, r9787, r9792, MPFR_RNDN);
        mpfr_div(r9794, r9791, r9793, MPFR_RNDN);
        mpfr_set_d(r9795, a, MPFR_RNDN);
        mpfr_mul(r9796, r9794, r9795, MPFR_RNDN);
        ;
        mpfr_set_si(r9798, mpfr_cmp(r9787, r9797) <= 0, MPFR_RNDN);
        mpfr_set_d(r9799, b, MPFR_RNDN);
        mpfr_mul(r9800, r9795, r9787, MPFR_RNDN);
        mpfr_fma(r9801, r9792, r9799, r9800, MPFR_RNDN);
        mpfr_div(r9802, r9801, r9793, MPFR_RNDN);
        mpfr_div(r9803, r9802, r9793, MPFR_RNDN);
        mpfr_div(r9804, r9795, r9793, MPFR_RNDN);
        if (mpfr_get_si(r9798, MPFR_RNDN)) { mpfr_set(r9805, r9803, MPFR_RNDN); } else { mpfr_set(r9805, r9804, MPFR_RNDN); };
        if (mpfr_get_si(r9789, MPFR_RNDN)) { mpfr_set(r9806, r9796, MPFR_RNDN); } else { mpfr_set(r9806, r9805, MPFR_RNDN); };
        return mpfr_get_d(r9806, MPFR_RNDN);
}

