#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 r25327 = 0.5;
        float r25328 = 2.0;
        float r25329 = re;
        float r25330 = r25329 * r25329;
        float r25331 = im;
        float r25332 = r25331 * r25331;
        float r25333 = r25330 + r25332;
        float r25334 = sqrt(r25333);
        float r25335 = r25334 + r25329;
        float r25336 = r25328 * r25335;
        float r25337 = sqrt(r25336);
        float r25338 = r25327 * r25337;
        return r25338;
}

double f_id(double re, double im) {
        double r25339 = 0.5;
        double r25340 = 2.0;
        double r25341 = re;
        double r25342 = r25341 * r25341;
        double r25343 = im;
        double r25344 = r25343 * r25343;
        double r25345 = r25342 + r25344;
        double r25346 = sqrt(r25345);
        double r25347 = r25346 + r25341;
        double r25348 = r25340 * r25347;
        double r25349 = sqrt(r25348);
        double r25350 = r25339 * r25349;
        return r25350;
}


double f_of(float re, float im) {
        float r25351 = 2.0;
        float r25352 = im;
        float r25353 = re;
        float r25354 = r25352 + r25353;
        float r25355 = r25351 * r25354;
        float r25356 = -8.013861735089479e+160;
        bool r25357 = r25355 <= r25356;
        float r25358 = sqrt(r25351);
        float r25359 = 0.5;
        float r25360 = r25358 * r25359;
        float r25361 = -2;
        float r25362 = r25361 * r25353;
        float r25363 = sqrt(r25362);
        float r25364 = r25360 / r25363;
        float r25365 = fabs(r25352);
        float r25366 = r25364 * r25365;
        float r25367 = 9.80516895008213e-252;
        bool r25368 = r25355 <= r25367;
        float r25369 = sqrt(r25358);
        float r25370 = r25369 * r25365;
        float r25371 = r25369 * r25370;
        float r25372 = r25353 * r25353;
        float r25373 = r25352 * r25352;
        float r25374 = r25372 + r25373;
        float r25375 = sqrt(r25374);
        float r25376 = r25375 - r25353;
        float r25377 = sqrt(r25376);
        float r25378 = r25371 / r25377;
        float r25379 = r25359 * r25378;
        float r25380 = 9.339682956327065e-172;
        bool r25381 = r25355 <= r25380;
        float r25382 = r25353 + r25353;
        float r25383 = r25351 * r25382;
        float r25384 = sqrt(r25383);
        float r25385 = r25359 * r25384;
        float r25386 = 1.2578237932378988e-155;
        bool r25387 = r25355 <= r25386;
        float r25388 = sqrt(r25355);
        float r25389 = r25359 * r25388;
        float r25390 = 1.2121253201225153e+152;
        bool r25391 = r25355 <= r25390;
        float r25392 = r25375 + r25353;
        float r25393 = r25351 * r25392;
        float r25394 = sqrt(r25393);
        float r25395 = r25359 * r25394;
        float r25396 = 1.3579032328480138e+260;
        bool r25397 = r25355 <= r25396;
        float r25398 = r25397 ? r25389 : r25385;
        float r25399 = r25391 ? r25395 : r25398;
        float r25400 = r25387 ? r25389 : r25399;
        float r25401 = r25381 ? r25385 : r25400;
        float r25402 = r25368 ? r25379 : r25401;
        float r25403 = r25357 ? r25366 : r25402;
        return r25403;
}

