#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 r28318 = 0.5;
        float r28319 = 2.0;
        float r28320 = re;
        float r28321 = r28320 * r28320;
        float r28322 = im;
        float r28323 = r28322 * r28322;
        float r28324 = r28321 + r28323;
        float r28325 = sqrt(r28324);
        float r28326 = r28325 + r28320;
        float r28327 = r28319 * r28326;
        float r28328 = sqrt(r28327);
        float r28329 = r28318 * r28328;
        return r28329;
}

double f_id(double re, double im) {
        double r28330 = 0.5;
        double r28331 = 2.0;
        double r28332 = re;
        double r28333 = r28332 * r28332;
        double r28334 = im;
        double r28335 = r28334 * r28334;
        double r28336 = r28333 + r28335;
        double r28337 = sqrt(r28336);
        double r28338 = r28337 + r28332;
        double r28339 = r28331 * r28338;
        double r28340 = sqrt(r28339);
        double r28341 = r28330 * r28340;
        return r28341;
}


double f_of(float re, float im) {
        float r28342 = 2.0;
        float r28343 = im;
        float r28344 = re;
        float r28345 = r28343 + r28344;
        float r28346 = r28342 * r28345;
        float r28347 = -6.421991548774911e+146;
        bool r28348 = r28346 <= r28347;
        float r28349 = sqrt(r28342);
        float r28350 = fabs(r28343);
        float r28351 = r28349 * r28350;
        float r28352 = 0.5;
        float r28353 = r28351 * r28352;
        float r28354 = -r28344;
        float r28355 = r28354 - r28344;
        float r28356 = sqrt(r28355);
        float r28357 = r28353 / r28356;
        float r28358 = -1.7946194316774443e-161;
        bool r28359 = r28346 <= r28358;
        float r28360 = r28343 * r28343;
        float r28361 = r28344 * r28344;
        float r28362 = r28360 + r28361;
        float r28363 = cbrt(r28362);
        float r28364 = fabs(r28363);
        float r28365 = r28361 + r28360;
        float r28366 = cbrt(r28365);
        float r28367 = sqrt(r28366);
        float r28368 = r28364 * r28367;
        float r28369 = r28368 - r28344;
        float r28370 = sqrt(r28369);
        float r28371 = r28351 / r28370;
        float r28372 = r28352 * r28371;
        float r28373 = -4.518424517913871e-225;
        bool r28374 = r28346 <= r28373;
        float r28375 = 2.508596303836922e-127;
        bool r28376 = r28346 <= r28375;
        float r28377 = sqrt(r28346);
        float r28378 = r28352 * r28377;
        float r28379 = 2.521737429946867e+105;
        bool r28380 = r28346 <= r28379;
        float r28381 = r28344 + r28344;
        float r28382 = r28342 * r28381;
        float r28383 = sqrt(r28382);
        float r28384 = r28352 * r28383;
        float r28385 = 3.0952873467558354e+240;
        bool r28386 = r28346 <= r28385;
        float r28387 = 9.733577473636689e+294;
        bool r28388 = r28346 <= r28387;
        float r28389 = r28388 ? r28384 : r28378;
        float r28390 = r28386 ? r28378 : r28389;
        float r28391 = r28380 ? r28384 : r28390;
        float r28392 = r28376 ? r28378 : r28391;
        float r28393 = r28374 ? r28357 : r28392;
        float r28394 = r28359 ? r28372 : r28393;
        float r28395 = r28348 ? r28357 : r28394;
        return r28395;
}

