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

char *name = "Complex division, imag part";

double f_if(float a, float b, float c, float d) {
        float r26341 = b;
        float r26342 = c;
        float r26343 = r26341 * r26342;
        float r26344 = a;
        float r26345 = d;
        float r26346 = r26344 * r26345;
        float r26347 = r26343 - r26346;
        float r26348 = r26342 * r26342;
        float r26349 = r26345 * r26345;
        float r26350 = r26348 + r26349;
        float r26351 = r26347 / r26350;
        return r26351;
}

double f_id(double a, double b, double c, double d) {
        double r26352 = b;
        double r26353 = c;
        double r26354 = r26352 * r26353;
        double r26355 = a;
        double r26356 = d;
        double r26357 = r26355 * r26356;
        double r26358 = r26354 - r26357;
        double r26359 = r26353 * r26353;
        double r26360 = r26356 * r26356;
        double r26361 = r26359 + r26360;
        double r26362 = r26358 / r26361;
        return r26362;
}


double f_of(float a, float b, float c, float d) {
        float r26363 = 1;
        float r26364 = c;
        float r26365 = d;
        float r26366 = hypot(r26364, r26365);
        float r26367 = r26363 / r26366;
        float r26368 = sqrt(r26367);
        float r26369 = b;
        float r26370 = r26364 * r26369;
        float r26371 = a;
        float r26372 = r26371 * r26365;
        float r26373 = r26370 - r26372;
        float r26374 = r26373 / r26366;
        float r26375 = r26368 * r26374;
        float r26376 = r26368 * r26375;
        float r26377 = -1.7761824129243311e+308;
        bool r26378 = r26376 <= r26377;
        float r26379 = r26364 / r26365;
        float r26380 = -r26371;
        float r26381 = fma(r26379, r26369, r26380);
        float r26382 = r26381 / r26366;
        float r26383 = 1.7795226370784402e+308;
        bool r26384 = r26376 <= r26383;
        float r26385 = r26369 * r26364;
        float r26386 = r26385 - r26372;
        float r26387 = r26386 / r26366;
        float r26388 = r26387 / r26366;
        float r26389 = r26384 ? r26388 : r26382;
        float r26390 = r26378 ? r26382 : r26389;
        return r26390;
}

double f_od(double a, double b, double c, double d) {
        double r26391 = 1;
        double r26392 = c;
        double r26393 = d;
        double r26394 = hypot(r26392, r26393);
        double r26395 = r26391 / r26394;
        double r26396 = sqrt(r26395);
        double r26397 = b;
        double r26398 = r26392 * r26397;
        double r26399 = a;
        double r26400 = r26399 * r26393;
        double r26401 = r26398 - r26400;
        double r26402 = r26401 / r26394;
        double r26403 = r26396 * r26402;
        double r26404 = r26396 * r26403;
        double r26405 = -1.7761824129243311e+308;
        bool r26406 = r26404 <= r26405;
        double r26407 = r26392 / r26393;
        double r26408 = -r26399;
        double r26409 = fma(r26407, r26397, r26408);
        double r26410 = r26409 / r26394;
        double r26411 = 1.7795226370784402e+308;
        bool r26412 = r26404 <= r26411;
        double r26413 = r26397 * r26392;
        double r26414 = r26413 - r26400;
        double r26415 = r26414 / r26394;
        double r26416 = r26415 / r26394;
        double r26417 = r26412 ? r26416 : r26410;
        double r26418 = r26406 ? r26410 : r26417;
        return r26418;
}

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 r26419, r26420, r26421, r26422, r26423, r26424, r26425, r26426, r26427, r26428, r26429;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r26419);
        mpfr_init(r26420);
        mpfr_init(r26421);
        mpfr_init(r26422);
        mpfr_init(r26423);
        mpfr_init(r26424);
        mpfr_init(r26425);
        mpfr_init(r26426);
        mpfr_init(r26427);
        mpfr_init(r26428);
        mpfr_init(r26429);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r26419, b, MPFR_RNDN);
        mpfr_set_d(r26420, c, MPFR_RNDN);
        mpfr_mul(r26421, r26419, r26420, MPFR_RNDN);
        mpfr_set_d(r26422, a, MPFR_RNDN);
        mpfr_set_d(r26423, d, MPFR_RNDN);
        mpfr_mul(r26424, r26422, r26423, MPFR_RNDN);
        mpfr_sub(r26425, r26421, r26424, MPFR_RNDN);
        mpfr_mul(r26426, r26420, r26420, MPFR_RNDN);
        mpfr_mul(r26427, r26423, r26423, MPFR_RNDN);
        mpfr_add(r26428, r26426, r26427, MPFR_RNDN);
        mpfr_div(r26429, r26425, r26428, MPFR_RNDN);
        return mpfr_get_d(r26429, MPFR_RNDN);
}

