#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 r38256 = 0.5;
        float r38257 = 2.0;
        float r38258 = re;
        float r38259 = r38258 * r38258;
        float r38260 = im;
        float r38261 = r38260 * r38260;
        float r38262 = r38259 + r38261;
        float r38263 = sqrt(r38262);
        float r38264 = r38263 + r38258;
        float r38265 = r38257 * r38264;
        float r38266 = sqrt(r38265);
        float r38267 = r38256 * r38266;
        return r38267;
}

double f_id(double re, double im) {
        double r38268 = 0.5;
        double r38269 = 2.0;
        double r38270 = re;
        double r38271 = r38270 * r38270;
        double r38272 = im;
        double r38273 = r38272 * r38272;
        double r38274 = r38271 + r38273;
        double r38275 = sqrt(r38274);
        double r38276 = r38275 + r38270;
        double r38277 = r38269 * r38276;
        double r38278 = sqrt(r38277);
        double r38279 = r38268 * r38278;
        return r38279;
}


double f_of(float re, float im) {
        float r38280 = re;
        float r38281 = -5.324819773967279e+125;
        bool r38282 = r38280 <= r38281;
        float r38283 = 0.5;
        float r38284 = im;
        float r38285 = 2.0;
        float r38286 = r38284 * r38285;
        float r38287 = r38286 * r38284;
        float r38288 = sqrt(r38287);
        float r38289 = -r38280;
        float r38290 = r38289 - r38280;
        float r38291 = sqrt(r38290);
        float r38292 = r38288 / r38291;
        float r38293 = r38283 * r38292;
        float r38294 = -3.36851212655227e-310;
        bool r38295 = r38280 <= r38294;
        float r38296 = sqrt(r38285);
        float r38297 = 1;
        float r38298 = sqrt(r38297);
        float r38299 = r38296 / r38298;
        float r38300 = fabs(r38284);
        float r38301 = r38284 * r38284;
        float r38302 = r38280 * r38280;
        float r38303 = r38301 + r38302;
        float r38304 = sqrt(r38303);
        float r38305 = r38304 - r38280;
        float r38306 = sqrt(r38305);
        float r38307 = r38300 / r38306;
        float r38308 = r38299 * r38307;
        float r38309 = r38283 * r38308;
        float r38310 = 1.0701985037934348e-08;
        bool r38311 = r38280 <= r38310;
        float r38312 = r38302 + r38301;
        float r38313 = sqrt(r38312);
        float r38314 = sqrt(r38313);
        float r38315 = r38314 * r38314;
        float r38316 = r38315 + r38280;
        float r38317 = r38285 * r38316;
        float r38318 = sqrt(r38317);
        float r38319 = r38283 * r38318;
        float r38320 = r38280 + r38280;
        float r38321 = r38285 * r38320;
        float r38322 = sqrt(r38321);
        float r38323 = r38283 * r38322;
        float r38324 = r38311 ? r38319 : r38323;
        float r38325 = r38295 ? r38309 : r38324;
        float r38326 = r38282 ? r38293 : r38325;
        return r38326;
}

