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

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

double f_if(float a, float b, float c, float d) {
        float r10133 = a;
        float r10134 = c;
        float r10135 = r10133 * r10134;
        float r10136 = b;
        float r10137 = d;
        float r10138 = r10136 * r10137;
        float r10139 = r10135 + r10138;
        float r10140 = r10134 * r10134;
        float r10141 = r10137 * r10137;
        float r10142 = r10140 + r10141;
        float r10143 = r10139 / r10142;
        return r10143;
}

double f_id(double a, double b, double c, double d) {
        double r10144 = a;
        double r10145 = c;
        double r10146 = r10144 * r10145;
        double r10147 = b;
        double r10148 = d;
        double r10149 = r10147 * r10148;
        double r10150 = r10146 + r10149;
        double r10151 = r10145 * r10145;
        double r10152 = r10148 * r10148;
        double r10153 = r10151 + r10152;
        double r10154 = r10150 / r10153;
        return r10154;
}


double f_of(float a, float b, float c, float d) {
        float r10155 = d;
        float r10156 = 2.287685333116204e+71;
        bool r10157 = r10155 <= r10156;
        float r10158 = a;
        float r10159 = c;
        float r10160 = r10158 * r10159;
        float r10161 = b;
        float r10162 = r10161 * r10155;
        float r10163 = r10160 + r10162;
        float r10164 = r10159 * r10159;
        float r10165 = r10155 * r10155;
        float r10166 = r10164 + r10165;
        float r10167 = sqrt(r10166);
        float r10168 = r10163 / r10167;
        float r10169 = r10168 / r10167;
        float r10170 = 2.6646868450529295e+148;
        bool r10171 = r10155 <= r10170;
        float r10172 = r10161 / r10167;
        float r10173 = cbrt(r10163);
        float r10174 = r10173 * r10173;
        float r10175 = cbrt(r10166);
        float r10176 = r10175 * r10175;
        float r10177 = r10174 / r10176;
        float r10178 = r10173 / r10175;
        float r10179 = r10177 * r10178;
        float r10180 = r10171 ? r10172 : r10179;
        float r10181 = r10157 ? r10169 : r10180;
        return r10181;
}

double f_od(double a, double b, double c, double d) {
        double r10182 = d;
        double r10183 = 2.287685333116204e+71;
        bool r10184 = r10182 <= r10183;
        double r10185 = a;
        double r10186 = c;
        double r10187 = r10185 * r10186;
        double r10188 = b;
        double r10189 = r10188 * r10182;
        double r10190 = r10187 + r10189;
        double r10191 = r10186 * r10186;
        double r10192 = r10182 * r10182;
        double r10193 = r10191 + r10192;
        double r10194 = sqrt(r10193);
        double r10195 = r10190 / r10194;
        double r10196 = r10195 / r10194;
        double r10197 = 2.6646868450529295e+148;
        bool r10198 = r10182 <= r10197;
        double r10199 = r10188 / r10194;
        double r10200 = cbrt(r10190);
        double r10201 = r10200 * r10200;
        double r10202 = cbrt(r10193);
        double r10203 = r10202 * r10202;
        double r10204 = r10201 / r10203;
        double r10205 = r10200 / r10202;
        double r10206 = r10204 * r10205;
        double r10207 = r10198 ? r10199 : r10206;
        double r10208 = r10184 ? r10196 : r10207;
        return r10208;
}

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 r10209, r10210, r10211, r10212, r10213, r10214, r10215, r10216, r10217, r10218, r10219;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r10209);
        mpfr_init(r10210);
        mpfr_init(r10211);
        mpfr_init(r10212);
        mpfr_init(r10213);
        mpfr_init(r10214);
        mpfr_init(r10215);
        mpfr_init(r10216);
        mpfr_init(r10217);
        mpfr_init(r10218);
        mpfr_init(r10219);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r10209, a, MPFR_RNDN);
        mpfr_set_d(r10210, c, MPFR_RNDN);
        mpfr_mul(r10211, r10209, r10210, MPFR_RNDN);
        mpfr_set_d(r10212, b, MPFR_RNDN);
        mpfr_set_d(r10213, d, MPFR_RNDN);
        mpfr_mul(r10214, r10212, r10213, MPFR_RNDN);
        mpfr_add(r10215, r10211, r10214, MPFR_RNDN);
        mpfr_mul(r10216, r10210, r10210, MPFR_RNDN);
        mpfr_mul(r10217, r10213, r10213, MPFR_RNDN);
        mpfr_add(r10218, r10216, r10217, MPFR_RNDN);
        mpfr_div(r10219, r10215, r10218, MPFR_RNDN);
        return mpfr_get_d(r10219, MPFR_RNDN);
}