double f_od(double re, double im) {
        double r28396 = 2.0;
        double r28397 = im;
        double r28398 = re;
        double r28399 = r28397 + r28398;
        double r28400 = r28396 * r28399;
        double r28401 = -6.421991548774911e+146;
        bool r28402 = r28400 <= r28401;
        double r28403 = sqrt(r28396);
        double r28404 = fabs(r28397);
        double r28405 = r28403 * r28404;
        double r28406 = 0.5;
        double r28407 = r28405 * r28406;
        double r28408 = -r28398;
        double r28409 = r28408 - r28398;
        double r28410 = sqrt(r28409);
        double r28411 = r28407 / r28410;
        double r28412 = -1.7946194316774443e-161;
        bool r28413 = r28400 <= r28412;
        double r28414 = r28397 * r28397;
        double r28415 = r28398 * r28398;
        double r28416 = r28414 + r28415;
        double r28417 = cbrt(r28416);
        double r28418 = fabs(r28417);
        double r28419 = r28415 + r28414;
        double r28420 = cbrt(r28419);
        double r28421 = sqrt(r28420);
        double r28422 = r28418 * r28421;
        double r28423 = r28422 - r28398;
        double r28424 = sqrt(r28423);
        double r28425 = r28405 / r28424;
        double r28426 = r28406 * r28425;
        double r28427 = -4.518424517913871e-225;
        bool r28428 = r28400 <= r28427;
        double r28429 = 2.508596303836922e-127;
        bool r28430 = r28400 <= r28429;
        double r28431 = sqrt(r28400);
        double r28432 = r28406 * r28431;
        double r28433 = 2.521737429946867e+105;
        bool r28434 = r28400 <= r28433;
        double r28435 = r28398 + r28398;
        double r28436 = r28396 * r28435;
        double r28437 = sqrt(r28436);
        double r28438 = r28406 * r28437;
        double r28439 = 3.0952873467558354e+240;
        bool r28440 = r28400 <= r28439;
        double r28441 = 9.733577473636689e+294;
        bool r28442 = r28400 <= r28441;
        double r28443 = r28442 ? r28438 : r28432;
        double r28444 = r28440 ? r28432 : r28443;
        double r28445 = r28434 ? r28438 : r28444;
        double r28446 = r28430 ? r28432 : r28445;
        double r28447 = r28428 ? r28411 : r28446;
        double r28448 = r28413 ? r28426 : r28447;
        double r28449 = r28402 ? r28411 : r28448;
        return r28449;
}

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 r28450, r28451, r28452, r28453, r28454, r28455, r28456, r28457, r28458, r28459, r28460, r28461;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28450, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r28451, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28452);
        mpfr_init(r28453);
        mpfr_init(r28454);
        mpfr_init(r28455);
        mpfr_init(r28456);
        mpfr_init(r28457);
        mpfr_init(r28458);
        mpfr_init(r28459);
        mpfr_init(r28460);
        mpfr_init(r28461);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r28452, re, MPFR_RNDN);
        mpfr_mul(r28453, r28452, r28452, MPFR_RNDN);
        mpfr_set_d(r28454, im, MPFR_RNDN);
        mpfr_mul(r28455, r28454, r28454, MPFR_RNDN);
        mpfr_add(r28456, r28453, r28455, MPFR_RNDN);
        mpfr_sqrt(r28457, r28456, MPFR_RNDN);
        mpfr_add(r28458, r28457, r28452, MPFR_RNDN);
        mpfr_mul(r28459, r28451, r28458, MPFR_RNDN);
        mpfr_sqrt(r28460, r28459, MPFR_RNDN);
        mpfr_mul(r28461, r28450, r28460, MPFR_RNDN);
        return mpfr_get_d(r28461, MPFR_RNDN);
}