double f_od(double re, double im) {
        double r38327 = re;
        double r38328 = -5.324819773967279e+125;
        bool r38329 = r38327 <= r38328;
        double r38330 = 0.5;
        double r38331 = im;
        double r38332 = 2.0;
        double r38333 = r38331 * r38332;
        double r38334 = r38333 * r38331;
        double r38335 = sqrt(r38334);
        double r38336 = -r38327;
        double r38337 = r38336 - r38327;
        double r38338 = sqrt(r38337);
        double r38339 = r38335 / r38338;
        double r38340 = r38330 * r38339;
        double r38341 = -3.36851212655227e-310;
        bool r38342 = r38327 <= r38341;
        double r38343 = sqrt(r38332);
        double r38344 = 1;
        double r38345 = sqrt(r38344);
        double r38346 = r38343 / r38345;
        double r38347 = fabs(r38331);
        double r38348 = r38331 * r38331;
        double r38349 = r38327 * r38327;
        double r38350 = r38348 + r38349;
        double r38351 = sqrt(r38350);
        double r38352 = r38351 - r38327;
        double r38353 = sqrt(r38352);
        double r38354 = r38347 / r38353;
        double r38355 = r38346 * r38354;
        double r38356 = r38330 * r38355;
        double r38357 = 1.0701985037934348e-08;
        bool r38358 = r38327 <= r38357;
        double r38359 = r38349 + r38348;
        double r38360 = sqrt(r38359);
        double r38361 = sqrt(r38360);
        double r38362 = r38361 * r38361;
        double r38363 = r38362 + r38327;
        double r38364 = r38332 * r38363;
        double r38365 = sqrt(r38364);
        double r38366 = r38330 * r38365;
        double r38367 = r38327 + r38327;
        double r38368 = r38332 * r38367;
        double r38369 = sqrt(r38368);
        double r38370 = r38330 * r38369;
        double r38371 = r38358 ? r38366 : r38370;
        double r38372 = r38342 ? r38356 : r38371;
        double r38373 = r38329 ? r38340 : r38372;
        return r38373;
}

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 r38374, r38375, r38376, r38377, r38378, r38379, r38380, r38381, r38382, r38383, r38384, r38385;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r38374, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r38375, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38376);
        mpfr_init(r38377);
        mpfr_init(r38378);
        mpfr_init(r38379);
        mpfr_init(r38380);
        mpfr_init(r38381);
        mpfr_init(r38382);
        mpfr_init(r38383);
        mpfr_init(r38384);
        mpfr_init(r38385);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r38376, re, MPFR_RNDN);
        mpfr_mul(r38377, r38376, r38376, MPFR_RNDN);
        mpfr_set_d(r38378, im, MPFR_RNDN);
        mpfr_mul(r38379, r38378, r38378, MPFR_RNDN);
        mpfr_add(r38380, r38377, r38379, MPFR_RNDN);
        mpfr_sqrt(r38381, r38380, MPFR_RNDN);
        mpfr_add(r38382, r38381, r38376, MPFR_RNDN);
        mpfr_mul(r38383, r38375, r38382, MPFR_RNDN);
        mpfr_sqrt(r38384, r38383, MPFR_RNDN);
        mpfr_mul(r38385, r38374, r38384, MPFR_RNDN);
        return mpfr_get_d(r38385, MPFR_RNDN);
}

static mpfr_t r38386, r38387, r38388, r38389, r38390, r38391, r38392, r38393, r38394, r38395, r38396, r38397, r38398, r38399, r38400, r38401, r38402, r38403, r38404, r38405, r38406, r38407, r38408, r38409, r38410, r38411, r38412, r38413, r38414, r38415, r38416, r38417, r38418, r38419, r38420, r38421, r38422, r38423, r38424, r38425, r38426, r38427, r38428, r38429, r38430, r38431, r38432;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r38386);
        mpfr_init_set_str(r38387, "-5.324819773967279e+125", 10, MPFR_RNDN);
        mpfr_init(r38388);
        mpfr_init_set_str(r38389, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38390);
        mpfr_init_set_str(r38391, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38392);
        mpfr_init(r38393);
        mpfr_init(r38394);
        mpfr_init(r38395);
        mpfr_init(r38396);
        mpfr_init(r38397);
        mpfr_init(r38398);
        mpfr_init(r38399);
        mpfr_init_set_str(r38400, "-3.36851212655227e-310", 10, MPFR_RNDN);
        mpfr_init(r38401);
        mpfr_init(r38402);
        mpfr_init_set_str(r38403, "1", 10, MPFR_RNDN);
        mpfr_init(r38404);
        mpfr_init(r38405);
        mpfr_init(r38406);
        mpfr_init(r38407);
        mpfr_init(r38408);
        mpfr_init(r38409);
        mpfr_init(r38410);
        mpfr_init(r38411);
        mpfr_init(r38412);
        mpfr_init(r38413);
        mpfr_init(r38414);
        mpfr_init(r38415);
        mpfr_init_set_str(r38416, "1.0701985037934348e-08", 10, MPFR_RNDN);
        mpfr_init(r38417);
        mpfr_init(r38418);
        mpfr_init(r38419);
        mpfr_init(r38420);
        mpfr_init(r38421);
        mpfr_init(r38422);
        mpfr_init(r38423);
        mpfr_init(r38424);
        mpfr_init(r38425);
        mpfr_init(r38426);
        mpfr_init(r38427);
        mpfr_init(r38428);
        mpfr_init(r38429);
        mpfr_init(r38430);
        mpfr_init(r38431);
        mpfr_init(r38432);
}