static mpfr_t r10220, r10221, r10222, r10223, r10224, r10225, r10226, r10227, r10228, r10229, r10230, r10231, r10232, r10233, r10234, r10235, r10236, r10237, r10238, r10239, r10240, r10241, r10242, r10243, r10244, r10245, r10246;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10220);
        mpfr_init_set_str(r10221, "2.287685333116204e+71", 10, MPFR_RNDN);
        mpfr_init(r10222);
        mpfr_init(r10223);
        mpfr_init(r10224);
        mpfr_init(r10225);
        mpfr_init(r10226);
        mpfr_init(r10227);
        mpfr_init(r10228);
        mpfr_init(r10229);
        mpfr_init(r10230);
        mpfr_init(r10231);
        mpfr_init(r10232);
        mpfr_init(r10233);
        mpfr_init(r10234);
        mpfr_init_set_str(r10235, "2.6646868450529295e+148", 10, MPFR_RNDN);
        mpfr_init(r10236);
        mpfr_init(r10237);
        mpfr_init(r10238);
        mpfr_init(r10239);
        mpfr_init(r10240);
        mpfr_init(r10241);
        mpfr_init(r10242);
        mpfr_init(r10243);
        mpfr_init(r10244);
        mpfr_init(r10245);
        mpfr_init(r10246);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r10220, d, MPFR_RNDN);
        ;
        mpfr_set_si(r10222, mpfr_cmp(r10220, r10221) <= 0, MPFR_RNDN);
        mpfr_set_d(r10223, a, MPFR_RNDN);
        mpfr_set_d(r10224, c, MPFR_RNDN);
        mpfr_mul(r10225, r10223, r10224, MPFR_RNDN);
        mpfr_set_d(r10226, b, MPFR_RNDN);
        mpfr_mul(r10227, r10226, r10220, MPFR_RNDN);
        mpfr_add(r10228, r10225, r10227, MPFR_RNDN);
        mpfr_mul(r10229, r10224, r10224, MPFR_RNDN);
        mpfr_mul(r10230, r10220, r10220, MPFR_RNDN);
        mpfr_add(r10231, r10229, r10230, MPFR_RNDN);
        mpfr_sqrt(r10232, r10231, MPFR_RNDN);
        mpfr_div(r10233, r10228, r10232, MPFR_RNDN);
        mpfr_div(r10234, r10233, r10232, MPFR_RNDN);
        ;
        mpfr_set_si(r10236, mpfr_cmp(r10220, r10235) <= 0, MPFR_RNDN);
        mpfr_div(r10237, r10226, r10232, MPFR_RNDN);
        mpfr_cbrt(r10238, r10228, MPFR_RNDN);
        mpfr_mul(r10239, r10238, r10238, MPFR_RNDN);
        mpfr_cbrt(r10240, r10231, MPFR_RNDN);
        mpfr_mul(r10241, r10240, r10240, MPFR_RNDN);
        mpfr_div(r10242, r10239, r10241, MPFR_RNDN);
        mpfr_div(r10243, r10238, r10240, MPFR_RNDN);
        mpfr_mul(r10244, r10242, r10243, MPFR_RNDN);
        if (mpfr_get_si(r10236, MPFR_RNDN)) { mpfr_set(r10245, r10237, MPFR_RNDN); } else { mpfr_set(r10245, r10244, MPFR_RNDN); };
        if (mpfr_get_si(r10222, MPFR_RNDN)) { mpfr_set(r10246, r10234, MPFR_RNDN); } else { mpfr_set(r10246, r10245, MPFR_RNDN); };
        return mpfr_get_d(r10246, MPFR_RNDN);
}

