#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 r9683 = a;
        float r9684 = c;
        float r9685 = r9683 * r9684;
        float r9686 = b;
        float r9687 = d;
        float r9688 = r9686 * r9687;
        float r9689 = r9685 + r9688;
        float r9690 = r9684 * r9684;
        float r9691 = r9687 * r9687;
        float r9692 = r9690 + r9691;
        float r9693 = r9689 / r9692;
        return r9693;
}

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


double f_of(float a, float b, float c, float d) {
        float r9705 = c;
        float r9706 = -4.0847043593511234e+198f;
        bool r9707 = r9705 <= r9706;
        float r9708 = 1.0f;
        float r9709 = -r9708;
        float r9710 = d;
        float r9711 = hypot(r9705, r9710);
        float r9712 = r9709 / r9711;
        float r9713 = a;
        float r9714 = r9712 * r9713;
        float r9715 = 1.480600527823983e+78f;
        bool r9716 = r9705 <= r9715;
        float r9717 = b;
        float r9718 = r9713 * r9705;
        float r9719 = fma(r9710, r9717, r9718);
        float r9720 = r9719 / r9711;
        float r9721 = r9720 / r9711;
        float r9722 = r9713 / r9711;
        float r9723 = r9716 ? r9721 : r9722;
        float r9724 = r9707 ? r9714 : r9723;
        return r9724;
}

double f_od(double a, double b, double c, double d) {
        double r9725 = c;
        double r9726 = -4.0847043593511234e+198;
        bool r9727 = r9725 <= r9726;
        double r9728 = 1.0;
        double r9729 = -r9728;
        double r9730 = d;
        double r9731 = hypot(r9725, r9730);
        double r9732 = r9729 / r9731;
        double r9733 = a;
        double r9734 = r9732 * r9733;
        double r9735 = 1.480600527823983e+78;
        bool r9736 = r9725 <= r9735;
        double r9737 = b;
        double r9738 = r9733 * r9725;
        double r9739 = fma(r9730, r9737, r9738);
        double r9740 = r9739 / r9731;
        double r9741 = r9740 / r9731;
        double r9742 = r9733 / r9731;
        double r9743 = r9736 ? r9741 : r9742;
        double r9744 = r9727 ? r9734 : r9743;
        return r9744;
}

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 r9745, r9746, r9747, r9748, r9749, r9750, r9751, r9752, r9753, r9754, r9755;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9745);
        mpfr_init(r9746);
        mpfr_init(r9747);
        mpfr_init(r9748);
        mpfr_init(r9749);
        mpfr_init(r9750);
        mpfr_init(r9751);
        mpfr_init(r9752);
        mpfr_init(r9753);
        mpfr_init(r9754);
        mpfr_init(r9755);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r9745, a, MPFR_RNDN);
        mpfr_set_d(r9746, c, MPFR_RNDN);
        mpfr_mul(r9747, r9745, r9746, MPFR_RNDN);
        mpfr_set_d(r9748, b, MPFR_RNDN);
        mpfr_set_d(r9749, d, MPFR_RNDN);
        mpfr_mul(r9750, r9748, r9749, MPFR_RNDN);
        mpfr_add(r9751, r9747, r9750, MPFR_RNDN);
        mpfr_mul(r9752, r9746, r9746, MPFR_RNDN);
        mpfr_mul(r9753, r9749, r9749, MPFR_RNDN);
        mpfr_add(r9754, r9752, r9753, MPFR_RNDN);
        mpfr_div(r9755, r9751, r9754, MPFR_RNDN);
        return mpfr_get_d(r9755, MPFR_RNDN);
}

