#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "_multiplyComplex, imaginary part";

double f_if(float x_re, float x_im, float y_re, float y_im) {
        float r9820 = x_re;
        float r9821 = y_im;
        float r9822 = r9820 * r9821;
        float r9823 = x_im;
        float r9824 = y_re;
        float r9825 = r9823 * r9824;
        float r9826 = r9822 + r9825;
        return r9826;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r9827 = x_re;
        double r9828 = y_im;
        double r9829 = r9827 * r9828;
        double r9830 = x_im;
        double r9831 = y_re;
        double r9832 = r9830 * r9831;
        double r9833 = r9829 + r9832;
        return r9833;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r9834 = x_re;
        float r9835 = y_im;
        float r9836 = r9834 * r9835;
        float r9837 = x_im;
        float r9838 = y_re;
        float r9839 = r9837 * r9838;
        float r9840 = r9836 + r9839;
        return r9840;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r9841 = x_re;
        double r9842 = y_im;
        double r9843 = r9841 * r9842;
        double r9844 = x_im;
        double r9845 = y_re;
        double r9846 = r9844 * r9845;
        double r9847 = r9843 + r9846;
        return r9847;
}

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 r9848, r9849, r9850, r9851, r9852, r9853, r9854;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9848);
        mpfr_init(r9849);
        mpfr_init(r9850);
        mpfr_init(r9851);
        mpfr_init(r9852);
        mpfr_init(r9853);
        mpfr_init(r9854);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9848, x_re, MPFR_RNDN);
        mpfr_set_d(r9849, y_im, MPFR_RNDN);
        mpfr_mul(r9850, r9848, r9849, MPFR_RNDN);
        mpfr_set_d(r9851, x_im, MPFR_RNDN);
        mpfr_set_d(r9852, y_re, MPFR_RNDN);
        mpfr_mul(r9853, r9851, r9852, MPFR_RNDN);
        mpfr_add(r9854, r9850, r9853, MPFR_RNDN);
        return mpfr_get_d(r9854, MPFR_RNDN);
}

static mpfr_t r9855, r9856, r9857, r9858, r9859, r9860, r9861;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9855);
        mpfr_init(r9856);
        mpfr_init(r9857);
        mpfr_init(r9858);
        mpfr_init(r9859);
        mpfr_init(r9860);
        mpfr_init(r9861);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9855, x_re, MPFR_RNDN);
        mpfr_set_d(r9856, y_im, MPFR_RNDN);
        mpfr_mul(r9857, r9855, r9856, MPFR_RNDN);
        mpfr_set_d(r9858, x_im, MPFR_RNDN);
        mpfr_set_d(r9859, y_re, MPFR_RNDN);
        mpfr_mul(r9860, r9858, r9859, MPFR_RNDN);
        mpfr_add(r9861, r9857, r9860, MPFR_RNDN);
        return mpfr_get_d(r9861, MPFR_RNDN);
}

static mpfr_t r9862, r9863, r9864, r9865, r9866, r9867, r9868;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9862);
        mpfr_init(r9863);
        mpfr_init(r9864);
        mpfr_init(r9865);
        mpfr_init(r9866);
        mpfr_init(r9867);
        mpfr_init(r9868);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9862, x_re, MPFR_RNDN);
        mpfr_set_d(r9863, y_im, MPFR_RNDN);
        mpfr_mul(r9864, r9862, r9863, MPFR_RNDN);
        mpfr_set_d(r9865, x_im, MPFR_RNDN);
        mpfr_set_d(r9866, y_re, MPFR_RNDN);
        mpfr_mul(r9867, r9865, r9866, MPFR_RNDN);
        mpfr_add(r9868, r9864, r9867, MPFR_RNDN);
        return mpfr_get_d(r9868, MPFR_RNDN);
}