static mpfr_t r26430, r26431, r26432, r26433, r26434, r26435, r26436, r26437, r26438, r26439, r26440, r26441, r26442, r26443, r26444, r26445, r26446, r26447, r26448, r26449, r26450, r26451, r26452, r26453, r26454, r26455, r26456, r26457;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26430, "1", 10, MPFR_RNDN);
        mpfr_init(r26431);
        mpfr_init(r26432);
        mpfr_init(r26433);
        mpfr_init(r26434);
        mpfr_init(r26435);
        mpfr_init(r26436);
        mpfr_init(r26437);
        mpfr_init(r26438);
        mpfr_init(r26439);
        mpfr_init(r26440);
        mpfr_init(r26441);
        mpfr_init(r26442);
        mpfr_init(r26443);
        mpfr_init_set_str(r26444, "-1.7761824129243311e+308", 10, MPFR_RNDN);
        mpfr_init(r26445);
        mpfr_init(r26446);
        mpfr_init(r26447);
        mpfr_init(r26448);
        mpfr_init(r26449);
        mpfr_init_set_str(r26450, "1.7795226370784402e+308", 10, MPFR_RNDN);
        mpfr_init(r26451);
        mpfr_init(r26452);
        mpfr_init(r26453);
        mpfr_init(r26454);
        mpfr_init(r26455);
        mpfr_init(r26456);
        mpfr_init(r26457);
}

double f_fm(double a, double b, double c, double d) {
        ;
        mpfr_set_d(r26431, c, MPFR_RNDN);
        mpfr_set_d(r26432, d, MPFR_RNDN);
        mpfr_hypot(r26433, r26431, r26432, MPFR_RNDN);
        mpfr_div(r26434, r26430, r26433, MPFR_RNDN);
        mpfr_sqrt(r26435, r26434, MPFR_RNDN);
        mpfr_set_d(r26436, b, MPFR_RNDN);
        mpfr_mul(r26437, r26431, r26436, MPFR_RNDN);
        mpfr_set_d(r26438, a, MPFR_RNDN);
        mpfr_mul(r26439, r26438, r26432, MPFR_RNDN);
        mpfr_sub(r26440, r26437, r26439, MPFR_RNDN);
        mpfr_div(r26441, r26440, r26433, MPFR_RNDN);
        mpfr_mul(r26442, r26435, r26441, MPFR_RNDN);
        mpfr_mul(r26443, r26435, r26442, MPFR_RNDN);
        ;
        mpfr_set_si(r26445, mpfr_cmp(r26443, r26444) <= 0, MPFR_RNDN);
        mpfr_div(r26446, r26431, r26432, MPFR_RNDN);
        mpfr_neg(r26447, r26438, MPFR_RNDN);
        mpfr_fma(r26448, r26446, r26436, r26447, MPFR_RNDN);
        mpfr_div(r26449, r26448, r26433, MPFR_RNDN);
        ;
        mpfr_set_si(r26451, mpfr_cmp(r26443, r26450) <= 0, MPFR_RNDN);
        mpfr_mul(r26452, r26436, r26431, MPFR_RNDN);
        mpfr_sub(r26453, r26452, r26439, MPFR_RNDN);
        mpfr_div(r26454, r26453, r26433, MPFR_RNDN);
        mpfr_div(r26455, r26454, r26433, MPFR_RNDN);
        if (mpfr_get_si(r26451, MPFR_RNDN)) { mpfr_set(r26456, r26455, MPFR_RNDN); } else { mpfr_set(r26456, r26449, MPFR_RNDN); };
        if (mpfr_get_si(r26445, MPFR_RNDN)) { mpfr_set(r26457, r26449, MPFR_RNDN); } else { mpfr_set(r26457, r26456, MPFR_RNDN); };
        return mpfr_get_d(r26457, MPFR_RNDN);
}

