#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 r8711 = x_re;
        float r8712 = y_re;
        float r8713 = r8711 * r8712;
        float r8714 = x_im;
        float r8715 = y_im;
        float r8716 = r8714 * r8715;
        float r8717 = r8713 + r8716;
        float r8718 = r8712 * r8712;
        float r8719 = r8715 * r8715;
        float r8720 = r8718 + r8719;
        float r8721 = r8717 / r8720;
        return r8721;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r8722 = x_re;
        double r8723 = y_re;
        double r8724 = r8722 * r8723;
        double r8725 = x_im;
        double r8726 = y_im;
        double r8727 = r8725 * r8726;
        double r8728 = r8724 + r8727;
        double r8729 = r8723 * r8723;
        double r8730 = r8726 * r8726;
        double r8731 = r8729 + r8730;
        double r8732 = r8728 / r8731;
        return r8732;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r8733 = y_im;
        float r8734 = -1.4362146765870036e+89f;
        bool r8735 = r8733 <= r8734;
        float r8736 = 1.0f;
        float r8737 = -r8736;
        float r8738 = y_re;
        float r8739 = hypot(r8733, r8738);
        float r8740 = r8737 / r8739;
        float r8741 = x_im;
        float r8742 = r8740 * r8741;
        float r8743 = 3.682673386505032e+207f;
        bool r8744 = r8733 <= r8743;
        float r8745 = x_re;
        float r8746 = r8741 * r8733;
        float r8747 = fma(r8738, r8745, r8746);
        float r8748 = r8747 / r8739;
        float r8749 = r8748 / r8739;
        float r8750 = r8741 / r8739;
        float r8751 = r8744 ? r8749 : r8750;
        float r8752 = r8735 ? r8742 : r8751;
        return r8752;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r8753 = y_im;
        double r8754 = -1.4362146765870036e+89;
        bool r8755 = r8753 <= r8754;
        double r8756 = 1.0;
        double r8757 = -r8756;
        double r8758 = y_re;
        double r8759 = hypot(r8753, r8758);
        double r8760 = r8757 / r8759;
        double r8761 = x_im;
        double r8762 = r8760 * r8761;
        double r8763 = 3.682673386505032e+207;
        bool r8764 = r8753 <= r8763;
        double r8765 = x_re;
        double r8766 = r8761 * r8753;
        double r8767 = fma(r8758, r8765, r8766);
        double r8768 = r8767 / r8759;
        double r8769 = r8768 / r8759;
        double r8770 = r8761 / r8759;
        double r8771 = r8764 ? r8769 : r8770;
        double r8772 = r8755 ? r8762 : r8771;
        return r8772;
}

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 r8773, r8774, r8775, r8776, r8777, r8778, r8779, r8780, r8781, r8782, r8783;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8773);
        mpfr_init(r8774);
        mpfr_init(r8775);
        mpfr_init(r8776);
        mpfr_init(r8777);
        mpfr_init(r8778);
        mpfr_init(r8779);
        mpfr_init(r8780);
        mpfr_init(r8781);
        mpfr_init(r8782);
        mpfr_init(r8783);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r8773, x_re, MPFR_RNDN);
        mpfr_set_d(r8774, y_re, MPFR_RNDN);
        mpfr_mul(r8775, r8773, r8774, MPFR_RNDN);
        mpfr_set_d(r8776, x_im, MPFR_RNDN);
        mpfr_set_d(r8777, y_im, MPFR_RNDN);
        mpfr_mul(r8778, r8776, r8777, MPFR_RNDN);
        mpfr_add(r8779, r8775, r8778, MPFR_RNDN);
        mpfr_mul(r8780, r8774, r8774, MPFR_RNDN);
        mpfr_mul(r8781, r8777, r8777, MPFR_RNDN);
        mpfr_add(r8782, r8780, r8781, MPFR_RNDN);
        mpfr_div(r8783, r8779, r8782, MPFR_RNDN);
        return mpfr_get_d(r8783, MPFR_RNDN);
}