double f_fm(double re, double im) {
        mpfr_set_d(r38386, re, MPFR_RNDN);
        ;
        mpfr_set_si(r38388, mpfr_cmp(r38386, r38387) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r38390, im, MPFR_RNDN);
        ;
        mpfr_mul(r38392, r38390, r38391, MPFR_RNDN);
        mpfr_mul(r38393, r38392, r38390, MPFR_RNDN);
        mpfr_sqrt(r38394, r38393, MPFR_RNDN);
        mpfr_neg(r38395, r38386, MPFR_RNDN);
        mpfr_sub(r38396, r38395, r38386, MPFR_RNDN);
        mpfr_sqrt(r38397, r38396, MPFR_RNDN);
        mpfr_div(r38398, r38394, r38397, MPFR_RNDN);
        mpfr_mul(r38399, r38389, r38398, MPFR_RNDN);
        ;
        mpfr_set_si(r38401, mpfr_cmp(r38386, r38400) <= 0, MPFR_RNDN);
        mpfr_sqrt(r38402, r38391, MPFR_RNDN);
        ;
        mpfr_sqrt(r38404, r38403, MPFR_RNDN);
        mpfr_div(r38405, r38402, r38404, MPFR_RNDN);
        mpfr_abs(r38406, r38390, MPFR_RNDN);
        mpfr_mul(r38407, r38390, r38390, MPFR_RNDN);
        mpfr_mul(r38408, r38386, r38386, MPFR_RNDN);
        mpfr_add(r38409, r38407, r38408, MPFR_RNDN);
        mpfr_sqrt(r38410, r38409, MPFR_RNDN);
        mpfr_sub(r38411, r38410, r38386, MPFR_RNDN);
        mpfr_sqrt(r38412, r38411, MPFR_RNDN);
        mpfr_div(r38413, r38406, r38412, MPFR_RNDN);
        mpfr_mul(r38414, r38405, r38413, MPFR_RNDN);
        mpfr_mul(r38415, r38389, r38414, MPFR_RNDN);
        ;
        mpfr_set_si(r38417, mpfr_cmp(r38386, r38416) <= 0, MPFR_RNDN);
        mpfr_add(r38418, r38408, r38407, MPFR_RNDN);
        mpfr_sqrt(r38419, r38418, MPFR_RNDN);
        mpfr_sqrt(r38420, r38419, MPFR_RNDN);
        mpfr_mul(r38421, r38420, r38420, MPFR_RNDN);
        mpfr_add(r38422, r38421, r38386, MPFR_RNDN);
        mpfr_mul(r38423, r38391, r38422, MPFR_RNDN);
        mpfr_sqrt(r38424, r38423, MPFR_RNDN);
        mpfr_mul(r38425, r38389, r38424, MPFR_RNDN);
        mpfr_add(r38426, r38386, r38386, MPFR_RNDN);
        mpfr_mul(r38427, r38391, r38426, MPFR_RNDN);
        mpfr_sqrt(r38428, r38427, MPFR_RNDN);
        mpfr_mul(r38429, r38389, r38428, MPFR_RNDN);
        if (mpfr_get_si(r38417, MPFR_RNDN)) { mpfr_set(r38430, r38425, MPFR_RNDN); } else { mpfr_set(r38430, r38429, MPFR_RNDN); };
        if (mpfr_get_si(r38401, MPFR_RNDN)) { mpfr_set(r38431, r38415, MPFR_RNDN); } else { mpfr_set(r38431, r38430, MPFR_RNDN); };
        if (mpfr_get_si(r38388, MPFR_RNDN)) { mpfr_set(r38432, r38399, MPFR_RNDN); } else { mpfr_set(r38432, r38431, MPFR_RNDN); };
        return mpfr_get_d(r38432, MPFR_RNDN);
}

static mpfr_t r38433, r38434, r38435, r38436, r38437, r38438, r38439, r38440, r38441, r38442, r38443, r38444, r38445, r38446, r38447, r38448, r38449, r38450, r38451, r38452, r38453, r38454, r38455, r38456, r38457, r38458, r38459, r38460, r38461, r38462, r38463, r38464, r38465, r38466, r38467, r38468, r38469, r38470, r38471, r38472, r38473, r38474, r38475, r38476, r38477, r38478, r38479;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r38433);
        mpfr_init_set_str(r38434, "-5.324819773967279e+125", 10, MPFR_RNDN);
        mpfr_init(r38435);
        mpfr_init_set_str(r38436, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38437);
        mpfr_init_set_str(r38438, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38439);
        mpfr_init(r38440);
        mpfr_init(r38441);
        mpfr_init(r38442);
        mpfr_init(r38443);
        mpfr_init(r38444);
        mpfr_init(r38445);
        mpfr_init(r38446);
        mpfr_init_set_str(r38447, "-3.36851212655227e-310", 10, MPFR_RNDN);
        mpfr_init(r38448);
        mpfr_init(r38449);
        mpfr_init_set_str(r38450, "1", 10, MPFR_RNDN);
        mpfr_init(r38451);
        mpfr_init(r38452);
        mpfr_init(r38453);
        mpfr_init(r38454);
        mpfr_init(r38455);
        mpfr_init(r38456);
        mpfr_init(r38457);
        mpfr_init(r38458);
        mpfr_init(r38459);
        mpfr_init(r38460);
        mpfr_init(r38461);
        mpfr_init(r38462);
        mpfr_init_set_str(r38463, "1.0701985037934348e-08", 10, MPFR_RNDN);
        mpfr_init(r38464);
        mpfr_init(r38465);
        mpfr_init(r38466);
        mpfr_init(r38467);
        mpfr_init(r38468);
        mpfr_init(r38469);
        mpfr_init(r38470);
        mpfr_init(r38471);
        mpfr_init(r38472);
        mpfr_init(r38473);
        mpfr_init(r38474);
        mpfr_init(r38475);
        mpfr_init(r38476);
        mpfr_init(r38477);
        mpfr_init(r38478);
        mpfr_init(r38479);
}

