#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 r10746 = a;
        float r10747 = c;
        float r10748 = r10746 * r10747;
        float r10749 = b;
        float r10750 = d;
        float r10751 = r10749 * r10750;
        float r10752 = r10748 + r10751;
        float r10753 = r10747 * r10747;
        float r10754 = r10750 * r10750;
        float r10755 = r10753 + r10754;
        float r10756 = r10752 / r10755;
        return r10756;
}

double f_id(double a, double b, double c, double d) {
        double r10757 = a;
        double r10758 = c;
        double r10759 = r10757 * r10758;
        double r10760 = b;
        double r10761 = d;
        double r10762 = r10760 * r10761;
        double r10763 = r10759 + r10762;
        double r10764 = r10758 * r10758;
        double r10765 = r10761 * r10761;
        double r10766 = r10764 + r10765;
        double r10767 = r10763 / r10766;
        return r10767;
}


double f_of(float a, float b, float c, float d) {
        float r10768 = a;
        float r10769 = c;
        float r10770 = r10768 * r10769;
        float r10771 = b;
        float r10772 = d;
        float r10773 = r10771 * r10772;
        float r10774 = r10770 + r10773;
        float r10775 = r10769 * r10769;
        float r10776 = r10772 * r10772;
        float r10777 = r10775 + r10776;
        float r10778 = sqrt(r10777);
        float r10779 = r10774 / r10778;
        float r10780 = r10779 / r10778;
        return r10780;
}

double f_od(double a, double b, double c, double d) {
        double r10781 = a;
        double r10782 = c;
        double r10783 = r10781 * r10782;
        double r10784 = b;
        double r10785 = d;
        double r10786 = r10784 * r10785;
        double r10787 = r10783 + r10786;
        double r10788 = r10782 * r10782;
        double r10789 = r10785 * r10785;
        double r10790 = r10788 + r10789;
        double r10791 = sqrt(r10790);
        double r10792 = r10787 / r10791;
        double r10793 = r10792 / r10791;
        return r10793;
}

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 r10794, r10795, r10796, r10797, r10798, r10799, r10800, r10801, r10802, r10803, r10804;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r10794);
        mpfr_init(r10795);
        mpfr_init(r10796);
        mpfr_init(r10797);
        mpfr_init(r10798);
        mpfr_init(r10799);
        mpfr_init(r10800);
        mpfr_init(r10801);
        mpfr_init(r10802);
        mpfr_init(r10803);
        mpfr_init(r10804);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r10794, a, MPFR_RNDN);
        mpfr_set_d(r10795, c, MPFR_RNDN);
        mpfr_mul(r10796, r10794, r10795, MPFR_RNDN);
        mpfr_set_d(r10797, b, MPFR_RNDN);
        mpfr_set_d(r10798, d, MPFR_RNDN);
        mpfr_mul(r10799, r10797, r10798, MPFR_RNDN);
        mpfr_add(r10800, r10796, r10799, MPFR_RNDN);
        mpfr_mul(r10801, r10795, r10795, MPFR_RNDN);
        mpfr_mul(r10802, r10798, r10798, MPFR_RNDN);
        mpfr_add(r10803, r10801, r10802, MPFR_RNDN);
        mpfr_div(r10804, r10800, r10803, MPFR_RNDN);
        return mpfr_get_d(r10804, MPFR_RNDN);
}

static mpfr_t r10805, r10806, r10807, r10808, r10809, r10810, r10811, r10812, r10813, r10814, r10815, r10816, r10817;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10805);
        mpfr_init(r10806);
        mpfr_init(r10807);
        mpfr_init(r10808);
        mpfr_init(r10809);
        mpfr_init(r10810);
        mpfr_init(r10811);
        mpfr_init(r10812);
        mpfr_init(r10813);
        mpfr_init(r10814);
        mpfr_init(r10815);
        mpfr_init(r10816);
        mpfr_init(r10817);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r10805, a, MPFR_RNDN);
        mpfr_set_d(r10806, c, MPFR_RNDN);
        mpfr_mul(r10807, r10805, r10806, MPFR_RNDN);
        mpfr_set_d(r10808, b, MPFR_RNDN);
        mpfr_set_d(r10809, d, MPFR_RNDN);
        mpfr_mul(r10810, r10808, r10809, MPFR_RNDN);
        mpfr_add(r10811, r10807, r10810, MPFR_RNDN);
        mpfr_mul(r10812, r10806, r10806, MPFR_RNDN);
        mpfr_mul(r10813, r10809, r10809, MPFR_RNDN);
        mpfr_add(r10814, r10812, r10813, MPFR_RNDN);
        mpfr_sqrt(r10815, r10814, MPFR_RNDN);
        mpfr_div(r10816, r10811, r10815, MPFR_RNDN);
        mpfr_div(r10817, r10816, r10815, MPFR_RNDN);
        return mpfr_get_d(r10817, MPFR_RNDN);
}

static mpfr_t r10818, r10819, r10820, r10821, r10822, r10823, r10824, r10825, r10826, r10827, r10828, r10829, r10830;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10818);
        mpfr_init(r10819);
        mpfr_init(r10820);
        mpfr_init(r10821);
        mpfr_init(r10822);
        mpfr_init(r10823);
        mpfr_init(r10824);
        mpfr_init(r10825);
        mpfr_init(r10826);
        mpfr_init(r10827);
        mpfr_init(r10828);
        mpfr_init(r10829);
        mpfr_init(r10830);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r10818, a, MPFR_RNDN);
        mpfr_set_d(r10819, c, MPFR_RNDN);
        mpfr_mul(r10820, r10818, r10819, MPFR_RNDN);
        mpfr_set_d(r10821, b, MPFR_RNDN);
        mpfr_set_d(r10822, d, MPFR_RNDN);
        mpfr_mul(r10823, r10821, r10822, MPFR_RNDN);
        mpfr_add(r10824, r10820, r10823, MPFR_RNDN);
        mpfr_mul(r10825, r10819, r10819, MPFR_RNDN);
        mpfr_mul(r10826, r10822, r10822, MPFR_RNDN);
        mpfr_add(r10827, r10825, r10826, MPFR_RNDN);
        mpfr_sqrt(r10828, r10827, MPFR_RNDN);
        mpfr_div(r10829, r10824, r10828, MPFR_RNDN);
        mpfr_div(r10830, r10829, r10828, MPFR_RNDN);
        return mpfr_get_d(r10830, MPFR_RNDN);
}

