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

char *name = "math.sqrt on complex, real part";

double f_if(float re, float im) {
        float r11207 = 0.5f;
        float r11208 = 2.0f;
        float r11209 = re;
        float r11210 = r11209 * r11209;
        float r11211 = im;
        float r11212 = r11211 * r11211;
        float r11213 = r11210 + r11212;
        float r11214 = sqrt(r11213);
        float r11215 = r11214 + r11209;
        float r11216 = r11208 * r11215;
        float r11217 = sqrt(r11216);
        float r11218 = r11207 * r11217;
        return r11218;
}

double f_id(double re, double im) {
        double r11219 = 0.5;
        double r11220 = 2.0;
        double r11221 = re;
        double r11222 = r11221 * r11221;
        double r11223 = im;
        double r11224 = r11223 * r11223;
        double r11225 = r11222 + r11224;
        double r11226 = sqrt(r11225);
        double r11227 = r11226 + r11221;
        double r11228 = r11220 * r11227;
        double r11229 = sqrt(r11228);
        double r11230 = r11219 * r11229;
        return r11230;
}


double f_of(float re, float im) {
        float r11231 = 0.5f;
        float r11232 = re;
        float r11233 = im;
        float r11234 = hypot(r11232, r11233);
        float r11235 = 2.0f;
        float r11236 = r11232 * r11235;
        float r11237 = fma(r11234, r11235, r11236);
        float r11238 = cbrt(r11237);
        float r11239 = r11238 * r11238;
        float r11240 = r11238 * r11239;
        float r11241 = sqrt(r11240);
        float r11242 = r11231 * r11241;
        float r11243 = 3.76690728889376e-310f;
        bool r11244 = r11242 <= r11243;
        float r11245 = -1.0f;
        float r11246 = r11245 / r11232;
        float r11247 = r11245 / r11233;
        float r11248 = r11246 / r11247;
        float r11249 = 1.0f;
        float r11250 = r11249 / r11247;
        float r11251 = r11248 * r11250;
        float r11252 = sqrt(r11251);
        float r11253 = r11252 * r11231;
        float r11254 = sqrt(r11237);
        float r11255 = r11254 * r11231;
        float r11256 = r11244 ? r11253 : r11255;
        return r11256;
}

double f_od(double re, double im) {
        double r11257 = 0.5;
        double r11258 = re;
        double r11259 = im;
        double r11260 = hypot(r11258, r11259);
        double r11261 = 2.0;
        double r11262 = r11258 * r11261;
        double r11263 = fma(r11260, r11261, r11262);
        double r11264 = cbrt(r11263);
        double r11265 = r11264 * r11264;
        double r11266 = r11264 * r11265;
        double r11267 = sqrt(r11266);
        double r11268 = r11257 * r11267;
        double r11269 = 3.76690728889376e-310;
        bool r11270 = r11268 <= r11269;
        double r11271 = -1.0;
        double r11272 = r11271 / r11258;
        double r11273 = r11271 / r11259;
        double r11274 = r11272 / r11273;
        double r11275 = 1.0;
        double r11276 = r11275 / r11273;
        double r11277 = r11274 * r11276;
        double r11278 = sqrt(r11277);
        double r11279 = r11278 * r11257;
        double r11280 = sqrt(r11263);
        double r11281 = r11280 * r11257;
        double r11282 = r11270 ? r11279 : r11281;
        return r11282;
}

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 r11283, r11284, r11285, r11286, r11287, r11288, r11289, r11290, r11291, r11292, r11293, r11294;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r11283, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r11284, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11285);
        mpfr_init(r11286);
        mpfr_init(r11287);
        mpfr_init(r11288);
        mpfr_init(r11289);
        mpfr_init(r11290);
        mpfr_init(r11291);
        mpfr_init(r11292);
        mpfr_init(r11293);
        mpfr_init(r11294);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r11285, re, MPFR_RNDN);
        mpfr_mul(r11286, r11285, r11285, MPFR_RNDN);
        mpfr_set_d(r11287, im, MPFR_RNDN);
        mpfr_mul(r11288, r11287, r11287, MPFR_RNDN);
        mpfr_add(r11289, r11286, r11288, MPFR_RNDN);
        mpfr_sqrt(r11290, r11289, MPFR_RNDN);
        mpfr_add(r11291, r11290, r11285, MPFR_RNDN);
        mpfr_mul(r11292, r11284, r11291, MPFR_RNDN);
        mpfr_sqrt(r11293, r11292, MPFR_RNDN);
        mpfr_mul(r11294, r11283, r11293, MPFR_RNDN);
        return mpfr_get_d(r11294, MPFR_RNDN);
}