double f_dm(double re, double im) {
        mpfr_set_d(r38433, re, MPFR_RNDN);
        ;
        mpfr_set_si(r38435, mpfr_cmp(r38433, r38434) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r38437, im, MPFR_RNDN);
        ;
        mpfr_mul(r38439, r38437, r38438, MPFR_RNDN);
        mpfr_mul(r38440, r38439, r38437, MPFR_RNDN);
        mpfr_sqrt(r38441, r38440, MPFR_RNDN);
        mpfr_neg(r38442, r38433, MPFR_RNDN);
        mpfr_sub(r38443, r38442, r38433, MPFR_RNDN);
        mpfr_sqrt(r38444, r38443, MPFR_RNDN);
        mpfr_div(r38445, r38441, r38444, MPFR_RNDN);
        mpfr_mul(r38446, r38436, r38445, MPFR_RNDN);
        ;
        mpfr_set_si(r38448, mpfr_cmp(r38433, r38447) <= 0, MPFR_RNDN);
        mpfr_sqrt(r38449, r38438, MPFR_RNDN);
        ;
        mpfr_sqrt(r38451, r38450, MPFR_RNDN);
        mpfr_div(r38452, r38449, r38451, MPFR_RNDN);
        mpfr_abs(r38453, r38437, MPFR_RNDN);
        mpfr_mul(r38454, r38437, r38437, MPFR_RNDN);
        mpfr_mul(r38455, r38433, r38433, MPFR_RNDN);
        mpfr_add(r38456, r38454, r38455, MPFR_RNDN);
        mpfr_sqrt(r38457, r38456, MPFR_RNDN);
        mpfr_sub(r38458, r38457, r38433, MPFR_RNDN);
        mpfr_sqrt(r38459, r38458, MPFR_RNDN);
        mpfr_div(r38460, r38453, r38459, MPFR_RNDN);
        mpfr_mul(r38461, r38452, r38460, MPFR_RNDN);
        mpfr_mul(r38462, r38436, r38461, MPFR_RNDN);
        ;
        mpfr_set_si(r38464, mpfr_cmp(r38433, r38463) <= 0, MPFR_RNDN);
        mpfr_add(r38465, r38455, r38454, MPFR_RNDN);
        mpfr_sqrt(r38466, r38465, MPFR_RNDN);
        mpfr_sqrt(r38467, r38466, MPFR_RNDN);
        mpfr_mul(r38468, r38467, r38467, MPFR_RNDN);
        mpfr_add(r38469, r38468, r38433, MPFR_RNDN);
        mpfr_mul(r38470, r38438, r38469, MPFR_RNDN);
        mpfr_sqrt(r38471, r38470, MPFR_RNDN);
        mpfr_mul(r38472, r38436, r38471, MPFR_RNDN);
        mpfr_add(r38473, r38433, r38433, MPFR_RNDN);
        mpfr_mul(r38474, r38438, r38473, MPFR_RNDN);
        mpfr_sqrt(r38475, r38474, MPFR_RNDN);
        mpfr_mul(r38476, r38436, r38475, MPFR_RNDN);
        if (mpfr_get_si(r38464, MPFR_RNDN)) { mpfr_set(r38477, r38472, MPFR_RNDN); } else { mpfr_set(r38477, r38476, MPFR_RNDN); };
        if (mpfr_get_si(r38448, MPFR_RNDN)) { mpfr_set(r38478, r38462, MPFR_RNDN); } else { mpfr_set(r38478, r38477, MPFR_RNDN); };
        if (mpfr_get_si(r38435, MPFR_RNDN)) { mpfr_set(r38479, r38446, MPFR_RNDN); } else { mpfr_set(r38479, r38478, MPFR_RNDN); };
        return mpfr_get_d(r38479, MPFR_RNDN);
}

