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

char *name = "_multiplyComplex, real part";

double f_if(float x_re, float x_im, float y_re, float y_im) {
        float r9329 = x_re;
        float r9330 = y_re;
        float r9331 = r9329 * r9330;
        float r9332 = x_im;
        float r9333 = y_im;
        float r9334 = r9332 * r9333;
        float r9335 = r9331 - r9334;
        return r9335;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r9336 = x_re;
        double r9337 = y_re;
        double r9338 = r9336 * r9337;
        double r9339 = x_im;
        double r9340 = y_im;
        double r9341 = r9339 * r9340;
        double r9342 = r9338 - r9341;
        return r9342;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r9343 = x_re;
        float r9344 = y_re;
        float r9345 = r9343 * r9344;
        float r9346 = x_im;
        float r9347 = y_im;
        float r9348 = r9346 * r9347;
        float r9349 = r9345 - r9348;
        return r9349;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r9350 = x_re;
        double r9351 = y_re;
        double r9352 = r9350 * r9351;
        double r9353 = x_im;
        double r9354 = y_im;
        double r9355 = r9353 * r9354;
        double r9356 = r9352 - r9355;
        return r9356;
}

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 r9357, r9358, r9359, r9360, r9361, r9362, r9363;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9357);
        mpfr_init(r9358);
        mpfr_init(r9359);
        mpfr_init(r9360);
        mpfr_init(r9361);
        mpfr_init(r9362);
        mpfr_init(r9363);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9357, x_re, MPFR_RNDN);
        mpfr_set_d(r9358, y_re, MPFR_RNDN);
        mpfr_mul(r9359, r9357, r9358, MPFR_RNDN);
        mpfr_set_d(r9360, x_im, MPFR_RNDN);
        mpfr_set_d(r9361, y_im, MPFR_RNDN);
        mpfr_mul(r9362, r9360, r9361, MPFR_RNDN);
        mpfr_sub(r9363, r9359, r9362, MPFR_RNDN);
        return mpfr_get_d(r9363, MPFR_RNDN);
}

static mpfr_t r9364, r9365, r9366, r9367, r9368, r9369, r9370;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9364);
        mpfr_init(r9365);
        mpfr_init(r9366);
        mpfr_init(r9367);
        mpfr_init(r9368);
        mpfr_init(r9369);
        mpfr_init(r9370);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9364, x_re, MPFR_RNDN);
        mpfr_set_d(r9365, y_re, MPFR_RNDN);
        mpfr_mul(r9366, r9364, r9365, MPFR_RNDN);
        mpfr_set_d(r9367, x_im, MPFR_RNDN);
        mpfr_set_d(r9368, y_im, MPFR_RNDN);
        mpfr_mul(r9369, r9367, r9368, MPFR_RNDN);
        mpfr_sub(r9370, r9366, r9369, MPFR_RNDN);
        return mpfr_get_d(r9370, MPFR_RNDN);
}

static mpfr_t r9371, r9372, r9373, r9374, r9375, r9376, r9377;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9371);
        mpfr_init(r9372);
        mpfr_init(r9373);
        mpfr_init(r9374);
        mpfr_init(r9375);
        mpfr_init(r9376);
        mpfr_init(r9377);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9371, x_re, MPFR_RNDN);
        mpfr_set_d(r9372, y_re, MPFR_RNDN);
        mpfr_mul(r9373, r9371, r9372, MPFR_RNDN);
        mpfr_set_d(r9374, x_im, MPFR_RNDN);
        mpfr_set_d(r9375, y_im, MPFR_RNDN);
        mpfr_mul(r9376, r9374, r9375, MPFR_RNDN);
        mpfr_sub(r9377, r9373, r9376, MPFR_RNDN);
        return mpfr_get_d(r9377, MPFR_RNDN);
}