double f_od(double re, double im) {
        double r25404 = 2.0;
        double r25405 = im;
        double r25406 = re;
        double r25407 = r25405 + r25406;
        double r25408 = r25404 * r25407;
        double r25409 = -8.013861735089479e+160;
        bool r25410 = r25408 <= r25409;
        double r25411 = sqrt(r25404);
        double r25412 = 0.5;
        double r25413 = r25411 * r25412;
        double r25414 = -2;
        double r25415 = r25414 * r25406;
        double r25416 = sqrt(r25415);
        double r25417 = r25413 / r25416;
        double r25418 = fabs(r25405);
        double r25419 = r25417 * r25418;
        double r25420 = 9.80516895008213e-252;
        bool r25421 = r25408 <= r25420;
        double r25422 = sqrt(r25411);
        double r25423 = r25422 * r25418;
        double r25424 = r25422 * r25423;
        double r25425 = r25406 * r25406;
        double r25426 = r25405 * r25405;
        double r25427 = r25425 + r25426;
        double r25428 = sqrt(r25427);
        double r25429 = r25428 - r25406;
        double r25430 = sqrt(r25429);
        double r25431 = r25424 / r25430;
        double r25432 = r25412 * r25431;
        double r25433 = 9.339682956327065e-172;
        bool r25434 = r25408 <= r25433;
        double r25435 = r25406 + r25406;
        double r25436 = r25404 * r25435;
        double r25437 = sqrt(r25436);
        double r25438 = r25412 * r25437;
        double r25439 = 1.2578237932378988e-155;
        bool r25440 = r25408 <= r25439;
        double r25441 = sqrt(r25408);
        double r25442 = r25412 * r25441;
        double r25443 = 1.2121253201225153e+152;
        bool r25444 = r25408 <= r25443;
        double r25445 = r25428 + r25406;
        double r25446 = r25404 * r25445;
        double r25447 = sqrt(r25446);
        double r25448 = r25412 * r25447;
        double r25449 = 1.3579032328480138e+260;
        bool r25450 = r25408 <= r25449;
        double r25451 = r25450 ? r25442 : r25438;
        double r25452 = r25444 ? r25448 : r25451;
        double r25453 = r25440 ? r25442 : r25452;
        double r25454 = r25434 ? r25438 : r25453;
        double r25455 = r25421 ? r25432 : r25454;
        double r25456 = r25410 ? r25419 : r25455;
        return r25456;
}

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 r25457, r25458, r25459, r25460, r25461, r25462, r25463, r25464, r25465, r25466, r25467, r25468;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r25457, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r25458, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25459);
        mpfr_init(r25460);
        mpfr_init(r25461);
        mpfr_init(r25462);
        mpfr_init(r25463);
        mpfr_init(r25464);
        mpfr_init(r25465);
        mpfr_init(r25466);
        mpfr_init(r25467);
        mpfr_init(r25468);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r25459, re, MPFR_RNDN);
        mpfr_mul(r25460, r25459, r25459, MPFR_RNDN);
        mpfr_set_d(r25461, im, MPFR_RNDN);
        mpfr_mul(r25462, r25461, r25461, MPFR_RNDN);
        mpfr_add(r25463, r25460, r25462, MPFR_RNDN);
        mpfr_sqrt(r25464, r25463, MPFR_RNDN);
        mpfr_add(r25465, r25464, r25459, MPFR_RNDN);
        mpfr_mul(r25466, r25458, r25465, MPFR_RNDN);
        mpfr_sqrt(r25467, r25466, MPFR_RNDN);
        mpfr_mul(r25468, r25457, r25467, MPFR_RNDN);
        return mpfr_get_d(r25468, MPFR_RNDN);
}