static mpfr_t r11295, r11296, r11297, r11298, r11299, r11300, r11301, r11302, r11303, r11304, r11305, r11306, r11307, r11308, r11309, r11310, r11311, r11312, r11313, r11314, r11315, r11316, r11317, r11318, r11319, r11320;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r11295, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11296);
        mpfr_init(r11297);
        mpfr_init(r11298);
        mpfr_init_set_str(r11299, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11300);
        mpfr_init(r11301);
        mpfr_init(r11302);
        mpfr_init(r11303);
        mpfr_init(r11304);
        mpfr_init(r11305);
        mpfr_init(r11306);
        mpfr_init_set_str(r11307, "3.76690728889376e-310", 10, MPFR_RNDN);
        mpfr_init(r11308);
        mpfr_init_set_str(r11309, "-1", 10, MPFR_RNDN);
        mpfr_init(r11310);
        mpfr_init(r11311);
        mpfr_init(r11312);
        mpfr_init_set_str(r11313, "1.0", 10, MPFR_RNDN);
        mpfr_init(r11314);
        mpfr_init(r11315);
        mpfr_init(r11316);
        mpfr_init(r11317);
        mpfr_init(r11318);
        mpfr_init(r11319);
        mpfr_init(r11320);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r11296, re, MPFR_RNDN);
        mpfr_set_d(r11297, im, MPFR_RNDN);
        mpfr_hypot(r11298, r11296, r11297, MPFR_RNDN);
        ;
        mpfr_mul(r11300, r11296, r11299, MPFR_RNDN);
        mpfr_fma(r11301, r11298, r11299, r11300, MPFR_RNDN);
        mpfr_cbrt(r11302, r11301, MPFR_RNDN);
        mpfr_mul(r11303, r11302, r11302, MPFR_RNDN);
        mpfr_mul(r11304, r11302, r11303, MPFR_RNDN);
        mpfr_sqrt(r11305, r11304, MPFR_RNDN);
        mpfr_mul(r11306, r11295, r11305, MPFR_RNDN);
        ;
        mpfr_set_si(r11308, mpfr_cmp(r11306, r11307) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11310, r11309, r11296, MPFR_RNDN);
        mpfr_div(r11311, r11309, r11297, MPFR_RNDN);
        mpfr_div(r11312, r11310, r11311, MPFR_RNDN);
        ;
        mpfr_div(r11314, r11313, r11311, MPFR_RNDN);
        mpfr_mul(r11315, r11312, r11314, MPFR_RNDN);
        mpfr_sqrt(r11316, r11315, MPFR_RNDN);
        mpfr_mul(r11317, r11316, r11295, MPFR_RNDN);
        mpfr_sqrt(r11318, r11301, MPFR_RNDN);
        mpfr_mul(r11319, r11318, r11295, MPFR_RNDN);
        if (mpfr_get_si(r11308, MPFR_RNDN)) { mpfr_set(r11320, r11317, MPFR_RNDN); } else { mpfr_set(r11320, r11319, MPFR_RNDN); };
        return mpfr_get_d(r11320, MPFR_RNDN);
}

static mpfr_t r11321, r11322, r11323, r11324, r11325, r11326, r11327, r11328, r11329, r11330, r11331, r11332, r11333, r11334, r11335, r11336, r11337, r11338, r11339, r11340, r11341, r11342, r11343, r11344, r11345, r11346;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r11321, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11322);
        mpfr_init(r11323);
        mpfr_init(r11324);
        mpfr_init_set_str(r11325, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11326);
        mpfr_init(r11327);
        mpfr_init(r11328);
        mpfr_init(r11329);
        mpfr_init(r11330);
        mpfr_init(r11331);
        mpfr_init(r11332);
        mpfr_init_set_str(r11333, "3.76690728889376e-310", 10, MPFR_RNDN);
        mpfr_init(r11334);
        mpfr_init_set_str(r11335, "-1", 10, MPFR_RNDN);
        mpfr_init(r11336);
        mpfr_init(r11337);
        mpfr_init(r11338);
        mpfr_init_set_str(r11339, "1.0", 10, MPFR_RNDN);
        mpfr_init(r11340);
        mpfr_init(r11341);
        mpfr_init(r11342);
        mpfr_init(r11343);
        mpfr_init(r11344);
        mpfr_init(r11345);
        mpfr_init(r11346);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r11322, re, MPFR_RNDN);
        mpfr_set_d(r11323, im, MPFR_RNDN);
        mpfr_hypot(r11324, r11322, r11323, MPFR_RNDN);
        ;
        mpfr_mul(r11326, r11322, r11325, MPFR_RNDN);
        mpfr_fma(r11327, r11324, r11325, r11326, MPFR_RNDN);
        mpfr_cbrt(r11328, r11327, MPFR_RNDN);
        mpfr_mul(r11329, r11328, r11328, MPFR_RNDN);
        mpfr_mul(r11330, r11328, r11329, MPFR_RNDN);
        mpfr_sqrt(r11331, r11330, MPFR_RNDN);
        mpfr_mul(r11332, r11321, r11331, MPFR_RNDN);
        ;
        mpfr_set_si(r11334, mpfr_cmp(r11332, r11333) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11336, r11335, r11322, MPFR_RNDN);
        mpfr_div(r11337, r11335, r11323, MPFR_RNDN);
        mpfr_div(r11338, r11336, r11337, MPFR_RNDN);
        ;
        mpfr_div(r11340, r11339, r11337, MPFR_RNDN);
        mpfr_mul(r11341, r11338, r11340, MPFR_RNDN);
        mpfr_sqrt(r11342, r11341, MPFR_RNDN);
        mpfr_mul(r11343, r11342, r11321, MPFR_RNDN);
        mpfr_sqrt(r11344, r11327, MPFR_RNDN);
        mpfr_mul(r11345, r11344, r11321, MPFR_RNDN);
        if (mpfr_get_si(r11334, MPFR_RNDN)) { mpfr_set(r11346, r11343, MPFR_RNDN); } else { mpfr_set(r11346, r11345, MPFR_RNDN); };
        return mpfr_get_d(r11346, MPFR_RNDN);
}

