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

char *name = "_divideComplex, imaginary part";

double f_if(float x_re, float x_im, float y_re, float y_im) {
        float r9533 = x_im;
        float r9534 = y_re;
        float r9535 = r9533 * r9534;
        float r9536 = x_re;
        float r9537 = y_im;
        float r9538 = r9536 * r9537;
        float r9539 = r9535 - r9538;
        float r9540 = r9534 * r9534;
        float r9541 = r9537 * r9537;
        float r9542 = r9540 + r9541;
        float r9543 = r9539 / r9542;
        return r9543;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r9544 = x_im;
        double r9545 = y_re;
        double r9546 = r9544 * r9545;
        double r9547 = x_re;
        double r9548 = y_im;
        double r9549 = r9547 * r9548;
        double r9550 = r9546 - r9549;
        double r9551 = r9545 * r9545;
        double r9552 = r9548 * r9548;
        double r9553 = r9551 + r9552;
        double r9554 = r9550 / r9553;
        return r9554;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r9555 = x_im;
        float r9556 = y_re;
        float r9557 = r9556 * r9556;
        float r9558 = y_im;
        float r9559 = r9558 * r9558;
        float r9560 = r9557 + r9559;
        float r9561 = cbrt(r9560);
        float r9562 = r9561 * r9561;
        float r9563 = r9555 / r9562;
        float r9564 = r9556 / r9561;
        float r9565 = r9563 * r9564;
        float r9566 = x_re;
        float r9567 = sqrt(r9560);
        float r9568 = r9566 / r9567;
        float r9569 = r9558 / r9567;
        float r9570 = r9568 * r9569;
        float r9571 = r9565 - r9570;
        return r9571;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r9572 = x_im;
        double r9573 = y_re;
        double r9574 = r9573 * r9573;
        double r9575 = y_im;
        double r9576 = r9575 * r9575;
        double r9577 = r9574 + r9576;
        double r9578 = cbrt(r9577);
        double r9579 = r9578 * r9578;
        double r9580 = r9572 / r9579;
        double r9581 = r9573 / r9578;
        double r9582 = r9580 * r9581;
        double r9583 = x_re;
        double r9584 = sqrt(r9577);
        double r9585 = r9583 / r9584;
        double r9586 = r9575 / r9584;
        double r9587 = r9585 * r9586;
        double r9588 = r9582 - r9587;
        return r9588;
}

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 r9589, r9590, r9591, r9592, r9593, r9594, r9595, r9596, r9597, r9598, r9599;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9589);
        mpfr_init(r9590);
        mpfr_init(r9591);
        mpfr_init(r9592);
        mpfr_init(r9593);
        mpfr_init(r9594);
        mpfr_init(r9595);
        mpfr_init(r9596);
        mpfr_init(r9597);
        mpfr_init(r9598);
        mpfr_init(r9599);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9589, x_im, MPFR_RNDN);
        mpfr_set_d(r9590, y_re, MPFR_RNDN);
        mpfr_mul(r9591, r9589, r9590, MPFR_RNDN);
        mpfr_set_d(r9592, x_re, MPFR_RNDN);
        mpfr_set_d(r9593, y_im, MPFR_RNDN);
        mpfr_mul(r9594, r9592, r9593, MPFR_RNDN);
        mpfr_sub(r9595, r9591, r9594, MPFR_RNDN);
        mpfr_mul(r9596, r9590, r9590, MPFR_RNDN);
        mpfr_mul(r9597, r9593, r9593, MPFR_RNDN);
        mpfr_add(r9598, r9596, r9597, MPFR_RNDN);
        mpfr_div(r9599, r9595, r9598, MPFR_RNDN);
        return mpfr_get_d(r9599, MPFR_RNDN);
}