static mpfr_t r25469, r25470, r25471, r25472, r25473, r25474, r25475, r25476, r25477, r25478, r25479, r25480, r25481, r25482, r25483, r25484, r25485, r25486, r25487, r25488, r25489, r25490, r25491, r25492, r25493, r25494, r25495, r25496, r25497, r25498, r25499, r25500, r25501, r25502, r25503, r25504, r25505, r25506, r25507, r25508, r25509, r25510, r25511, r25512, r25513, r25514, r25515, r25516, r25517, r25518, r25519, r25520, r25521;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r25469, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25470);
        mpfr_init(r25471);
        mpfr_init(r25472);
        mpfr_init(r25473);
        mpfr_init_set_str(r25474, "-8.013861735089479e+160", 10, MPFR_RNDN);
        mpfr_init(r25475);
        mpfr_init(r25476);
        mpfr_init_set_str(r25477, "0.5", 10, MPFR_RNDN);
        mpfr_init(r25478);
        mpfr_init_set_str(r25479, "-2", 10, MPFR_RNDN);
        mpfr_init(r25480);
        mpfr_init(r25481);
        mpfr_init(r25482);
        mpfr_init(r25483);
        mpfr_init(r25484);
        mpfr_init_set_str(r25485, "9.80516895008213e-252", 10, MPFR_RNDN);
        mpfr_init(r25486);
        mpfr_init(r25487);
        mpfr_init(r25488);
        mpfr_init(r25489);
        mpfr_init(r25490);
        mpfr_init(r25491);
        mpfr_init(r25492);
        mpfr_init(r25493);
        mpfr_init(r25494);
        mpfr_init(r25495);
        mpfr_init(r25496);
        mpfr_init(r25497);
        mpfr_init_set_str(r25498, "9.339682956327065e-172", 10, MPFR_RNDN);
        mpfr_init(r25499);
        mpfr_init(r25500);
        mpfr_init(r25501);
        mpfr_init(r25502);
        mpfr_init(r25503);
        mpfr_init_set_str(r25504, "1.2578237932378988e-155", 10, MPFR_RNDN);
        mpfr_init(r25505);
        mpfr_init(r25506);
        mpfr_init(r25507);
        mpfr_init_set_str(r25508, "1.2121253201225153e+152", 10, MPFR_RNDN);
        mpfr_init(r25509);
        mpfr_init(r25510);
        mpfr_init(r25511);
        mpfr_init(r25512);
        mpfr_init(r25513);
        mpfr_init_set_str(r25514, "1.3579032328480138e+260", 10, MPFR_RNDN);
        mpfr_init(r25515);
        mpfr_init(r25516);
        mpfr_init(r25517);
        mpfr_init(r25518);
        mpfr_init(r25519);
        mpfr_init(r25520);
        mpfr_init(r25521);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r25470, im, MPFR_RNDN);
        mpfr_set_d(r25471, re, MPFR_RNDN);
        mpfr_add(r25472, r25470, r25471, MPFR_RNDN);
        mpfr_mul(r25473, r25469, r25472, MPFR_RNDN);
        ;
        mpfr_set_si(r25475, mpfr_cmp(r25473, r25474) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25476, r25469, MPFR_RNDN);
        ;
        mpfr_mul(r25478, r25476, r25477, MPFR_RNDN);
        ;
        mpfr_mul(r25480, r25479, r25471, MPFR_RNDN);
        mpfr_sqrt(r25481, r25480, MPFR_RNDN);
        mpfr_div(r25482, r25478, r25481, MPFR_RNDN);
        mpfr_abs(r25483, r25470, MPFR_RNDN);
        mpfr_mul(r25484, r25482, r25483, MPFR_RNDN);
        ;
        mpfr_set_si(r25486, mpfr_cmp(r25473, r25485) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25487, r25476, MPFR_RNDN);
        mpfr_mul(r25488, r25487, r25483, MPFR_RNDN);
        mpfr_mul(r25489, r25487, r25488, MPFR_RNDN);
        mpfr_mul(r25490, r25471, r25471, MPFR_RNDN);
        mpfr_mul(r25491, r25470, r25470, MPFR_RNDN);
        mpfr_add(r25492, r25490, r25491, MPFR_RNDN);
        mpfr_sqrt(r25493, r25492, MPFR_RNDN);
        mpfr_sub(r25494, r25493, r25471, MPFR_RNDN);
        mpfr_sqrt(r25495, r25494, MPFR_RNDN);
        mpfr_div(r25496, r25489, r25495, MPFR_RNDN);
        mpfr_mul(r25497, r25477, r25496, MPFR_RNDN);
        ;
        mpfr_set_si(r25499, mpfr_cmp(r25473, r25498) <= 0, MPFR_RNDN);
        mpfr_add(r25500, r25471, r25471, MPFR_RNDN);
        mpfr_mul(r25501, r25469, r25500, MPFR_RNDN);
        mpfr_sqrt(r25502, r25501, MPFR_RNDN);
        mpfr_mul(r25503, r25477, r25502, MPFR_RNDN);
        ;
        mpfr_set_si(r25505, mpfr_cmp(r25473, r25504) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25506, r25473, MPFR_RNDN);
        mpfr_mul(r25507, r25477, r25506, MPFR_RNDN);
        ;
        mpfr_set_si(r25509, mpfr_cmp(r25473, r25508) <= 0, MPFR_RNDN);
        mpfr_add(r25510, r25493, r25471, MPFR_RNDN);
        mpfr_mul(r25511, r25469, r25510, MPFR_RNDN);
        mpfr_sqrt(r25512, r25511, MPFR_RNDN);
        mpfr_mul(r25513, r25477, r25512, MPFR_RNDN);
        ;
        mpfr_set_si(r25515, mpfr_cmp(r25473, r25514) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r25515, MPFR_RNDN)) { mpfr_set(r25516, r25507, MPFR_RNDN); } else { mpfr_set(r25516, r25503, MPFR_RNDN); };
        if (mpfr_get_si(r25509, MPFR_RNDN)) { mpfr_set(r25517, r25513, MPFR_RNDN); } else { mpfr_set(r25517, r25516, MPFR_RNDN); };
        if (mpfr_get_si(r25505, MPFR_RNDN)) { mpfr_set(r25518, r25507, MPFR_RNDN); } else { mpfr_set(r25518, r25517, MPFR_RNDN); };
        if (mpfr_get_si(r25499, MPFR_RNDN)) { mpfr_set(r25519, r25503, MPFR_RNDN); } else { mpfr_set(r25519, r25518, MPFR_RNDN); };
        if (mpfr_get_si(r25486, MPFR_RNDN)) { mpfr_set(r25520, r25497, MPFR_RNDN); } else { mpfr_set(r25520, r25519, MPFR_RNDN); };
        if (mpfr_get_si(r25475, MPFR_RNDN)) { mpfr_set(r25521, r25484, MPFR_RNDN); } else { mpfr_set(r25521, r25520, MPFR_RNDN); };
        return mpfr_get_d(r25521, MPFR_RNDN);
}