static mpfr_t r9756, r9757, r9758, r9759, r9760, r9761, r9762, r9763, r9764, r9765, r9766, r9767, r9768, r9769, r9770, r9771, r9772, r9773, r9774, r9775;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9756);
        mpfr_init_set_str(r9757, "-4.0847043593511234e+198", 10, MPFR_RNDN);
        mpfr_init(r9758);
        mpfr_init_set_str(r9759, "1", 10, MPFR_RNDN);
        mpfr_init(r9760);
        mpfr_init(r9761);
        mpfr_init(r9762);
        mpfr_init(r9763);
        mpfr_init(r9764);
        mpfr_init(r9765);
        mpfr_init_set_str(r9766, "1.480600527823983e+78", 10, MPFR_RNDN);
        mpfr_init(r9767);
        mpfr_init(r9768);
        mpfr_init(r9769);
        mpfr_init(r9770);
        mpfr_init(r9771);
        mpfr_init(r9772);
        mpfr_init(r9773);
        mpfr_init(r9774);
        mpfr_init(r9775);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r9756, c, MPFR_RNDN);
        ;
        mpfr_set_si(r9758, mpfr_cmp(r9756, r9757) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r9760, r9759, MPFR_RNDN);
        mpfr_set_d(r9761, d, MPFR_RNDN);
        mpfr_hypot(r9762, r9756, r9761, MPFR_RNDN);
        mpfr_div(r9763, r9760, r9762, MPFR_RNDN);
        mpfr_set_d(r9764, a, MPFR_RNDN);
        mpfr_mul(r9765, r9763, r9764, MPFR_RNDN);
        ;
        mpfr_set_si(r9767, mpfr_cmp(r9756, r9766) <= 0, MPFR_RNDN);
        mpfr_set_d(r9768, b, MPFR_RNDN);
        mpfr_mul(r9769, r9764, r9756, MPFR_RNDN);
        mpfr_fma(r9770, r9761, r9768, r9769, MPFR_RNDN);
        mpfr_div(r9771, r9770, r9762, MPFR_RNDN);
        mpfr_div(r9772, r9771, r9762, MPFR_RNDN);
        mpfr_div(r9773, r9764, r9762, MPFR_RNDN);
        if (mpfr_get_si(r9767, MPFR_RNDN)) { mpfr_set(r9774, r9772, MPFR_RNDN); } else { mpfr_set(r9774, r9773, MPFR_RNDN); };
        if (mpfr_get_si(r9758, MPFR_RNDN)) { mpfr_set(r9775, r9765, MPFR_RNDN); } else { mpfr_set(r9775, r9774, MPFR_RNDN); };
        return mpfr_get_d(r9775, MPFR_RNDN);
}

static mpfr_t r9776, r9777, r9778, r9779, r9780, r9781, r9782, r9783, r9784, r9785, r9786, r9787, r9788, r9789, r9790, r9791, r9792, r9793, r9794, r9795;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9776);
        mpfr_init_set_str(r9777, "-4.0847043593511234e+198", 10, MPFR_RNDN);
        mpfr_init(r9778);
        mpfr_init_set_str(r9779, "1", 10, MPFR_RNDN);
        mpfr_init(r9780);
        mpfr_init(r9781);
        mpfr_init(r9782);
        mpfr_init(r9783);
        mpfr_init(r9784);
        mpfr_init(r9785);
        mpfr_init_set_str(r9786, "1.480600527823983e+78", 10, MPFR_RNDN);
        mpfr_init(r9787);
        mpfr_init(r9788);
        mpfr_init(r9789);
        mpfr_init(r9790);
        mpfr_init(r9791);
        mpfr_init(r9792);
        mpfr_init(r9793);
        mpfr_init(r9794);
        mpfr_init(r9795);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r9776, c, MPFR_RNDN);
        ;
        mpfr_set_si(r9778, mpfr_cmp(r9776, r9777) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r9780, r9779, MPFR_RNDN);
        mpfr_set_d(r9781, d, MPFR_RNDN);
        mpfr_hypot(r9782, r9776, r9781, MPFR_RNDN);
        mpfr_div(r9783, r9780, r9782, MPFR_RNDN);
        mpfr_set_d(r9784, a, MPFR_RNDN);
        mpfr_mul(r9785, r9783, r9784, MPFR_RNDN);
        ;
        mpfr_set_si(r9787, mpfr_cmp(r9776, r9786) <= 0, MPFR_RNDN);
        mpfr_set_d(r9788, b, MPFR_RNDN);
        mpfr_mul(r9789, r9784, r9776, MPFR_RNDN);
        mpfr_fma(r9790, r9781, r9788, r9789, MPFR_RNDN);
        mpfr_div(r9791, r9790, r9782, MPFR_RNDN);
        mpfr_div(r9792, r9791, r9782, MPFR_RNDN);
        mpfr_div(r9793, r9784, r9782, MPFR_RNDN);
        if (mpfr_get_si(r9787, MPFR_RNDN)) { mpfr_set(r9794, r9792, MPFR_RNDN); } else { mpfr_set(r9794, r9793, MPFR_RNDN); };
        if (mpfr_get_si(r9778, MPFR_RNDN)) { mpfr_set(r9795, r9785, MPFR_RNDN); } else { mpfr_set(r9795, r9794, MPFR_RNDN); };
        return mpfr_get_d(r9795, MPFR_RNDN);
}

