#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 r56506670 = x_re;
        float r56506671 = y_re;
        float r56506672 = r56506670 * r56506671;
        float r56506673 = x_im;
        float r56506674 = y_im;
        float r56506675 = r56506673 * r56506674;
        float r56506676 = r56506672 + r56506675;
        float r56506677 = r56506671 * r56506671;
        float r56506678 = r56506674 * r56506674;
        float r56506679 = r56506677 + r56506678;
        float r56506680 = r56506676 / r56506679;
        return r56506680;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r56506681 = x_re;
        double r56506682 = y_re;
        double r56506683 = r56506681 * r56506682;
        double r56506684 = x_im;
        double r56506685 = y_im;
        double r56506686 = r56506684 * r56506685;
        double r56506687 = r56506683 + r56506686;
        double r56506688 = r56506682 * r56506682;
        double r56506689 = r56506685 * r56506685;
        double r56506690 = r56506688 + r56506689;
        double r56506691 = r56506687 / r56506690;
        return r56506691;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r56506692 = x_re;
        float r56506693 = y_re;
        float r56506694 = r56506692 * r56506693;
        float r56506695 = x_im;
        float r56506696 = y_im;
        float r56506697 = r56506695 * r56506696;
        float r56506698 = r56506694 + r56506697;
        float r56506699 = r56506693 * r56506693;
        float r56506700 = r56506696 * r56506696;
        float r56506701 = r56506699 + r56506700;
        float r56506702 = sqrt(r56506701);
        float r56506703 = r56506698 / r56506702;
        float r56506704 = r56506703 / r56506702;
        return r56506704;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r56506705 = x_re;
        double r56506706 = y_re;
        double r56506707 = r56506705 * r56506706;
        double r56506708 = x_im;
        double r56506709 = y_im;
        double r56506710 = r56506708 * r56506709;
        double r56506711 = r56506707 + r56506710;
        double r56506712 = r56506706 * r56506706;
        double r56506713 = r56506709 * r56506709;
        double r56506714 = r56506712 + r56506713;
        double r56506715 = sqrt(r56506714);
        double r56506716 = r56506711 / r56506715;
        double r56506717 = r56506716 / r56506715;
        return r56506717;
}

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 r56506718, r56506719, r56506720, r56506721, r56506722, r56506723, r56506724, r56506725, r56506726, r56506727, r56506728;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56506718);
        mpfr_init(r56506719);
        mpfr_init(r56506720);
        mpfr_init(r56506721);
        mpfr_init(r56506722);
        mpfr_init(r56506723);
        mpfr_init(r56506724);
        mpfr_init(r56506725);
        mpfr_init(r56506726);
        mpfr_init(r56506727);
        mpfr_init(r56506728);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r56506718, x_re, MPFR_RNDN);
        mpfr_set_d(r56506719, y_re, MPFR_RNDN);
        mpfr_mul(r56506720, r56506718, r56506719, MPFR_RNDN);
        mpfr_set_d(r56506721, x_im, MPFR_RNDN);
        mpfr_set_d(r56506722, y_im, MPFR_RNDN);
        mpfr_mul(r56506723, r56506721, r56506722, MPFR_RNDN);
        mpfr_add(r56506724, r56506720, r56506723, MPFR_RNDN);
        mpfr_mul(r56506725, r56506719, r56506719, MPFR_RNDN);
        mpfr_mul(r56506726, r56506722, r56506722, MPFR_RNDN);
        mpfr_add(r56506727, r56506725, r56506726, MPFR_RNDN);
        mpfr_div(r56506728, r56506724, r56506727, MPFR_RNDN);
        return mpfr_get_d(r56506728, MPFR_RNDN);
}

static mpfr_t r56506729, r56506730, r56506731, r56506732, r56506733, r56506734, r56506735, r56506736, r56506737, r56506738, r56506739, r56506740, r56506741;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56506729);
        mpfr_init(r56506730);
        mpfr_init(r56506731);
        mpfr_init(r56506732);
        mpfr_init(r56506733);
        mpfr_init(r56506734);
        mpfr_init(r56506735);
        mpfr_init(r56506736);
        mpfr_init(r56506737);
        mpfr_init(r56506738);
        mpfr_init(r56506739);
        mpfr_init(r56506740);
        mpfr_init(r56506741);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r56506729, x_re, MPFR_RNDN);
        mpfr_set_d(r56506730, y_re, MPFR_RNDN);
        mpfr_mul(r56506731, r56506729, r56506730, MPFR_RNDN);
        mpfr_set_d(r56506732, x_im, MPFR_RNDN);
        mpfr_set_d(r56506733, y_im, MPFR_RNDN);
        mpfr_mul(r56506734, r56506732, r56506733, MPFR_RNDN);
        mpfr_add(r56506735, r56506731, r56506734, MPFR_RNDN);
        mpfr_mul(r56506736, r56506730, r56506730, MPFR_RNDN);
        mpfr_mul(r56506737, r56506733, r56506733, MPFR_RNDN);
        mpfr_add(r56506738, r56506736, r56506737, MPFR_RNDN);
        mpfr_sqrt(r56506739, r56506738, MPFR_RNDN);
        mpfr_div(r56506740, r56506735, r56506739, MPFR_RNDN);
        mpfr_div(r56506741, r56506740, r56506739, MPFR_RNDN);
        return mpfr_get_d(r56506741, MPFR_RNDN);
}

static mpfr_t r56506742, r56506743, r56506744, r56506745, r56506746, r56506747, r56506748, r56506749, r56506750, r56506751, r56506752, r56506753, r56506754;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56506742);
        mpfr_init(r56506743);
        mpfr_init(r56506744);
        mpfr_init(r56506745);
        mpfr_init(r56506746);
        mpfr_init(r56506747);
        mpfr_init(r56506748);
        mpfr_init(r56506749);
        mpfr_init(r56506750);
        mpfr_init(r56506751);
        mpfr_init(r56506752);
        mpfr_init(r56506753);
        mpfr_init(r56506754);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r56506742, x_re, MPFR_RNDN);
        mpfr_set_d(r56506743, y_re, MPFR_RNDN);
        mpfr_mul(r56506744, r56506742, r56506743, MPFR_RNDN);
        mpfr_set_d(r56506745, x_im, MPFR_RNDN);
        mpfr_set_d(r56506746, y_im, MPFR_RNDN);
        mpfr_mul(r56506747, r56506745, r56506746, MPFR_RNDN);
        mpfr_add(r56506748, r56506744, r56506747, MPFR_RNDN);
        mpfr_mul(r56506749, r56506743, r56506743, MPFR_RNDN);
        mpfr_mul(r56506750, r56506746, r56506746, MPFR_RNDN);
        mpfr_add(r56506751, r56506749, r56506750, MPFR_RNDN);
        mpfr_sqrt(r56506752, r56506751, MPFR_RNDN);
        mpfr_div(r56506753, r56506748, r56506752, MPFR_RNDN);
        mpfr_div(r56506754, r56506753, r56506752, MPFR_RNDN);
        return mpfr_get_d(r56506754, MPFR_RNDN);
}

