#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 r9824 = a;
        float r9825 = c;
        float r9826 = r9824 * r9825;
        float r9827 = b;
        float r9828 = d;
        float r9829 = r9827 * r9828;
        float r9830 = r9826 + r9829;
        float r9831 = r9825 * r9825;
        float r9832 = r9828 * r9828;
        float r9833 = r9831 + r9832;
        float r9834 = r9830 / r9833;
        return r9834;
}

double f_id(double a, double b, double c, double d) {
        double r9835 = a;
        double r9836 = c;
        double r9837 = r9835 * r9836;
        double r9838 = b;
        double r9839 = d;
        double r9840 = r9838 * r9839;
        double r9841 = r9837 + r9840;
        double r9842 = r9836 * r9836;
        double r9843 = r9839 * r9839;
        double r9844 = r9842 + r9843;
        double r9845 = r9841 / r9844;
        return r9845;
}


double f_of(float a, float b, float c, float d) {
        float r9846 = a;
        float r9847 = c;
        float r9848 = r9846 * r9847;
        float r9849 = b;
        float r9850 = d;
        float r9851 = r9849 * r9850;
        float r9852 = r9848 + r9851;
        float r9853 = r9847 * r9847;
        float r9854 = r9850 * r9850;
        float r9855 = r9853 + r9854;
        float r9856 = sqrt(r9855);
        float r9857 = r9852 / r9856;
        float r9858 = r9857 / r9856;
        return r9858;
}

double f_od(double a, double b, double c, double d) {
        double r9859 = a;
        double r9860 = c;
        double r9861 = r9859 * r9860;
        double r9862 = b;
        double r9863 = d;
        double r9864 = r9862 * r9863;
        double r9865 = r9861 + r9864;
        double r9866 = r9860 * r9860;
        double r9867 = r9863 * r9863;
        double r9868 = r9866 + r9867;
        double r9869 = sqrt(r9868);
        double r9870 = r9865 / r9869;
        double r9871 = r9870 / r9869;
        return r9871;
}

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 r9872, r9873, r9874, r9875, r9876, r9877, r9878, r9879, r9880, r9881, r9882;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9872);
        mpfr_init(r9873);
        mpfr_init(r9874);
        mpfr_init(r9875);
        mpfr_init(r9876);
        mpfr_init(r9877);
        mpfr_init(r9878);
        mpfr_init(r9879);
        mpfr_init(r9880);
        mpfr_init(r9881);
        mpfr_init(r9882);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r9872, a, MPFR_RNDN);
        mpfr_set_d(r9873, c, MPFR_RNDN);
        mpfr_mul(r9874, r9872, r9873, MPFR_RNDN);
        mpfr_set_d(r9875, b, MPFR_RNDN);
        mpfr_set_d(r9876, d, MPFR_RNDN);
        mpfr_mul(r9877, r9875, r9876, MPFR_RNDN);
        mpfr_add(r9878, r9874, r9877, MPFR_RNDN);
        mpfr_mul(r9879, r9873, r9873, MPFR_RNDN);
        mpfr_mul(r9880, r9876, r9876, MPFR_RNDN);
        mpfr_add(r9881, r9879, r9880, MPFR_RNDN);
        mpfr_div(r9882, r9878, r9881, MPFR_RNDN);
        return mpfr_get_d(r9882, MPFR_RNDN);
}

static mpfr_t r9883, r9884, r9885, r9886, r9887, r9888, r9889, r9890, r9891, r9892, r9893, r9894, r9895;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9883);
        mpfr_init(r9884);
        mpfr_init(r9885);
        mpfr_init(r9886);
        mpfr_init(r9887);
        mpfr_init(r9888);
        mpfr_init(r9889);
        mpfr_init(r9890);
        mpfr_init(r9891);
        mpfr_init(r9892);
        mpfr_init(r9893);
        mpfr_init(r9894);
        mpfr_init(r9895);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r9883, a, MPFR_RNDN);
        mpfr_set_d(r9884, c, MPFR_RNDN);
        mpfr_mul(r9885, r9883, r9884, MPFR_RNDN);
        mpfr_set_d(r9886, b, MPFR_RNDN);
        mpfr_set_d(r9887, d, MPFR_RNDN);
        mpfr_mul(r9888, r9886, r9887, MPFR_RNDN);
        mpfr_add(r9889, r9885, r9888, MPFR_RNDN);
        mpfr_mul(r9890, r9884, r9884, MPFR_RNDN);
        mpfr_mul(r9891, r9887, r9887, MPFR_RNDN);
        mpfr_add(r9892, r9890, r9891, MPFR_RNDN);
        mpfr_sqrt(r9893, r9892, MPFR_RNDN);
        mpfr_div(r9894, r9889, r9893, MPFR_RNDN);
        mpfr_div(r9895, r9894, r9893, MPFR_RNDN);
        return mpfr_get_d(r9895, MPFR_RNDN);
}

static mpfr_t r9896, r9897, r9898, r9899, r9900, r9901, r9902, r9903, r9904, r9905, r9906, r9907, r9908;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9896);
        mpfr_init(r9897);
        mpfr_init(r9898);
        mpfr_init(r9899);
        mpfr_init(r9900);
        mpfr_init(r9901);
        mpfr_init(r9902);
        mpfr_init(r9903);
        mpfr_init(r9904);
        mpfr_init(r9905);
        mpfr_init(r9906);
        mpfr_init(r9907);
        mpfr_init(r9908);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r9896, a, MPFR_RNDN);
        mpfr_set_d(r9897, c, MPFR_RNDN);
        mpfr_mul(r9898, r9896, r9897, MPFR_RNDN);
        mpfr_set_d(r9899, b, MPFR_RNDN);
        mpfr_set_d(r9900, d, MPFR_RNDN);
        mpfr_mul(r9901, r9899, r9900, MPFR_RNDN);
        mpfr_add(r9902, r9898, r9901, MPFR_RNDN);
        mpfr_mul(r9903, r9897, r9897, MPFR_RNDN);
        mpfr_mul(r9904, r9900, r9900, MPFR_RNDN);
        mpfr_add(r9905, r9903, r9904, MPFR_RNDN);
        mpfr_sqrt(r9906, r9905, MPFR_RNDN);
        mpfr_div(r9907, r9902, r9906, MPFR_RNDN);
        mpfr_div(r9908, r9907, r9906, MPFR_RNDN);
        return mpfr_get_d(r9908, MPFR_RNDN);
}