static mpfr_t r25522, r25523, r25524, r25525, r25526, r25527, r25528, r25529, r25530, r25531, r25532, r25533, r25534, r25535, r25536, r25537, r25538, r25539, r25540, r25541, r25542, r25543, r25544, r25545, r25546, r25547, r25548, r25549, r25550, r25551, r25552, r25553, r25554, r25555, r25556, r25557, r25558, r25559, r25560, r25561, r25562, r25563, r25564, r25565, r25566, r25567, r25568, r25569, r25570, r25571, r25572, r25573, r25574;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r25522, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25523);
        mpfr_init(r25524);
        mpfr_init(r25525);
        mpfr_init(r25526);
        mpfr_init_set_str(r25527, "-8.013861735089479e+160", 10, MPFR_RNDN);
        mpfr_init(r25528);
        mpfr_init(r25529);
        mpfr_init_set_str(r25530, "0.5", 10, MPFR_RNDN);
        mpfr_init(r25531);
        mpfr_init_set_str(r25532, "-2", 10, MPFR_RNDN);
        mpfr_init(r25533);
        mpfr_init(r25534);
        mpfr_init(r25535);
        mpfr_init(r25536);
        mpfr_init(r25537);
        mpfr_init_set_str(r25538, "9.80516895008213e-252", 10, MPFR_RNDN);
        mpfr_init(r25539);
        mpfr_init(r25540);
        mpfr_init(r25541);
        mpfr_init(r25542);
        mpfr_init(r25543);
        mpfr_init(r25544);
        mpfr_init(r25545);
        mpfr_init(r25546);
        mpfr_init(r25547);
        mpfr_init(r25548);
        mpfr_init(r25549);
        mpfr_init(r25550);
        mpfr_init_set_str(r25551, "9.339682956327065e-172", 10, MPFR_RNDN);
        mpfr_init(r25552);
        mpfr_init(r25553);
        mpfr_init(r25554);
        mpfr_init(r25555);
        mpfr_init(r25556);
        mpfr_init_set_str(r25557, "1.2578237932378988e-155", 10, MPFR_RNDN);
        mpfr_init(r25558);
        mpfr_init(r25559);
        mpfr_init(r25560);
        mpfr_init_set_str(r25561, "1.2121253201225153e+152", 10, MPFR_RNDN);
        mpfr_init(r25562);
        mpfr_init(r25563);
        mpfr_init(r25564);
        mpfr_init(r25565);
        mpfr_init(r25566);
        mpfr_init_set_str(r25567, "1.3579032328480138e+260", 10, MPFR_RNDN);
        mpfr_init(r25568);
        mpfr_init(r25569);
        mpfr_init(r25570);
        mpfr_init(r25571);
        mpfr_init(r25572);
        mpfr_init(r25573);
        mpfr_init(r25574);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r25523, im, MPFR_RNDN);
        mpfr_set_d(r25524, re, MPFR_RNDN);
        mpfr_add(r25525, r25523, r25524, MPFR_RNDN);
        mpfr_mul(r25526, r25522, r25525, MPFR_RNDN);
        ;
        mpfr_set_si(r25528, mpfr_cmp(r25526, r25527) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25529, r25522, MPFR_RNDN);
        ;
        mpfr_mul(r25531, r25529, r25530, MPFR_RNDN);
        ;
        mpfr_mul(r25533, r25532, r25524, MPFR_RNDN);
        mpfr_sqrt(r25534, r25533, MPFR_RNDN);
        mpfr_div(r25535, r25531, r25534, MPFR_RNDN);
        mpfr_abs(r25536, r25523, MPFR_RNDN);
        mpfr_mul(r25537, r25535, r25536, MPFR_RNDN);
        ;
        mpfr_set_si(r25539, mpfr_cmp(r25526, r25538) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25540, r25529, MPFR_RNDN);
        mpfr_mul(r25541, r25540, r25536, MPFR_RNDN);
        mpfr_mul(r25542, r25540, r25541, MPFR_RNDN);
        mpfr_mul(r25543, r25524, r25524, MPFR_RNDN);
        mpfr_mul(r25544, r25523, r25523, MPFR_RNDN);
        mpfr_add(r25545, r25543, r25544, MPFR_RNDN);
        mpfr_sqrt(r25546, r25545, MPFR_RNDN);
        mpfr_sub(r25547, r25546, r25524, MPFR_RNDN);
        mpfr_sqrt(r25548, r25547, MPFR_RNDN);
        mpfr_div(r25549, r25542, r25548, MPFR_RNDN);
        mpfr_mul(r25550, r25530, r25549, MPFR_RNDN);
        ;
        mpfr_set_si(r25552, mpfr_cmp(r25526, r25551) <= 0, MPFR_RNDN);
        mpfr_add(r25553, r25524, r25524, MPFR_RNDN);
        mpfr_mul(r25554, r25522, r25553, MPFR_RNDN);
        mpfr_sqrt(r25555, r25554, MPFR_RNDN);
        mpfr_mul(r25556, r25530, r25555, MPFR_RNDN);
        ;
        mpfr_set_si(r25558, mpfr_cmp(r25526, r25557) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25559, r25526, MPFR_RNDN);
        mpfr_mul(r25560, r25530, r25559, MPFR_RNDN);
        ;
        mpfr_set_si(r25562, mpfr_cmp(r25526, r25561) <= 0, MPFR_RNDN);
        mpfr_add(r25563, r25546, r25524, MPFR_RNDN);
        mpfr_mul(r25564, r25522, r25563, MPFR_RNDN);
        mpfr_sqrt(r25565, r25564, MPFR_RNDN);
        mpfr_mul(r25566, r25530, r25565, MPFR_RNDN);
        ;
        mpfr_set_si(r25568, mpfr_cmp(r25526, r25567) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r25568, MPFR_RNDN)) { mpfr_set(r25569, r25560, MPFR_RNDN); } else { mpfr_set(r25569, r25556, MPFR_RNDN); };
        if (mpfr_get_si(r25562, MPFR_RNDN)) { mpfr_set(r25570, r25566, MPFR_RNDN); } else { mpfr_set(r25570, r25569, MPFR_RNDN); };
        if (mpfr_get_si(r25558, MPFR_RNDN)) { mpfr_set(r25571, r25560, MPFR_RNDN); } else { mpfr_set(r25571, r25570, MPFR_RNDN); };
        if (mpfr_get_si(r25552, MPFR_RNDN)) { mpfr_set(r25572, r25556, MPFR_RNDN); } else { mpfr_set(r25572, r25571, MPFR_RNDN); };
        if (mpfr_get_si(r25539, MPFR_RNDN)) { mpfr_set(r25573, r25550, MPFR_RNDN); } else { mpfr_set(r25573, r25572, MPFR_RNDN); };
        if (mpfr_get_si(r25528, MPFR_RNDN)) { mpfr_set(r25574, r25537, MPFR_RNDN); } else { mpfr_set(r25574, r25573, MPFR_RNDN); };
        return mpfr_get_d(r25574, MPFR_RNDN);
}

