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

char *name = "_divideComplex, real part";

double f_if(float x_re, float x_im, float y_re, float y_im) {
        float r8704 = x_re;
        float r8705 = y_re;
        float r8706 = r8704 * r8705;
        float r8707 = x_im;
        float r8708 = y_im;
        float r8709 = r8707 * r8708;
        float r8710 = r8706 + r8709;
        float r8711 = r8705 * r8705;
        float r8712 = r8708 * r8708;
        float r8713 = r8711 + r8712;
        float r8714 = r8710 / r8713;
        return r8714;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r8715 = x_re;
        double r8716 = y_re;
        double r8717 = r8715 * r8716;
        double r8718 = x_im;
        double r8719 = y_im;
        double r8720 = r8718 * r8719;
        double r8721 = r8717 + r8720;
        double r8722 = r8716 * r8716;
        double r8723 = r8719 * r8719;
        double r8724 = r8722 + r8723;
        double r8725 = r8721 / r8724;
        return r8725;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r8726 = y_re;
        float r8727 = -3.99472859135185e+198f;
        bool r8728 = r8726 <= r8727;
        float r8729 = 1.0f;
        float r8730 = -r8729;
        float r8731 = y_im;
        float r8732 = hypot(r8726, r8731);
        float r8733 = r8730 / r8732;
        float r8734 = x_re;
        float r8735 = r8733 * r8734;
        float r8736 = 3.4737304064170775e+78f;
        bool r8737 = r8726 <= r8736;
        float r8738 = x_im;
        float r8739 = r8734 * r8726;
        float r8740 = fma(r8731, r8738, r8739);
        float r8741 = r8740 / r8732;
        float r8742 = r8741 / r8732;
        float r8743 = r8734 / r8732;
        float r8744 = r8737 ? r8742 : r8743;
        float r8745 = r8728 ? r8735 : r8744;
        return r8745;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r8746 = y_re;
        double r8747 = -3.99472859135185e+198;
        bool r8748 = r8746 <= r8747;
        double r8749 = 1.0;
        double r8750 = -r8749;
        double r8751 = y_im;
        double r8752 = hypot(r8746, r8751);
        double r8753 = r8750 / r8752;
        double r8754 = x_re;
        double r8755 = r8753 * r8754;
        double r8756 = 3.4737304064170775e+78;
        bool r8757 = r8746 <= r8756;
        double r8758 = x_im;
        double r8759 = r8754 * r8746;
        double r8760 = fma(r8751, r8758, r8759);
        double r8761 = r8760 / r8752;
        double r8762 = r8761 / r8752;
        double r8763 = r8754 / r8752;
        double r8764 = r8757 ? r8762 : r8763;
        double r8765 = r8748 ? r8755 : r8764;
        return r8765;
}

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 r8766, r8767, r8768, r8769, r8770, r8771, r8772, r8773, r8774, r8775, r8776;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8766);
        mpfr_init(r8767);
        mpfr_init(r8768);
        mpfr_init(r8769);
        mpfr_init(r8770);
        mpfr_init(r8771);
        mpfr_init(r8772);
        mpfr_init(r8773);
        mpfr_init(r8774);
        mpfr_init(r8775);
        mpfr_init(r8776);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r8766, x_re, MPFR_RNDN);
        mpfr_set_d(r8767, y_re, MPFR_RNDN);
        mpfr_mul(r8768, r8766, r8767, MPFR_RNDN);
        mpfr_set_d(r8769, x_im, MPFR_RNDN);
        mpfr_set_d(r8770, y_im, MPFR_RNDN);
        mpfr_mul(r8771, r8769, r8770, MPFR_RNDN);
        mpfr_add(r8772, r8768, r8771, MPFR_RNDN);
        mpfr_mul(r8773, r8767, r8767, MPFR_RNDN);
        mpfr_mul(r8774, r8770, r8770, MPFR_RNDN);
        mpfr_add(r8775, r8773, r8774, MPFR_RNDN);
        mpfr_div(r8776, r8772, r8775, MPFR_RNDN);
        return mpfr_get_d(r8776, MPFR_RNDN);
}