static mpfr_t r28462, r28463, r28464, r28465, r28466, r28467, r28468, r28469, r28470, r28471, r28472, r28473, r28474, r28475, r28476, r28477, r28478, r28479, r28480, r28481, r28482, r28483, r28484, r28485, r28486, r28487, r28488, r28489, r28490, r28491, r28492, r28493, r28494, r28495, r28496, r28497, r28498, r28499, r28500, r28501, r28502, r28503, r28504, r28505, r28506, r28507, r28508, r28509, r28510, r28511, r28512, r28513, r28514, r28515;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28462, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28463);
        mpfr_init(r28464);
        mpfr_init(r28465);
        mpfr_init(r28466);
        mpfr_init_set_str(r28467, "-6.421991548774911e+146", 10, MPFR_RNDN);
        mpfr_init(r28468);
        mpfr_init(r28469);
        mpfr_init(r28470);
        mpfr_init(r28471);
        mpfr_init_set_str(r28472, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28473);
        mpfr_init(r28474);
        mpfr_init(r28475);
        mpfr_init(r28476);
        mpfr_init(r28477);
        mpfr_init_set_str(r28478, "-1.7946194316774443e-161", 10, MPFR_RNDN);
        mpfr_init(r28479);
        mpfr_init(r28480);
        mpfr_init(r28481);
        mpfr_init(r28482);
        mpfr_init(r28483);
        mpfr_init(r28484);
        mpfr_init(r28485);
        mpfr_init(r28486);
        mpfr_init(r28487);
        mpfr_init(r28488);
        mpfr_init(r28489);
        mpfr_init(r28490);
        mpfr_init(r28491);
        mpfr_init(r28492);
        mpfr_init_set_str(r28493, "-4.518424517913871e-225", 10, MPFR_RNDN);
        mpfr_init(r28494);
        mpfr_init_set_str(r28495, "2.508596303836922e-127", 10, MPFR_RNDN);
        mpfr_init(r28496);
        mpfr_init(r28497);
        mpfr_init(r28498);
        mpfr_init_set_str(r28499, "2.521737429946867e+105", 10, MPFR_RNDN);
        mpfr_init(r28500);
        mpfr_init(r28501);
        mpfr_init(r28502);
        mpfr_init(r28503);
        mpfr_init(r28504);
        mpfr_init_set_str(r28505, "3.0952873467558354e+240", 10, MPFR_RNDN);
        mpfr_init(r28506);
        mpfr_init_set_str(r28507, "9.733577473636689e+294", 10, MPFR_RNDN);
        mpfr_init(r28508);
        mpfr_init(r28509);
        mpfr_init(r28510);
        mpfr_init(r28511);
        mpfr_init(r28512);
        mpfr_init(r28513);
        mpfr_init(r28514);
        mpfr_init(r28515);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r28463, im, MPFR_RNDN);
        mpfr_set_d(r28464, re, MPFR_RNDN);
        mpfr_add(r28465, r28463, r28464, MPFR_RNDN);
        mpfr_mul(r28466, r28462, r28465, MPFR_RNDN);
        ;
        mpfr_set_si(r28468, mpfr_cmp(r28466, r28467) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28469, r28462, MPFR_RNDN);
        mpfr_abs(r28470, r28463, MPFR_RNDN);
        mpfr_mul(r28471, r28469, r28470, MPFR_RNDN);
        ;
        mpfr_mul(r28473, r28471, r28472, MPFR_RNDN);
        mpfr_neg(r28474, r28464, MPFR_RNDN);
        mpfr_sub(r28475, r28474, r28464, MPFR_RNDN);
        mpfr_sqrt(r28476, r28475, MPFR_RNDN);
        mpfr_div(r28477, r28473, r28476, MPFR_RNDN);
        ;
        mpfr_set_si(r28479, mpfr_cmp(r28466, r28478) <= 0, MPFR_RNDN);
        mpfr_mul(r28480, r28463, r28463, MPFR_RNDN);
        mpfr_mul(r28481, r28464, r28464, MPFR_RNDN);
        mpfr_add(r28482, r28480, r28481, MPFR_RNDN);
        mpfr_cbrt(r28483, r28482, MPFR_RNDN);
        mpfr_abs(r28484, r28483, MPFR_RNDN);
        mpfr_add(r28485, r28481, r28480, MPFR_RNDN);
        mpfr_cbrt(r28486, r28485, MPFR_RNDN);
        mpfr_sqrt(r28487, r28486, MPFR_RNDN);
        mpfr_mul(r28488, r28484, r28487, MPFR_RNDN);
        mpfr_sub(r28489, r28488, r28464, MPFR_RNDN);
        mpfr_sqrt(r28490, r28489, MPFR_RNDN);
        mpfr_div(r28491, r28471, r28490, MPFR_RNDN);
        mpfr_mul(r28492, r28472, r28491, MPFR_RNDN);
        ;
        mpfr_set_si(r28494, mpfr_cmp(r28466, r28493) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r28496, mpfr_cmp(r28466, r28495) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28497, r28466, MPFR_RNDN);
        mpfr_mul(r28498, r28472, r28497, MPFR_RNDN);
        ;
        mpfr_set_si(r28500, mpfr_cmp(r28466, r28499) <= 0, MPFR_RNDN);
        mpfr_add(r28501, r28464, r28464, MPFR_RNDN);
        mpfr_mul(r28502, r28462, r28501, MPFR_RNDN);
        mpfr_sqrt(r28503, r28502, MPFR_RNDN);
        mpfr_mul(r28504, r28472, r28503, MPFR_RNDN);
        ;
        mpfr_set_si(r28506, mpfr_cmp(r28466, r28505) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r28508, mpfr_cmp(r28466, r28507) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r28508, MPFR_RNDN)) { mpfr_set(r28509, r28504, MPFR_RNDN); } else { mpfr_set(r28509, r28498, MPFR_RNDN); };
        if (mpfr_get_si(r28506, MPFR_RNDN)) { mpfr_set(r28510, r28498, MPFR_RNDN); } else { mpfr_set(r28510, r28509, MPFR_RNDN); };
        if (mpfr_get_si(r28500, MPFR_RNDN)) { mpfr_set(r28511, r28504, MPFR_RNDN); } else { mpfr_set(r28511, r28510, MPFR_RNDN); };
        if (mpfr_get_si(r28496, MPFR_RNDN)) { mpfr_set(r28512, r28498, MPFR_RNDN); } else { mpfr_set(r28512, r28511, MPFR_RNDN); };
        if (mpfr_get_si(r28494, MPFR_RNDN)) { mpfr_set(r28513, r28477, MPFR_RNDN); } else { mpfr_set(r28513, r28512, MPFR_RNDN); };
        if (mpfr_get_si(r28479, MPFR_RNDN)) { mpfr_set(r28514, r28492, MPFR_RNDN); } else { mpfr_set(r28514, r28513, MPFR_RNDN); };
        if (mpfr_get_si(r28468, MPFR_RNDN)) { mpfr_set(r28515, r28477, MPFR_RNDN); } else { mpfr_set(r28515, r28514, MPFR_RNDN); };
        return mpfr_get_d(r28515, MPFR_RNDN);
}

