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

char *name = "_divideComplex, real part";

double f_if(float x_re, float x_im, float y_re, float y_im) {
        float r9427 = x_re;
        float r9428 = y_re;
        float r9429 = r9427 * r9428;
        float r9430 = x_im;
        float r9431 = y_im;
        float r9432 = r9430 * r9431;
        float r9433 = r9429 + r9432;
        float r9434 = r9428 * r9428;
        float r9435 = r9431 * r9431;
        float r9436 = r9434 + r9435;
        float r9437 = r9433 / r9436;
        return r9437;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r9438 = x_re;
        double r9439 = y_re;
        double r9440 = r9438 * r9439;
        double r9441 = x_im;
        double r9442 = y_im;
        double r9443 = r9441 * r9442;
        double r9444 = r9440 + r9443;
        double r9445 = r9439 * r9439;
        double r9446 = r9442 * r9442;
        double r9447 = r9445 + r9446;
        double r9448 = r9444 / r9447;
        return r9448;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r9449 = x_im;
        float r9450 = y_im;
        float r9451 = r9449 * r9450;
        float r9452 = x_re;
        float r9453 = y_re;
        float r9454 = r9452 * r9453;
        float r9455 = r9451 + r9454;
        float r9456 = r9453 * r9453;
        float r9457 = r9450 * r9450;
        float r9458 = r9456 + r9457;
        float r9459 = sqrt(r9458);
        float r9460 = r9455 / r9459;
        float r9461 = r9460 / r9459;
        return r9461;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r9462 = x_im;
        double r9463 = y_im;
        double r9464 = r9462 * r9463;
        double r9465 = x_re;
        double r9466 = y_re;
        double r9467 = r9465 * r9466;
        double r9468 = r9464 + r9467;
        double r9469 = r9466 * r9466;
        double r9470 = r9463 * r9463;
        double r9471 = r9469 + r9470;
        double r9472 = sqrt(r9471);
        double r9473 = r9468 / r9472;
        double r9474 = r9473 / r9472;
        return r9474;
}

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 r9475, r9476, r9477, r9478, r9479, r9480, r9481, r9482, r9483, r9484, r9485;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9475);
        mpfr_init(r9476);
        mpfr_init(r9477);
        mpfr_init(r9478);
        mpfr_init(r9479);
        mpfr_init(r9480);
        mpfr_init(r9481);
        mpfr_init(r9482);
        mpfr_init(r9483);
        mpfr_init(r9484);
        mpfr_init(r9485);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9475, x_re, MPFR_RNDN);
        mpfr_set_d(r9476, y_re, MPFR_RNDN);
        mpfr_mul(r9477, r9475, r9476, MPFR_RNDN);
        mpfr_set_d(r9478, x_im, MPFR_RNDN);
        mpfr_set_d(r9479, y_im, MPFR_RNDN);
        mpfr_mul(r9480, r9478, r9479, MPFR_RNDN);
        mpfr_add(r9481, r9477, r9480, MPFR_RNDN);
        mpfr_mul(r9482, r9476, r9476, MPFR_RNDN);
        mpfr_mul(r9483, r9479, r9479, MPFR_RNDN);
        mpfr_add(r9484, r9482, r9483, MPFR_RNDN);
        mpfr_div(r9485, r9481, r9484, MPFR_RNDN);
        return mpfr_get_d(r9485, MPFR_RNDN);
}

static mpfr_t r9486, r9487, r9488, r9489, r9490, r9491, r9492, r9493, r9494, r9495, r9496, r9497, r9498;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9486);
        mpfr_init(r9487);
        mpfr_init(r9488);
        mpfr_init(r9489);
        mpfr_init(r9490);
        mpfr_init(r9491);
        mpfr_init(r9492);
        mpfr_init(r9493);
        mpfr_init(r9494);
        mpfr_init(r9495);
        mpfr_init(r9496);
        mpfr_init(r9497);
        mpfr_init(r9498);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9486, x_im, MPFR_RNDN);
        mpfr_set_d(r9487, y_im, MPFR_RNDN);
        mpfr_mul(r9488, r9486, r9487, MPFR_RNDN);
        mpfr_set_d(r9489, x_re, MPFR_RNDN);
        mpfr_set_d(r9490, y_re, MPFR_RNDN);
        mpfr_mul(r9491, r9489, r9490, MPFR_RNDN);
        mpfr_add(r9492, r9488, r9491, MPFR_RNDN);
        mpfr_mul(r9493, r9490, r9490, MPFR_RNDN);
        mpfr_mul(r9494, r9487, r9487, MPFR_RNDN);
        mpfr_add(r9495, r9493, r9494, MPFR_RNDN);
        mpfr_sqrt(r9496, r9495, MPFR_RNDN);
        mpfr_div(r9497, r9492, r9496, MPFR_RNDN);
        mpfr_div(r9498, r9497, r9496, MPFR_RNDN);
        return mpfr_get_d(r9498, MPFR_RNDN);
}

static mpfr_t r9499, r9500, r9501, r9502, r9503, r9504, r9505, r9506, r9507, r9508, r9509, r9510, r9511;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9499);
        mpfr_init(r9500);
        mpfr_init(r9501);
        mpfr_init(r9502);
        mpfr_init(r9503);
        mpfr_init(r9504);
        mpfr_init(r9505);
        mpfr_init(r9506);
        mpfr_init(r9507);
        mpfr_init(r9508);
        mpfr_init(r9509);
        mpfr_init(r9510);
        mpfr_init(r9511);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9499, x_im, MPFR_RNDN);
        mpfr_set_d(r9500, y_im, MPFR_RNDN);
        mpfr_mul(r9501, r9499, r9500, MPFR_RNDN);
        mpfr_set_d(r9502, x_re, MPFR_RNDN);
        mpfr_set_d(r9503, y_re, MPFR_RNDN);
        mpfr_mul(r9504, r9502, r9503, MPFR_RNDN);
        mpfr_add(r9505, r9501, r9504, MPFR_RNDN);
        mpfr_mul(r9506, r9503, r9503, MPFR_RNDN);
        mpfr_mul(r9507, r9500, r9500, MPFR_RNDN);
        mpfr_add(r9508, r9506, r9507, MPFR_RNDN);
        mpfr_sqrt(r9509, r9508, MPFR_RNDN);
        mpfr_div(r9510, r9505, r9509, MPFR_RNDN);
        mpfr_div(r9511, r9510, r9509, MPFR_RNDN);
        return mpfr_get_d(r9511, MPFR_RNDN);
}

