#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 r10614 = a;
        float r10615 = c;
        float r10616 = r10614 * r10615;
        float r10617 = b;
        float r10618 = d;
        float r10619 = r10617 * r10618;
        float r10620 = r10616 + r10619;
        float r10621 = r10615 * r10615;
        float r10622 = r10618 * r10618;
        float r10623 = r10621 + r10622;
        float r10624 = r10620 / r10623;
        return r10624;
}

double f_id(double a, double b, double c, double d) {
        double r10625 = a;
        double r10626 = c;
        double r10627 = r10625 * r10626;
        double r10628 = b;
        double r10629 = d;
        double r10630 = r10628 * r10629;
        double r10631 = r10627 + r10630;
        double r10632 = r10626 * r10626;
        double r10633 = r10629 * r10629;
        double r10634 = r10632 + r10633;
        double r10635 = r10631 / r10634;
        return r10635;
}


double f_of(float a, float b, float c, float d) {
        float r10636 = 1;
        float r10637 = c;
        float r10638 = r10637 * r10637;
        float r10639 = d;
        float r10640 = r10639 * r10639;
        float r10641 = r10638 + r10640;
        float r10642 = sqrt(r10641);
        float r10643 = r10636 / r10642;
        float r10644 = a;
        float r10645 = r10644 * r10637;
        float r10646 = b;
        float r10647 = r10646 * r10639;
        float r10648 = r10645 + r10647;
        float r10649 = r10648 / r10642;
        float r10650 = r10643 * r10649;
        return r10650;
}

double f_od(double a, double b, double c, double d) {
        double r10651 = 1;
        double r10652 = c;
        double r10653 = r10652 * r10652;
        double r10654 = d;
        double r10655 = r10654 * r10654;
        double r10656 = r10653 + r10655;
        double r10657 = sqrt(r10656);
        double r10658 = r10651 / r10657;
        double r10659 = a;
        double r10660 = r10659 * r10652;
        double r10661 = b;
        double r10662 = r10661 * r10654;
        double r10663 = r10660 + r10662;
        double r10664 = r10663 / r10657;
        double r10665 = r10658 * r10664;
        return r10665;
}

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 r10666, r10667, r10668, r10669, r10670, r10671, r10672, r10673, r10674, r10675, r10676;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r10666);
        mpfr_init(r10667);
        mpfr_init(r10668);
        mpfr_init(r10669);
        mpfr_init(r10670);
        mpfr_init(r10671);
        mpfr_init(r10672);
        mpfr_init(r10673);
        mpfr_init(r10674);
        mpfr_init(r10675);
        mpfr_init(r10676);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r10666, a, MPFR_RNDN);
        mpfr_set_d(r10667, c, MPFR_RNDN);
        mpfr_mul(r10668, r10666, r10667, MPFR_RNDN);
        mpfr_set_d(r10669, b, MPFR_RNDN);
        mpfr_set_d(r10670, d, MPFR_RNDN);
        mpfr_mul(r10671, r10669, r10670, MPFR_RNDN);
        mpfr_add(r10672, r10668, r10671, MPFR_RNDN);
        mpfr_mul(r10673, r10667, r10667, MPFR_RNDN);
        mpfr_mul(r10674, r10670, r10670, MPFR_RNDN);
        mpfr_add(r10675, r10673, r10674, MPFR_RNDN);
        mpfr_div(r10676, r10672, r10675, MPFR_RNDN);
        return mpfr_get_d(r10676, MPFR_RNDN);
}

static mpfr_t r10677, r10678, r10679, r10680, r10681, r10682, r10683, r10684, r10685, r10686, r10687, r10688, r10689, r10690, r10691;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10677, "1", 10, MPFR_RNDN);
        mpfr_init(r10678);
        mpfr_init(r10679);
        mpfr_init(r10680);
        mpfr_init(r10681);
        mpfr_init(r10682);
        mpfr_init(r10683);
        mpfr_init(r10684);
        mpfr_init(r10685);
        mpfr_init(r10686);
        mpfr_init(r10687);
        mpfr_init(r10688);
        mpfr_init(r10689);
        mpfr_init(r10690);
        mpfr_init(r10691);
}

double f_fm(double a, double b, double c, double d) {
        ;
        mpfr_set_d(r10678, c, MPFR_RNDN);
        mpfr_mul(r10679, r10678, r10678, MPFR_RNDN);
        mpfr_set_d(r10680, d, MPFR_RNDN);
        mpfr_mul(r10681, r10680, r10680, MPFR_RNDN);
        mpfr_add(r10682, r10679, r10681, MPFR_RNDN);
        mpfr_sqrt(r10683, r10682, MPFR_RNDN);
        mpfr_div(r10684, r10677, r10683, MPFR_RNDN);
        mpfr_set_d(r10685, a, MPFR_RNDN);
        mpfr_mul(r10686, r10685, r10678, MPFR_RNDN);
        mpfr_set_d(r10687, b, MPFR_RNDN);
        mpfr_mul(r10688, r10687, r10680, MPFR_RNDN);
        mpfr_add(r10689, r10686, r10688, MPFR_RNDN);
        mpfr_div(r10690, r10689, r10683, MPFR_RNDN);
        mpfr_mul(r10691, r10684, r10690, MPFR_RNDN);
        return mpfr_get_d(r10691, MPFR_RNDN);
}

static mpfr_t r10692, r10693, r10694, r10695, r10696, r10697, r10698, r10699, r10700, r10701, r10702, r10703, r10704, r10705, r10706;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10692, "1", 10, MPFR_RNDN);
        mpfr_init(r10693);
        mpfr_init(r10694);
        mpfr_init(r10695);
        mpfr_init(r10696);
        mpfr_init(r10697);
        mpfr_init(r10698);
        mpfr_init(r10699);
        mpfr_init(r10700);
        mpfr_init(r10701);
        mpfr_init(r10702);
        mpfr_init(r10703);
        mpfr_init(r10704);
        mpfr_init(r10705);
        mpfr_init(r10706);
}

double f_dm(double a, double b, double c, double d) {
        ;
        mpfr_set_d(r10693, c, MPFR_RNDN);
        mpfr_mul(r10694, r10693, r10693, MPFR_RNDN);
        mpfr_set_d(r10695, d, MPFR_RNDN);
        mpfr_mul(r10696, r10695, r10695, MPFR_RNDN);
        mpfr_add(r10697, r10694, r10696, MPFR_RNDN);
        mpfr_sqrt(r10698, r10697, MPFR_RNDN);
        mpfr_div(r10699, r10692, r10698, MPFR_RNDN);
        mpfr_set_d(r10700, a, MPFR_RNDN);
        mpfr_mul(r10701, r10700, r10693, MPFR_RNDN);
        mpfr_set_d(r10702, b, MPFR_RNDN);
        mpfr_mul(r10703, r10702, r10695, MPFR_RNDN);
        mpfr_add(r10704, r10701, r10703, MPFR_RNDN);
        mpfr_div(r10705, r10704, r10698, MPFR_RNDN);
        mpfr_mul(r10706, r10699, r10705, MPFR_RNDN);
        return mpfr_get_d(r10706, MPFR_RNDN);
}