static mpfr_t r8777, r8778, r8779, r8780, r8781, r8782, r8783, r8784, r8785, r8786, r8787, r8788, r8789, r8790, r8791, r8792, r8793, r8794, r8795, r8796;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8777);
        mpfr_init_set_str(r8778, "-3.99472859135185e+198", 10, MPFR_RNDN);
        mpfr_init(r8779);
        mpfr_init_set_str(r8780, "1", 10, MPFR_RNDN);
        mpfr_init(r8781);
        mpfr_init(r8782);
        mpfr_init(r8783);
        mpfr_init(r8784);
        mpfr_init(r8785);
        mpfr_init(r8786);
        mpfr_init_set_str(r8787, "3.4737304064170775e+78", 10, MPFR_RNDN);
        mpfr_init(r8788);
        mpfr_init(r8789);
        mpfr_init(r8790);
        mpfr_init(r8791);
        mpfr_init(r8792);
        mpfr_init(r8793);
        mpfr_init(r8794);
        mpfr_init(r8795);
        mpfr_init(r8796);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r8777, y_re, MPFR_RNDN);
        ;
        mpfr_set_si(r8779, mpfr_cmp(r8777, r8778) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8781, r8780, MPFR_RNDN);
        mpfr_set_d(r8782, y_im, MPFR_RNDN);
        mpfr_hypot(r8783, r8777, r8782, MPFR_RNDN);
        mpfr_div(r8784, r8781, r8783, MPFR_RNDN);
        mpfr_set_d(r8785, x_re, MPFR_RNDN);
        mpfr_mul(r8786, r8784, r8785, MPFR_RNDN);
        ;
        mpfr_set_si(r8788, mpfr_cmp(r8777, r8787) <= 0, MPFR_RNDN);
        mpfr_set_d(r8789, x_im, MPFR_RNDN);
        mpfr_mul(r8790, r8785, r8777, MPFR_RNDN);
        mpfr_fma(r8791, r8782, r8789, r8790, MPFR_RNDN);
        mpfr_div(r8792, r8791, r8783, MPFR_RNDN);
        mpfr_div(r8793, r8792, r8783, MPFR_RNDN);
        mpfr_div(r8794, r8785, r8783, MPFR_RNDN);
        if (mpfr_get_si(r8788, MPFR_RNDN)) { mpfr_set(r8795, r8793, MPFR_RNDN); } else { mpfr_set(r8795, r8794, MPFR_RNDN); };
        if (mpfr_get_si(r8779, MPFR_RNDN)) { mpfr_set(r8796, r8786, MPFR_RNDN); } else { mpfr_set(r8796, r8795, MPFR_RNDN); };
        return mpfr_get_d(r8796, MPFR_RNDN);
}

static mpfr_t r8797, r8798, r8799, r8800, r8801, r8802, r8803, r8804, r8805, r8806, r8807, r8808, r8809, r8810, r8811, r8812, r8813, r8814, r8815, r8816;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8797);
        mpfr_init_set_str(r8798, "-3.99472859135185e+198", 10, MPFR_RNDN);
        mpfr_init(r8799);
        mpfr_init_set_str(r8800, "1", 10, MPFR_RNDN);
        mpfr_init(r8801);
        mpfr_init(r8802);
        mpfr_init(r8803);
        mpfr_init(r8804);
        mpfr_init(r8805);
        mpfr_init(r8806);
        mpfr_init_set_str(r8807, "3.4737304064170775e+78", 10, MPFR_RNDN);
        mpfr_init(r8808);
        mpfr_init(r8809);
        mpfr_init(r8810);
        mpfr_init(r8811);
        mpfr_init(r8812);
        mpfr_init(r8813);
        mpfr_init(r8814);
        mpfr_init(r8815);
        mpfr_init(r8816);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r8797, y_re, MPFR_RNDN);
        ;
        mpfr_set_si(r8799, mpfr_cmp(r8797, r8798) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8801, r8800, MPFR_RNDN);
        mpfr_set_d(r8802, y_im, MPFR_RNDN);
        mpfr_hypot(r8803, r8797, r8802, MPFR_RNDN);
        mpfr_div(r8804, r8801, r8803, MPFR_RNDN);
        mpfr_set_d(r8805, x_re, MPFR_RNDN);
        mpfr_mul(r8806, r8804, r8805, MPFR_RNDN);
        ;
        mpfr_set_si(r8808, mpfr_cmp(r8797, r8807) <= 0, MPFR_RNDN);
        mpfr_set_d(r8809, x_im, MPFR_RNDN);
        mpfr_mul(r8810, r8805, r8797, MPFR_RNDN);
        mpfr_fma(r8811, r8802, r8809, r8810, MPFR_RNDN);
        mpfr_div(r8812, r8811, r8803, MPFR_RNDN);
        mpfr_div(r8813, r8812, r8803, MPFR_RNDN);
        mpfr_div(r8814, r8805, r8803, MPFR_RNDN);
        if (mpfr_get_si(r8808, MPFR_RNDN)) { mpfr_set(r8815, r8813, MPFR_RNDN); } else { mpfr_set(r8815, r8814, MPFR_RNDN); };
        if (mpfr_get_si(r8799, MPFR_RNDN)) { mpfr_set(r8816, r8806, MPFR_RNDN); } else { mpfr_set(r8816, r8815, MPFR_RNDN); };
        return mpfr_get_d(r8816, MPFR_RNDN);
}

