#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 r26062 = b;
        float r26063 = c;
        float r26064 = r26062 * r26063;
        float r26065 = a;
        float r26066 = d;
        float r26067 = r26065 * r26066;
        float r26068 = r26064 - r26067;
        float r26069 = r26063 * r26063;
        float r26070 = r26066 * r26066;
        float r26071 = r26069 + r26070;
        float r26072 = r26068 / r26071;
        return r26072;
}

double f_id(double a, double b, double c, double d) {
        double r26073 = b;
        double r26074 = c;
        double r26075 = r26073 * r26074;
        double r26076 = a;
        double r26077 = d;
        double r26078 = r26076 * r26077;
        double r26079 = r26075 - r26078;
        double r26080 = r26074 * r26074;
        double r26081 = r26077 * r26077;
        double r26082 = r26080 + r26081;
        double r26083 = r26079 / r26082;
        return r26083;
}


double f_of(float a, float b, float c, float d) {
        float r26084 = c;
        float r26085 = -1.1520322324160879e+160;
        bool r26086 = r26084 <= r26085;
        float r26087 = b;
        float r26088 = -r26087;
        float r26089 = d;
        float r26090 = hypot(r26084, r26089);
        float r26091 = r26088 / r26090;
        float r26092 = 2.2520925430106762e+114;
        bool r26093 = r26084 <= r26092;
        float r26094 = 1;
        float r26095 = r26094 / r26090;
        float r26096 = r26084 * r26087;
        float r26097 = a;
        float r26098 = r26097 * r26089;
        float r26099 = r26096 - r26098;
        float r26100 = r26099 / r26090;
        float r26101 = r26095 * r26100;
        float r26102 = r26097 / r26084;
        float r26103 = -r26089;
        float r26104 = fma(r26102, r26103, r26087);
        float r26105 = r26104 / r26090;
        float r26106 = r26093 ? r26101 : r26105;
        float r26107 = r26086 ? r26091 : r26106;
        return r26107;
}

double f_od(double a, double b, double c, double d) {
        double r26108 = c;
        double r26109 = -1.1520322324160879e+160;
        bool r26110 = r26108 <= r26109;
        double r26111 = b;
        double r26112 = -r26111;
        double r26113 = d;
        double r26114 = hypot(r26108, r26113);
        double r26115 = r26112 / r26114;
        double r26116 = 2.2520925430106762e+114;
        bool r26117 = r26108 <= r26116;
        double r26118 = 1;
        double r26119 = r26118 / r26114;
        double r26120 = r26108 * r26111;
        double r26121 = a;
        double r26122 = r26121 * r26113;
        double r26123 = r26120 - r26122;
        double r26124 = r26123 / r26114;
        double r26125 = r26119 * r26124;
        double r26126 = r26121 / r26108;
        double r26127 = -r26113;
        double r26128 = fma(r26126, r26127, r26111);
        double r26129 = r26128 / r26114;
        double r26130 = r26117 ? r26125 : r26129;
        double r26131 = r26110 ? r26115 : r26130;
        return r26131;
}

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 r26132, r26133, r26134, r26135, r26136, r26137, r26138, r26139, r26140, r26141, r26142;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r26132);
        mpfr_init(r26133);
        mpfr_init(r26134);
        mpfr_init(r26135);
        mpfr_init(r26136);
        mpfr_init(r26137);
        mpfr_init(r26138);
        mpfr_init(r26139);
        mpfr_init(r26140);
        mpfr_init(r26141);
        mpfr_init(r26142);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r26132, b, MPFR_RNDN);
        mpfr_set_d(r26133, c, MPFR_RNDN);
        mpfr_mul(r26134, r26132, r26133, MPFR_RNDN);
        mpfr_set_d(r26135, a, MPFR_RNDN);
        mpfr_set_d(r26136, d, MPFR_RNDN);
        mpfr_mul(r26137, r26135, r26136, MPFR_RNDN);
        mpfr_sub(r26138, r26134, r26137, MPFR_RNDN);
        mpfr_mul(r26139, r26133, r26133, MPFR_RNDN);
        mpfr_mul(r26140, r26136, r26136, MPFR_RNDN);
        mpfr_add(r26141, r26139, r26140, MPFR_RNDN);
        mpfr_div(r26142, r26138, r26141, MPFR_RNDN);
        return mpfr_get_d(r26142, MPFR_RNDN);
}