static mpfr_t r10247, r10248, r10249, r10250, r10251, r10252, r10253, r10254, r10255, r10256, r10257, r10258, r10259, r10260, r10261, r10262, r10263, r10264, r10265, r10266, r10267, r10268, r10269, r10270, r10271, r10272, r10273;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10247);
        mpfr_init_set_str(r10248, "2.287685333116204e+71", 10, MPFR_RNDN);
        mpfr_init(r10249);
        mpfr_init(r10250);
        mpfr_init(r10251);
        mpfr_init(r10252);
        mpfr_init(r10253);
        mpfr_init(r10254);
        mpfr_init(r10255);
        mpfr_init(r10256);
        mpfr_init(r10257);
        mpfr_init(r10258);
        mpfr_init(r10259);
        mpfr_init(r10260);
        mpfr_init(r10261);
        mpfr_init_set_str(r10262, "2.6646868450529295e+148", 10, MPFR_RNDN);
        mpfr_init(r10263);
        mpfr_init(r10264);
        mpfr_init(r10265);
        mpfr_init(r10266);
        mpfr_init(r10267);
        mpfr_init(r10268);
        mpfr_init(r10269);
        mpfr_init(r10270);
        mpfr_init(r10271);
        mpfr_init(r10272);
        mpfr_init(r10273);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r10247, d, MPFR_RNDN);
        ;
        mpfr_set_si(r10249, mpfr_cmp(r10247, r10248) <= 0, MPFR_RNDN);
        mpfr_set_d(r10250, a, MPFR_RNDN);
        mpfr_set_d(r10251, c, MPFR_RNDN);
        mpfr_mul(r10252, r10250, r10251, MPFR_RNDN);
        mpfr_set_d(r10253, b, MPFR_RNDN);
        mpfr_mul(r10254, r10253, r10247, MPFR_RNDN);
        mpfr_add(r10255, r10252, r10254, MPFR_RNDN);
        mpfr_mul(r10256, r10251, r10251, MPFR_RNDN);
        mpfr_mul(r10257, r10247, r10247, MPFR_RNDN);
        mpfr_add(r10258, r10256, r10257, MPFR_RNDN);
        mpfr_sqrt(r10259, r10258, MPFR_RNDN);
        mpfr_div(r10260, r10255, r10259, MPFR_RNDN);
        mpfr_div(r10261, r10260, r10259, MPFR_RNDN);
        ;
        mpfr_set_si(r10263, mpfr_cmp(r10247, r10262) <= 0, MPFR_RNDN);
        mpfr_div(r10264, r10253, r10259, MPFR_RNDN);
        mpfr_cbrt(r10265, r10255, MPFR_RNDN);
        mpfr_mul(r10266, r10265, r10265, MPFR_RNDN);
        mpfr_cbrt(r10267, r10258, MPFR_RNDN);
        mpfr_mul(r10268, r10267, r10267, MPFR_RNDN);
        mpfr_div(r10269, r10266, r10268, MPFR_RNDN);
        mpfr_div(r10270, r10265, r10267, MPFR_RNDN);
        mpfr_mul(r10271, r10269, r10270, MPFR_RNDN);
        if (mpfr_get_si(r10263, MPFR_RNDN)) { mpfr_set(r10272, r10264, MPFR_RNDN); } else { mpfr_set(r10272, r10271, MPFR_RNDN); };
        if (mpfr_get_si(r10249, MPFR_RNDN)) { mpfr_set(r10273, r10261, MPFR_RNDN); } else { mpfr_set(r10273, r10272, MPFR_RNDN); };
        return mpfr_get_d(r10273, MPFR_RNDN);
}