static mpfr_t r28516, r28517, r28518, r28519, r28520, r28521, r28522, r28523, r28524, r28525, r28526, r28527, r28528, r28529, r28530, r28531, r28532, r28533, r28534, r28535, r28536, r28537, r28538, r28539, r28540, r28541, r28542, r28543, r28544, r28545, r28546, r28547, r28548, r28549, r28550, r28551, r28552, r28553, r28554, r28555, r28556, r28557, r28558, r28559, r28560, r28561, r28562, r28563, r28564, r28565, r28566, r28567, r28568, r28569;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28516, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28517);
        mpfr_init(r28518);
        mpfr_init(r28519);
        mpfr_init(r28520);
        mpfr_init_set_str(r28521, "-6.421991548774911e+146", 10, MPFR_RNDN);
        mpfr_init(r28522);
        mpfr_init(r28523);
        mpfr_init(r28524);
        mpfr_init(r28525);
        mpfr_init_set_str(r28526, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28527);
        mpfr_init(r28528);
        mpfr_init(r28529);
        mpfr_init(r28530);
        mpfr_init(r28531);
        mpfr_init_set_str(r28532, "-1.7946194316774443e-161", 10, MPFR_RNDN);
        mpfr_init(r28533);
        mpfr_init(r28534);
        mpfr_init(r28535);
        mpfr_init(r28536);
        mpfr_init(r28537);
        mpfr_init(r28538);
        mpfr_init(r28539);
        mpfr_init(r28540);
        mpfr_init(r28541);
        mpfr_init(r28542);
        mpfr_init(r28543);
        mpfr_init(r28544);
        mpfr_init(r28545);
        mpfr_init(r28546);
        mpfr_init_set_str(r28547, "-4.518424517913871e-225", 10, MPFR_RNDN);
        mpfr_init(r28548);
        mpfr_init_set_str(r28549, "2.508596303836922e-127", 10, MPFR_RNDN);
        mpfr_init(r28550);
        mpfr_init(r28551);
        mpfr_init(r28552);
        mpfr_init_set_str(r28553, "2.521737429946867e+105", 10, MPFR_RNDN);
        mpfr_init(r28554);
        mpfr_init(r28555);
        mpfr_init(r28556);
        mpfr_init(r28557);
        mpfr_init(r28558);
        mpfr_init_set_str(r28559, "3.0952873467558354e+240", 10, MPFR_RNDN);
        mpfr_init(r28560);
        mpfr_init_set_str(r28561, "9.733577473636689e+294", 10, MPFR_RNDN);
        mpfr_init(r28562);
        mpfr_init(r28563);
        mpfr_init(r28564);
        mpfr_init(r28565);
        mpfr_init(r28566);
        mpfr_init(r28567);
        mpfr_init(r28568);
        mpfr_init(r28569);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r28517, im, MPFR_RNDN);
        mpfr_set_d(r28518, re, MPFR_RNDN);
        mpfr_add(r28519, r28517, r28518, MPFR_RNDN);
        mpfr_mul(r28520, r28516, r28519, MPFR_RNDN);
        ;
        mpfr_set_si(r28522, mpfr_cmp(r28520, r28521) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28523, r28516, MPFR_RNDN);
        mpfr_abs(r28524, r28517, MPFR_RNDN);
        mpfr_mul(r28525, r28523, r28524, MPFR_RNDN);
        ;
        mpfr_mul(r28527, r28525, r28526, MPFR_RNDN);
        mpfr_neg(r28528, r28518, MPFR_RNDN);
        mpfr_sub(r28529, r28528, r28518, MPFR_RNDN);
        mpfr_sqrt(r28530, r28529, MPFR_RNDN);
        mpfr_div(r28531, r28527, r28530, MPFR_RNDN);
        ;
        mpfr_set_si(r28533, mpfr_cmp(r28520, r28532) <= 0, MPFR_RNDN);
        mpfr_mul(r28534, r28517, r28517, MPFR_RNDN);
        mpfr_mul(r28535, r28518, r28518, MPFR_RNDN);
        mpfr_add(r28536, r28534, r28535, MPFR_RNDN);
        mpfr_cbrt(r28537, r28536, MPFR_RNDN);
        mpfr_abs(r28538, r28537, MPFR_RNDN);
        mpfr_add(r28539, r28535, r28534, MPFR_RNDN);
        mpfr_cbrt(r28540, r28539, MPFR_RNDN);
        mpfr_sqrt(r28541, r28540, MPFR_RNDN);
        mpfr_mul(r28542, r28538, r28541, MPFR_RNDN);
        mpfr_sub(r28543, r28542, r28518, MPFR_RNDN);
        mpfr_sqrt(r28544, r28543, MPFR_RNDN);
        mpfr_div(r28545, r28525, r28544, MPFR_RNDN);
        mpfr_mul(r28546, r28526, r28545, MPFR_RNDN);
        ;
        mpfr_set_si(r28548, mpfr_cmp(r28520, r28547) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r28550, mpfr_cmp(r28520, r28549) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28551, r28520, MPFR_RNDN);
        mpfr_mul(r28552, r28526, r28551, MPFR_RNDN);
        ;
        mpfr_set_si(r28554, mpfr_cmp(r28520, r28553) <= 0, MPFR_RNDN);
        mpfr_add(r28555, r28518, r28518, MPFR_RNDN);
        mpfr_mul(r28556, r28516, r28555, MPFR_RNDN);
        mpfr_sqrt(r28557, r28556, MPFR_RNDN);
        mpfr_mul(r28558, r28526, r28557, MPFR_RNDN);
        ;
        mpfr_set_si(r28560, mpfr_cmp(r28520, r28559) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r28562, mpfr_cmp(r28520, r28561) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r28562, MPFR_RNDN)) { mpfr_set(r28563, r28558, MPFR_RNDN); } else { mpfr_set(r28563, r28552, MPFR_RNDN); };
        if (mpfr_get_si(r28560, MPFR_RNDN)) { mpfr_set(r28564, r28552, MPFR_RNDN); } else { mpfr_set(r28564, r28563, MPFR_RNDN); };
        if (mpfr_get_si(r28554, MPFR_RNDN)) { mpfr_set(r28565, r28558, MPFR_RNDN); } else { mpfr_set(r28565, r28564, MPFR_RNDN); };
        if (mpfr_get_si(r28550, MPFR_RNDN)) { mpfr_set(r28566, r28552, MPFR_RNDN); } else { mpfr_set(r28566, r28565, MPFR_RNDN); };
        if (mpfr_get_si(r28548, MPFR_RNDN)) { mpfr_set(r28567, r28531, MPFR_RNDN); } else { mpfr_set(r28567, r28566, MPFR_RNDN); };
        if (mpfr_get_si(r28533, MPFR_RNDN)) { mpfr_set(r28568, r28546, MPFR_RNDN); } else { mpfr_set(r28568, r28567, MPFR_RNDN); };
        if (mpfr_get_si(r28522, MPFR_RNDN)) { mpfr_set(r28569, r28531, MPFR_RNDN); } else { mpfr_set(r28569, r28568, MPFR_RNDN); };
        return mpfr_get_d(r28569, MPFR_RNDN);
}

