#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 r9303 = x_im;
        float r9304 = y_re;
        float r9305 = r9303 * r9304;
        float r9306 = x_re;
        float r9307 = y_im;
        float r9308 = r9306 * r9307;
        float r9309 = r9305 - r9308;
        float r9310 = r9304 * r9304;
        float r9311 = r9307 * r9307;
        float r9312 = r9310 + r9311;
        float r9313 = r9309 / r9312;
        return r9313;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r9314 = x_im;
        double r9315 = y_re;
        double r9316 = r9314 * r9315;
        double r9317 = x_re;
        double r9318 = y_im;
        double r9319 = r9317 * r9318;
        double r9320 = r9316 - r9319;
        double r9321 = r9315 * r9315;
        double r9322 = r9318 * r9318;
        double r9323 = r9321 + r9322;
        double r9324 = r9320 / r9323;
        return r9324;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r9325 = y_re;
        float r9326 = -3.3998435036601337e+186;
        bool r9327 = r9325 <= r9326;
        float r9328 = x_im;
        float r9329 = -r9328;
        float r9330 = y_im;
        float r9331 = hypot(r9325, r9330);
        float r9332 = r9329 / r9331;
        float r9333 = 1.1691508270322757e+79;
        bool r9334 = r9325 <= r9333;
        float r9335 = 1;
        float r9336 = r9335 / r9331;
        float r9337 = r9328 * r9325;
        float r9338 = x_re;
        float r9339 = r9338 * r9330;
        float r9340 = r9337 - r9339;
        float r9341 = r9340 / r9331;
        float r9342 = r9336 * r9341;
        float r9343 = r9328 / r9331;
        float r9344 = r9334 ? r9342 : r9343;
        float r9345 = r9327 ? r9332 : r9344;
        return r9345;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r9346 = y_re;
        double r9347 = -3.3998435036601337e+186;
        bool r9348 = r9346 <= r9347;
        double r9349 = x_im;
        double r9350 = -r9349;
        double r9351 = y_im;
        double r9352 = hypot(r9346, r9351);
        double r9353 = r9350 / r9352;
        double r9354 = 1.1691508270322757e+79;
        bool r9355 = r9346 <= r9354;
        double r9356 = 1;
        double r9357 = r9356 / r9352;
        double r9358 = r9349 * r9346;
        double r9359 = x_re;
        double r9360 = r9359 * r9351;
        double r9361 = r9358 - r9360;
        double r9362 = r9361 / r9352;
        double r9363 = r9357 * r9362;
        double r9364 = r9349 / r9352;
        double r9365 = r9355 ? r9363 : r9364;
        double r9366 = r9348 ? r9353 : r9365;
        return r9366;
}

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 r9367, r9368, r9369, r9370, r9371, r9372, r9373, r9374, r9375, r9376, r9377;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9367);
        mpfr_init(r9368);
        mpfr_init(r9369);
        mpfr_init(r9370);
        mpfr_init(r9371);
        mpfr_init(r9372);
        mpfr_init(r9373);
        mpfr_init(r9374);
        mpfr_init(r9375);
        mpfr_init(r9376);
        mpfr_init(r9377);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9367, x_im, MPFR_RNDN);
        mpfr_set_d(r9368, y_re, MPFR_RNDN);
        mpfr_mul(r9369, r9367, r9368, MPFR_RNDN);
        mpfr_set_d(r9370, x_re, MPFR_RNDN);
        mpfr_set_d(r9371, y_im, MPFR_RNDN);
        mpfr_mul(r9372, r9370, r9371, MPFR_RNDN);
        mpfr_sub(r9373, r9369, r9372, MPFR_RNDN);
        mpfr_mul(r9374, r9368, r9368, MPFR_RNDN);
        mpfr_mul(r9375, r9371, r9371, MPFR_RNDN);
        mpfr_add(r9376, r9374, r9375, MPFR_RNDN);
        mpfr_div(r9377, r9373, r9376, MPFR_RNDN);
        return mpfr_get_d(r9377, MPFR_RNDN);
}