static mpfr_t r8784, r8785, r8786, r8787, r8788, r8789, r8790, r8791, r8792, r8793, r8794, r8795, r8796, r8797, r8798, r8799, r8800, r8801, r8802, r8803;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8784);
        mpfr_init_set_str(r8785, "-1.4362146765870036e+89", 10, MPFR_RNDN);
        mpfr_init(r8786);
        mpfr_init_set_str(r8787, "1", 10, MPFR_RNDN);
        mpfr_init(r8788);
        mpfr_init(r8789);
        mpfr_init(r8790);
        mpfr_init(r8791);
        mpfr_init(r8792);
        mpfr_init(r8793);
        mpfr_init_set_str(r8794, "3.682673386505032e+207", 10, MPFR_RNDN);
        mpfr_init(r8795);
        mpfr_init(r8796);
        mpfr_init(r8797);
        mpfr_init(r8798);
        mpfr_init(r8799);
        mpfr_init(r8800);
        mpfr_init(r8801);
        mpfr_init(r8802);
        mpfr_init(r8803);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r8784, y_im, MPFR_RNDN);
        ;
        mpfr_set_si(r8786, mpfr_cmp(r8784, r8785) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8788, r8787, MPFR_RNDN);
        mpfr_set_d(r8789, y_re, MPFR_RNDN);
        mpfr_hypot(r8790, r8784, r8789, MPFR_RNDN);
        mpfr_div(r8791, r8788, r8790, MPFR_RNDN);
        mpfr_set_d(r8792, x_im, MPFR_RNDN);
        mpfr_mul(r8793, r8791, r8792, MPFR_RNDN);
        ;
        mpfr_set_si(r8795, mpfr_cmp(r8784, r8794) <= 0, MPFR_RNDN);
        mpfr_set_d(r8796, x_re, MPFR_RNDN);
        mpfr_mul(r8797, r8792, r8784, MPFR_RNDN);
        mpfr_fma(r8798, r8789, r8796, r8797, MPFR_RNDN);
        mpfr_div(r8799, r8798, r8790, MPFR_RNDN);
        mpfr_div(r8800, r8799, r8790, MPFR_RNDN);
        mpfr_div(r8801, r8792, r8790, MPFR_RNDN);
        if (mpfr_get_si(r8795, MPFR_RNDN)) { mpfr_set(r8802, r8800, MPFR_RNDN); } else { mpfr_set(r8802, r8801, MPFR_RNDN); };
        if (mpfr_get_si(r8786, MPFR_RNDN)) { mpfr_set(r8803, r8793, MPFR_RNDN); } else { mpfr_set(r8803, r8802, MPFR_RNDN); };
        return mpfr_get_d(r8803, MPFR_RNDN);
}

static mpfr_t r8804, r8805, r8806, r8807, r8808, r8809, r8810, r8811, r8812, r8813, r8814, r8815, r8816, r8817, r8818, r8819, r8820, r8821, r8822, r8823;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8804);
        mpfr_init_set_str(r8805, "-1.4362146765870036e+89", 10, MPFR_RNDN);
        mpfr_init(r8806);
        mpfr_init_set_str(r8807, "1", 10, MPFR_RNDN);
        mpfr_init(r8808);
        mpfr_init(r8809);
        mpfr_init(r8810);
        mpfr_init(r8811);
        mpfr_init(r8812);
        mpfr_init(r8813);
        mpfr_init_set_str(r8814, "3.682673386505032e+207", 10, MPFR_RNDN);
        mpfr_init(r8815);
        mpfr_init(r8816);
        mpfr_init(r8817);
        mpfr_init(r8818);
        mpfr_init(r8819);
        mpfr_init(r8820);
        mpfr_init(r8821);
        mpfr_init(r8822);
        mpfr_init(r8823);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r8804, y_im, MPFR_RNDN);
        ;
        mpfr_set_si(r8806, mpfr_cmp(r8804, r8805) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8808, r8807, MPFR_RNDN);
        mpfr_set_d(r8809, y_re, MPFR_RNDN);
        mpfr_hypot(r8810, r8804, r8809, MPFR_RNDN);
        mpfr_div(r8811, r8808, r8810, MPFR_RNDN);
        mpfr_set_d(r8812, x_im, MPFR_RNDN);
        mpfr_mul(r8813, r8811, r8812, MPFR_RNDN);
        ;
        mpfr_set_si(r8815, mpfr_cmp(r8804, r8814) <= 0, MPFR_RNDN);
        mpfr_set_d(r8816, x_re, MPFR_RNDN);
        mpfr_mul(r8817, r8812, r8804, MPFR_RNDN);
        mpfr_fma(r8818, r8809, r8816, r8817, MPFR_RNDN);
        mpfr_div(r8819, r8818, r8810, MPFR_RNDN);
        mpfr_div(r8820, r8819, r8810, MPFR_RNDN);
        mpfr_div(r8821, r8812, r8810, MPFR_RNDN);
        if (mpfr_get_si(r8815, MPFR_RNDN)) { mpfr_set(r8822, r8820, MPFR_RNDN); } else { mpfr_set(r8822, r8821, MPFR_RNDN); };
        if (mpfr_get_si(r8806, MPFR_RNDN)) { mpfr_set(r8823, r8813, MPFR_RNDN); } else { mpfr_set(r8823, r8822, MPFR_RNDN); };
        return mpfr_get_d(r8823, MPFR_RNDN);
}

