#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 r26443 = b;
        float r26444 = c;
        float r26445 = r26443 * r26444;
        float r26446 = a;
        float r26447 = d;
        float r26448 = r26446 * r26447;
        float r26449 = r26445 - r26448;
        float r26450 = r26444 * r26444;
        float r26451 = r26447 * r26447;
        float r26452 = r26450 + r26451;
        float r26453 = r26449 / r26452;
        return r26453;
}

double f_id(double a, double b, double c, double d) {
        double r26454 = b;
        double r26455 = c;
        double r26456 = r26454 * r26455;
        double r26457 = a;
        double r26458 = d;
        double r26459 = r26457 * r26458;
        double r26460 = r26456 - r26459;
        double r26461 = r26455 * r26455;
        double r26462 = r26458 * r26458;
        double r26463 = r26461 + r26462;
        double r26464 = r26460 / r26463;
        return r26464;
}


double f_of(float a, float b, float c, float d) {
        float r26465 = c;
        float r26466 = -8.067379585100442e+133;
        bool r26467 = r26465 <= r26466;
        float r26468 = b;
        float r26469 = -r26468;
        float r26470 = d;
        float r26471 = hypot(r26465, r26470);
        float r26472 = r26469 / r26471;
        float r26473 = 4.9931064530560895e+116;
        bool r26474 = r26465 <= r26473;
        float r26475 = 1;
        float r26476 = r26475 / r26471;
        float r26477 = r26465 * r26468;
        float r26478 = a;
        float r26479 = r26478 * r26470;
        float r26480 = r26477 - r26479;
        float r26481 = r26480 * r26476;
        float r26482 = r26476 * r26481;
        float r26483 = r26478 / r26465;
        float r26484 = -r26470;
        float r26485 = fma(r26483, r26484, r26468);
        float r26486 = r26485 / r26471;
        float r26487 = r26474 ? r26482 : r26486;
        float r26488 = r26467 ? r26472 : r26487;
        return r26488;
}

double f_od(double a, double b, double c, double d) {
        double r26489 = c;
        double r26490 = -8.067379585100442e+133;
        bool r26491 = r26489 <= r26490;
        double r26492 = b;
        double r26493 = -r26492;
        double r26494 = d;
        double r26495 = hypot(r26489, r26494);
        double r26496 = r26493 / r26495;
        double r26497 = 4.9931064530560895e+116;
        bool r26498 = r26489 <= r26497;
        double r26499 = 1;
        double r26500 = r26499 / r26495;
        double r26501 = r26489 * r26492;
        double r26502 = a;
        double r26503 = r26502 * r26494;
        double r26504 = r26501 - r26503;
        double r26505 = r26504 * r26500;
        double r26506 = r26500 * r26505;
        double r26507 = r26502 / r26489;
        double r26508 = -r26494;
        double r26509 = fma(r26507, r26508, r26492);
        double r26510 = r26509 / r26495;
        double r26511 = r26498 ? r26506 : r26510;
        double r26512 = r26491 ? r26496 : r26511;
        return r26512;
}

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 r26513, r26514, r26515, r26516, r26517, r26518, r26519, r26520, r26521, r26522, r26523;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r26513);
        mpfr_init(r26514);
        mpfr_init(r26515);
        mpfr_init(r26516);
        mpfr_init(r26517);
        mpfr_init(r26518);
        mpfr_init(r26519);
        mpfr_init(r26520);
        mpfr_init(r26521);
        mpfr_init(r26522);
        mpfr_init(r26523);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r26513, b, MPFR_RNDN);
        mpfr_set_d(r26514, c, MPFR_RNDN);
        mpfr_mul(r26515, r26513, r26514, MPFR_RNDN);
        mpfr_set_d(r26516, a, MPFR_RNDN);
        mpfr_set_d(r26517, d, MPFR_RNDN);
        mpfr_mul(r26518, r26516, r26517, MPFR_RNDN);
        mpfr_sub(r26519, r26515, r26518, MPFR_RNDN);
        mpfr_mul(r26520, r26514, r26514, MPFR_RNDN);
        mpfr_mul(r26521, r26517, r26517, MPFR_RNDN);
        mpfr_add(r26522, r26520, r26521, MPFR_RNDN);
        mpfr_div(r26523, r26519, r26522, MPFR_RNDN);
        return mpfr_get_d(r26523, MPFR_RNDN);
}