static mpfr_t r9600, r9601, r9602, r9603, r9604, r9605, r9606, r9607, r9608, r9609, r9610, r9611, r9612, r9613, r9614, r9615, r9616;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9600);
        mpfr_init(r9601);
        mpfr_init(r9602);
        mpfr_init(r9603);
        mpfr_init(r9604);
        mpfr_init(r9605);
        mpfr_init(r9606);
        mpfr_init(r9607);
        mpfr_init(r9608);
        mpfr_init(r9609);
        mpfr_init(r9610);
        mpfr_init(r9611);
        mpfr_init(r9612);
        mpfr_init(r9613);
        mpfr_init(r9614);
        mpfr_init(r9615);
        mpfr_init(r9616);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9600, x_im, MPFR_RNDN);
        mpfr_set_d(r9601, y_re, MPFR_RNDN);
        mpfr_mul(r9602, r9601, r9601, MPFR_RNDN);
        mpfr_set_d(r9603, y_im, MPFR_RNDN);
        mpfr_mul(r9604, r9603, r9603, MPFR_RNDN);
        mpfr_add(r9605, r9602, r9604, MPFR_RNDN);
        mpfr_cbrt(r9606, r9605, MPFR_RNDN);
        mpfr_mul(r9607, r9606, r9606, MPFR_RNDN);
        mpfr_div(r9608, r9600, r9607, MPFR_RNDN);
        mpfr_div(r9609, r9601, r9606, MPFR_RNDN);
        mpfr_mul(r9610, r9608, r9609, MPFR_RNDN);
        mpfr_set_d(r9611, x_re, MPFR_RNDN);
        mpfr_sqrt(r9612, r9605, MPFR_RNDN);
        mpfr_div(r9613, r9611, r9612, MPFR_RNDN);
        mpfr_div(r9614, r9603, r9612, MPFR_RNDN);
        mpfr_mul(r9615, r9613, r9614, MPFR_RNDN);
        mpfr_sub(r9616, r9610, r9615, MPFR_RNDN);
        return mpfr_get_d(r9616, MPFR_RNDN);
}

static mpfr_t r9617, r9618, r9619, r9620, r9621, r9622, r9623, r9624, r9625, r9626, r9627, r9628, r9629, r9630, r9631, r9632, r9633;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9617);
        mpfr_init(r9618);
        mpfr_init(r9619);
        mpfr_init(r9620);
        mpfr_init(r9621);
        mpfr_init(r9622);
        mpfr_init(r9623);
        mpfr_init(r9624);
        mpfr_init(r9625);
        mpfr_init(r9626);
        mpfr_init(r9627);
        mpfr_init(r9628);
        mpfr_init(r9629);
        mpfr_init(r9630);
        mpfr_init(r9631);
        mpfr_init(r9632);
        mpfr_init(r9633);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9617, x_im, MPFR_RNDN);
        mpfr_set_d(r9618, y_re, MPFR_RNDN);
        mpfr_mul(r9619, r9618, r9618, MPFR_RNDN);
        mpfr_set_d(r9620, y_im, MPFR_RNDN);
        mpfr_mul(r9621, r9620, r9620, MPFR_RNDN);
        mpfr_add(r9622, r9619, r9621, MPFR_RNDN);
        mpfr_cbrt(r9623, r9622, MPFR_RNDN);
        mpfr_mul(r9624, r9623, r9623, MPFR_RNDN);
        mpfr_div(r9625, r9617, r9624, MPFR_RNDN);
        mpfr_div(r9626, r9618, r9623, MPFR_RNDN);
        mpfr_mul(r9627, r9625, r9626, MPFR_RNDN);
        mpfr_set_d(r9628, x_re, MPFR_RNDN);
        mpfr_sqrt(r9629, r9622, MPFR_RNDN);
        mpfr_div(r9630, r9628, r9629, MPFR_RNDN);
        mpfr_div(r9631, r9620, r9629, MPFR_RNDN);
        mpfr_mul(r9632, r9630, r9631, MPFR_RNDN);
        mpfr_sub(r9633, r9627, r9632, MPFR_RNDN);
        return mpfr_get_d(r9633, MPFR_RNDN);
}