static mpfr_t r26458, r26459, r26460, r26461, r26462, r26463, r26464, r26465, r26466, r26467, r26468, r26469, r26470, r26471, r26472, r26473, r26474, r26475, r26476, r26477, r26478, r26479, r26480, r26481, r26482, r26483, r26484, r26485;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26458, "1", 10, MPFR_RNDN);
        mpfr_init(r26459);
        mpfr_init(r26460);
        mpfr_init(r26461);
        mpfr_init(r26462);
        mpfr_init(r26463);
        mpfr_init(r26464);
        mpfr_init(r26465);
        mpfr_init(r26466);
        mpfr_init(r26467);
        mpfr_init(r26468);
        mpfr_init(r26469);
        mpfr_init(r26470);
        mpfr_init(r26471);
        mpfr_init_set_str(r26472, "-1.7761824129243311e+308", 10, MPFR_RNDN);
        mpfr_init(r26473);
        mpfr_init(r26474);
        mpfr_init(r26475);
        mpfr_init(r26476);
        mpfr_init(r26477);
        mpfr_init_set_str(r26478, "1.7795226370784402e+308", 10, MPFR_RNDN);
        mpfr_init(r26479);
        mpfr_init(r26480);
        mpfr_init(r26481);
        mpfr_init(r26482);
        mpfr_init(r26483);
        mpfr_init(r26484);
        mpfr_init(r26485);
}

double f_dm(double a, double b, double c, double d) {
        ;
        mpfr_set_d(r26459, c, MPFR_RNDN);
        mpfr_set_d(r26460, d, MPFR_RNDN);
        mpfr_hypot(r26461, r26459, r26460, MPFR_RNDN);
        mpfr_div(r26462, r26458, r26461, MPFR_RNDN);
        mpfr_sqrt(r26463, r26462, MPFR_RNDN);
        mpfr_set_d(r26464, b, MPFR_RNDN);
        mpfr_mul(r26465, r26459, r26464, MPFR_RNDN);
        mpfr_set_d(r26466, a, MPFR_RNDN);
        mpfr_mul(r26467, r26466, r26460, MPFR_RNDN);
        mpfr_sub(r26468, r26465, r26467, MPFR_RNDN);
        mpfr_div(r26469, r26468, r26461, MPFR_RNDN);
        mpfr_mul(r26470, r26463, r26469, MPFR_RNDN);
        mpfr_mul(r26471, r26463, r26470, MPFR_RNDN);
        ;
        mpfr_set_si(r26473, mpfr_cmp(r26471, r26472) <= 0, MPFR_RNDN);
        mpfr_div(r26474, r26459, r26460, MPFR_RNDN);
        mpfr_neg(r26475, r26466, MPFR_RNDN);
        mpfr_fma(r26476, r26474, r26464, r26475, MPFR_RNDN);
        mpfr_div(r26477, r26476, r26461, MPFR_RNDN);
        ;
        mpfr_set_si(r26479, mpfr_cmp(r26471, r26478) <= 0, MPFR_RNDN);
        mpfr_mul(r26480, r26464, r26459, MPFR_RNDN);
        mpfr_sub(r26481, r26480, r26467, MPFR_RNDN);
        mpfr_div(r26482, r26481, r26461, MPFR_RNDN);
        mpfr_div(r26483, r26482, r26461, MPFR_RNDN);
        if (mpfr_get_si(r26479, MPFR_RNDN)) { mpfr_set(r26484, r26483, MPFR_RNDN); } else { mpfr_set(r26484, r26477, MPFR_RNDN); };
        if (mpfr_get_si(r26473, MPFR_RNDN)) { mpfr_set(r26485, r26477, MPFR_RNDN); } else { mpfr_set(r26485, r26484, MPFR_RNDN); };
        return mpfr_get_d(r26485, MPFR_RNDN);
}