static mpfr_t r26143, r26144, r26145, r26146, r26147, r26148, r26149, r26150, r26151, r26152, r26153, r26154, r26155, r26156, r26157, r26158, r26159, r26160, r26161, r26162, r26163, r26164, r26165, r26166;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26143);
        mpfr_init_set_str(r26144, "-1.1520322324160879e+160", 10, MPFR_RNDN);
        mpfr_init(r26145);
        mpfr_init(r26146);
        mpfr_init(r26147);
        mpfr_init(r26148);
        mpfr_init(r26149);
        mpfr_init(r26150);
        mpfr_init_set_str(r26151, "2.2520925430106762e+114", 10, MPFR_RNDN);
        mpfr_init(r26152);
        mpfr_init_set_str(r26153, "1", 10, MPFR_RNDN);
        mpfr_init(r26154);
        mpfr_init(r26155);
        mpfr_init(r26156);
        mpfr_init(r26157);
        mpfr_init(r26158);
        mpfr_init(r26159);
        mpfr_init(r26160);
        mpfr_init(r26161);
        mpfr_init(r26162);
        mpfr_init(r26163);
        mpfr_init(r26164);
        mpfr_init(r26165);
        mpfr_init(r26166);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r26143, c, MPFR_RNDN);
        ;
        mpfr_set_si(r26145, mpfr_cmp(r26143, r26144) <= 0, MPFR_RNDN);
        mpfr_set_d(r26146, b, MPFR_RNDN);
        mpfr_neg(r26147, r26146, MPFR_RNDN);
        mpfr_set_d(r26148, d, MPFR_RNDN);
        mpfr_hypot(r26149, r26143, r26148, MPFR_RNDN);
        mpfr_div(r26150, r26147, r26149, MPFR_RNDN);
        ;
        mpfr_set_si(r26152, mpfr_cmp(r26143, r26151) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r26154, r26153, r26149, MPFR_RNDN);
        mpfr_mul(r26155, r26143, r26146, MPFR_RNDN);
        mpfr_set_d(r26156, a, MPFR_RNDN);
        mpfr_mul(r26157, r26156, r26148, MPFR_RNDN);
        mpfr_sub(r26158, r26155, r26157, MPFR_RNDN);
        mpfr_div(r26159, r26158, r26149, MPFR_RNDN);
        mpfr_mul(r26160, r26154, r26159, MPFR_RNDN);
        mpfr_div(r26161, r26156, r26143, MPFR_RNDN);
        mpfr_neg(r26162, r26148, MPFR_RNDN);
        mpfr_fma(r26163, r26161, r26162, r26146, MPFR_RNDN);
        mpfr_div(r26164, r26163, r26149, MPFR_RNDN);
        if (mpfr_get_si(r26152, MPFR_RNDN)) { mpfr_set(r26165, r26160, MPFR_RNDN); } else { mpfr_set(r26165, r26164, MPFR_RNDN); };
        if (mpfr_get_si(r26145, MPFR_RNDN)) { mpfr_set(r26166, r26150, MPFR_RNDN); } else { mpfr_set(r26166, r26165, MPFR_RNDN); };
        return mpfr_get_d(r26166, MPFR_RNDN);
}

static mpfr_t r26167, r26168, r26169, r26170, r26171, r26172, r26173, r26174, r26175, r26176, r26177, r26178, r26179, r26180, r26181, r26182, r26183, r26184, r26185, r26186, r26187, r26188, r26189, r26190;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26167);
        mpfr_init_set_str(r26168, "-1.1520322324160879e+160", 10, MPFR_RNDN);
        mpfr_init(r26169);
        mpfr_init(r26170);
        mpfr_init(r26171);
        mpfr_init(r26172);
        mpfr_init(r26173);
        mpfr_init(r26174);
        mpfr_init_set_str(r26175, "2.2520925430106762e+114", 10, MPFR_RNDN);
        mpfr_init(r26176);
        mpfr_init_set_str(r26177, "1", 10, MPFR_RNDN);
        mpfr_init(r26178);
        mpfr_init(r26179);
        mpfr_init(r26180);
        mpfr_init(r26181);
        mpfr_init(r26182);
        mpfr_init(r26183);
        mpfr_init(r26184);
        mpfr_init(r26185);
        mpfr_init(r26186);
        mpfr_init(r26187);
        mpfr_init(r26188);
        mpfr_init(r26189);
        mpfr_init(r26190);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r26167, c, MPFR_RNDN);
        ;
        mpfr_set_si(r26169, mpfr_cmp(r26167, r26168) <= 0, MPFR_RNDN);
        mpfr_set_d(r26170, b, MPFR_RNDN);
        mpfr_neg(r26171, r26170, MPFR_RNDN);
        mpfr_set_d(r26172, d, MPFR_RNDN);
        mpfr_hypot(r26173, r26167, r26172, MPFR_RNDN);
        mpfr_div(r26174, r26171, r26173, MPFR_RNDN);
        ;
        mpfr_set_si(r26176, mpfr_cmp(r26167, r26175) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r26178, r26177, r26173, MPFR_RNDN);
        mpfr_mul(r26179, r26167, r26170, MPFR_RNDN);
        mpfr_set_d(r26180, a, MPFR_RNDN);
        mpfr_mul(r26181, r26180, r26172, MPFR_RNDN);
        mpfr_sub(r26182, r26179, r26181, MPFR_RNDN);
        mpfr_div(r26183, r26182, r26173, MPFR_RNDN);
        mpfr_mul(r26184, r26178, r26183, MPFR_RNDN);
        mpfr_div(r26185, r26180, r26167, MPFR_RNDN);
        mpfr_neg(r26186, r26172, MPFR_RNDN);
        mpfr_fma(r26187, r26185, r26186, r26170, MPFR_RNDN);
        mpfr_div(r26188, r26187, r26173, MPFR_RNDN);
        if (mpfr_get_si(r26176, MPFR_RNDN)) { mpfr_set(r26189, r26184, MPFR_RNDN); } else { mpfr_set(r26189, r26188, MPFR_RNDN); };
        if (mpfr_get_si(r26169, MPFR_RNDN)) { mpfr_set(r26190, r26174, MPFR_RNDN); } else { mpfr_set(r26190, r26189, MPFR_RNDN); };
        return mpfr_get_d(r26190, MPFR_RNDN);
}