static mpfr_t r26524, r26525, r26526, r26527, r26528, r26529, r26530, r26531, r26532, r26533, r26534, r26535, r26536, r26537, r26538, r26539, r26540, r26541, r26542, r26543, r26544, r26545, r26546, r26547;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r26524);
        mpfr_init_set_str(r26525, "-8.067379585100442e+133", 10, MPFR_RNDN);
        mpfr_init(r26526);
        mpfr_init(r26527);
        mpfr_init(r26528);
        mpfr_init(r26529);
        mpfr_init(r26530);
        mpfr_init(r26531);
        mpfr_init_set_str(r26532, "4.9931064530560895e+116", 10, MPFR_RNDN);
        mpfr_init(r26533);
        mpfr_init_set_str(r26534, "1", 10, MPFR_RNDN);
        mpfr_init(r26535);
        mpfr_init(r26536);
        mpfr_init(r26537);
        mpfr_init(r26538);
        mpfr_init(r26539);
        mpfr_init(r26540);
        mpfr_init(r26541);
        mpfr_init(r26542);
        mpfr_init(r26543);
        mpfr_init(r26544);
        mpfr_init(r26545);
        mpfr_init(r26546);
        mpfr_init(r26547);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r26524, c, MPFR_RNDN);
        ;
        mpfr_set_si(r26526, mpfr_cmp(r26524, r26525) <= 0, MPFR_RNDN);
        mpfr_set_d(r26527, b, MPFR_RNDN);
        mpfr_neg(r26528, r26527, MPFR_RNDN);
        mpfr_set_d(r26529, d, MPFR_RNDN);
        mpfr_hypot(r26530, r26524, r26529, MPFR_RNDN);
        mpfr_div(r26531, r26528, r26530, MPFR_RNDN);
        ;
        mpfr_set_si(r26533, mpfr_cmp(r26524, r26532) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r26535, r26534, r26530, MPFR_RNDN);
        mpfr_mul(r26536, r26524, r26527, MPFR_RNDN);
        mpfr_set_d(r26537, a, MPFR_RNDN);
        mpfr_mul(r26538, r26537, r26529, MPFR_RNDN);
        mpfr_sub(r26539, r26536, r26538, MPFR_RNDN);
        mpfr_mul(r26540, r26539, r26535, MPFR_RNDN);
        mpfr_mul(r26541, r26535, r26540, MPFR_RNDN);
        mpfr_div(r26542, r26537, r26524, MPFR_RNDN);
        mpfr_neg(r26543, r26529, MPFR_RNDN);
        mpfr_fma(r26544, r26542, r26543, r26527, MPFR_RNDN);
        mpfr_div(r26545, r26544, r26530, MPFR_RNDN);
        if (mpfr_get_si(r26533, MPFR_RNDN)) { mpfr_set(r26546, r26541, MPFR_RNDN); } else { mpfr_set(r26546, r26545, MPFR_RNDN); };
        if (mpfr_get_si(r26526, MPFR_RNDN)) { mpfr_set(r26547, r26531, MPFR_RNDN); } else { mpfr_set(r26547, r26546, MPFR_RNDN); };
        return mpfr_get_d(r26547, MPFR_RNDN);
}

static mpfr_t r26548, r26549, r26550, r26551, r26552, r26553, r26554, r26555, r26556, r26557, r26558, r26559, r26560, r26561, r26562, r26563, r26564, r26565, r26566, r26567, r26568, r26569, r26570, r26571;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r26548);
        mpfr_init_set_str(r26549, "-8.067379585100442e+133", 10, MPFR_RNDN);
        mpfr_init(r26550);
        mpfr_init(r26551);
        mpfr_init(r26552);
        mpfr_init(r26553);
        mpfr_init(r26554);
        mpfr_init(r26555);
        mpfr_init_set_str(r26556, "4.9931064530560895e+116", 10, MPFR_RNDN);
        mpfr_init(r26557);
        mpfr_init_set_str(r26558, "1", 10, MPFR_RNDN);
        mpfr_init(r26559);
        mpfr_init(r26560);
        mpfr_init(r26561);
        mpfr_init(r26562);
        mpfr_init(r26563);
        mpfr_init(r26564);
        mpfr_init(r26565);
        mpfr_init(r26566);
        mpfr_init(r26567);
        mpfr_init(r26568);
        mpfr_init(r26569);
        mpfr_init(r26570);
        mpfr_init(r26571);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r26548, c, MPFR_RNDN);
        ;
        mpfr_set_si(r26550, mpfr_cmp(r26548, r26549) <= 0, MPFR_RNDN);
        mpfr_set_d(r26551, b, MPFR_RNDN);
        mpfr_neg(r26552, r26551, MPFR_RNDN);
        mpfr_set_d(r26553, d, MPFR_RNDN);
        mpfr_hypot(r26554, r26548, r26553, MPFR_RNDN);
        mpfr_div(r26555, r26552, r26554, MPFR_RNDN);
        ;
        mpfr_set_si(r26557, mpfr_cmp(r26548, r26556) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r26559, r26558, r26554, MPFR_RNDN);
        mpfr_mul(r26560, r26548, r26551, MPFR_RNDN);
        mpfr_set_d(r26561, a, MPFR_RNDN);
        mpfr_mul(r26562, r26561, r26553, MPFR_RNDN);
        mpfr_sub(r26563, r26560, r26562, MPFR_RNDN);
        mpfr_mul(r26564, r26563, r26559, MPFR_RNDN);
        mpfr_mul(r26565, r26559, r26564, MPFR_RNDN);
        mpfr_div(r26566, r26561, r26548, MPFR_RNDN);
        mpfr_neg(r26567, r26553, MPFR_RNDN);
        mpfr_fma(r26568, r26566, r26567, r26551, MPFR_RNDN);
        mpfr_div(r26569, r26568, r26554, MPFR_RNDN);
        if (mpfr_get_si(r26557, MPFR_RNDN)) { mpfr_set(r26570, r26565, MPFR_RNDN); } else { mpfr_set(r26570, r26569, MPFR_RNDN); };
        if (mpfr_get_si(r26550, MPFR_RNDN)) { mpfr_set(r26571, r26555, MPFR_RNDN); } else { mpfr_set(r26571, r26570, MPFR_RNDN); };
        return mpfr_get_d(r26571, MPFR_RNDN);
}