static mpfr_t r9378, r9379, r9380, r9381, r9382, r9383, r9384, r9385, r9386, r9387, r9388, r9389, r9390, r9391, r9392, r9393, r9394, r9395, r9396, r9397, r9398;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9378);
        mpfr_init_set_str(r9379, "-3.3998435036601337e+186", 10, MPFR_RNDN);
        mpfr_init(r9380);
        mpfr_init(r9381);
        mpfr_init(r9382);
        mpfr_init(r9383);
        mpfr_init(r9384);
        mpfr_init(r9385);
        mpfr_init_set_str(r9386, "1.1691508270322757e+79", 10, MPFR_RNDN);
        mpfr_init(r9387);
        mpfr_init_set_str(r9388, "1", 10, MPFR_RNDN);
        mpfr_init(r9389);
        mpfr_init(r9390);
        mpfr_init(r9391);
        mpfr_init(r9392);
        mpfr_init(r9393);
        mpfr_init(r9394);
        mpfr_init(r9395);
        mpfr_init(r9396);
        mpfr_init(r9397);
        mpfr_init(r9398);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9378, y_re, MPFR_RNDN);
        ;
        mpfr_set_si(r9380, mpfr_cmp(r9378, r9379) <= 0, MPFR_RNDN);
        mpfr_set_d(r9381, x_im, MPFR_RNDN);
        mpfr_neg(r9382, r9381, MPFR_RNDN);
        mpfr_set_d(r9383, y_im, MPFR_RNDN);
        mpfr_hypot(r9384, r9378, r9383, MPFR_RNDN);
        mpfr_div(r9385, r9382, r9384, MPFR_RNDN);
        ;
        mpfr_set_si(r9387, mpfr_cmp(r9378, r9386) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9389, r9388, r9384, MPFR_RNDN);
        mpfr_mul(r9390, r9381, r9378, MPFR_RNDN);
        mpfr_set_d(r9391, x_re, MPFR_RNDN);
        mpfr_mul(r9392, r9391, r9383, MPFR_RNDN);
        mpfr_sub(r9393, r9390, r9392, MPFR_RNDN);
        mpfr_div(r9394, r9393, r9384, MPFR_RNDN);
        mpfr_mul(r9395, r9389, r9394, MPFR_RNDN);
        mpfr_div(r9396, r9381, r9384, MPFR_RNDN);
        if (mpfr_get_si(r9387, MPFR_RNDN)) { mpfr_set(r9397, r9395, MPFR_RNDN); } else { mpfr_set(r9397, r9396, MPFR_RNDN); };
        if (mpfr_get_si(r9380, MPFR_RNDN)) { mpfr_set(r9398, r9385, MPFR_RNDN); } else { mpfr_set(r9398, r9397, MPFR_RNDN); };
        return mpfr_get_d(r9398, MPFR_RNDN);
}

static mpfr_t r9399, r9400, r9401, r9402, r9403, r9404, r9405, r9406, r9407, r9408, r9409, r9410, r9411, r9412, r9413, r9414, r9415, r9416, r9417, r9418, r9419;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9399);
        mpfr_init_set_str(r9400, "-3.3998435036601337e+186", 10, MPFR_RNDN);
        mpfr_init(r9401);
        mpfr_init(r9402);
        mpfr_init(r9403);
        mpfr_init(r9404);
        mpfr_init(r9405);
        mpfr_init(r9406);
        mpfr_init_set_str(r9407, "1.1691508270322757e+79", 10, MPFR_RNDN);
        mpfr_init(r9408);
        mpfr_init_set_str(r9409, "1", 10, MPFR_RNDN);
        mpfr_init(r9410);
        mpfr_init(r9411);
        mpfr_init(r9412);
        mpfr_init(r9413);
        mpfr_init(r9414);
        mpfr_init(r9415);
        mpfr_init(r9416);
        mpfr_init(r9417);
        mpfr_init(r9418);
        mpfr_init(r9419);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9399, y_re, MPFR_RNDN);
        ;
        mpfr_set_si(r9401, mpfr_cmp(r9399, r9400) <= 0, MPFR_RNDN);
        mpfr_set_d(r9402, x_im, MPFR_RNDN);
        mpfr_neg(r9403, r9402, MPFR_RNDN);
        mpfr_set_d(r9404, y_im, MPFR_RNDN);
        mpfr_hypot(r9405, r9399, r9404, MPFR_RNDN);
        mpfr_div(r9406, r9403, r9405, MPFR_RNDN);
        ;
        mpfr_set_si(r9408, mpfr_cmp(r9399, r9407) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9410, r9409, r9405, MPFR_RNDN);
        mpfr_mul(r9411, r9402, r9399, MPFR_RNDN);
        mpfr_set_d(r9412, x_re, MPFR_RNDN);
        mpfr_mul(r9413, r9412, r9404, MPFR_RNDN);
        mpfr_sub(r9414, r9411, r9413, MPFR_RNDN);
        mpfr_div(r9415, r9414, r9405, MPFR_RNDN);
        mpfr_mul(r9416, r9410, r9415, MPFR_RNDN);
        mpfr_div(r9417, r9402, r9405, MPFR_RNDN);
        if (mpfr_get_si(r9408, MPFR_RNDN)) { mpfr_set(r9418, r9416, MPFR_RNDN); } else { mpfr_set(r9418, r9417, MPFR_RNDN); };
        if (mpfr_get_si(r9401, MPFR_RNDN)) { mpfr_set(r9419, r9406, MPFR_RNDN); } else { mpfr_set(r9419, r9418, MPFR_RNDN); };
        return mpfr_get_d(r9419, MPFR_RNDN);
}

