#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 r28379 = 0.5;
        float r28380 = 2.0;
        float r28381 = re;
        float r28382 = r28381 * r28381;
        float r28383 = im;
        float r28384 = r28383 * r28383;
        float r28385 = r28382 + r28384;
        float r28386 = sqrt(r28385);
        float r28387 = r28386 + r28381;
        float r28388 = r28380 * r28387;
        float r28389 = sqrt(r28388);
        float r28390 = r28379 * r28389;
        return r28390;
}

double f_id(double re, double im) {
        double r28391 = 0.5;
        double r28392 = 2.0;
        double r28393 = re;
        double r28394 = r28393 * r28393;
        double r28395 = im;
        double r28396 = r28395 * r28395;
        double r28397 = r28394 + r28396;
        double r28398 = sqrt(r28397);
        double r28399 = r28398 + r28393;
        double r28400 = r28392 * r28399;
        double r28401 = sqrt(r28400);
        double r28402 = r28391 * r28401;
        return r28402;
}


double f_of(float re, float im) {
        float r28403 = 2.0;
        float r28404 = re;
        float r28405 = im;
        float r28406 = r28404 - r28405;
        float r28407 = r28403 * r28406;
        float r28408 = r28404 * r28404;
        float r28409 = r28405 * r28405;
        float r28410 = r28408 + r28409;
        float r28411 = sqrt(r28410);
        float r28412 = r28404 + r28411;
        float r28413 = r28403 * r28412;
        float r28414 = sqrt(r28413);
        float r28415 = r28407 * r28414;
        float r28416 = cbrt(r28415);
        float r28417 = 0.5;
        float r28418 = r28416 * r28417;
        float r28419 = -1.3242760520716525e-143;
        bool r28420 = r28418 <= r28419;
        float r28421 = r28405 + r28404;
        float r28422 = r28403 * r28421;
        float r28423 = sqrt(r28422);
        float r28424 = r28417 * r28423;
        float r28425 = 1.4249198247416213e-147;
        bool r28426 = r28418 <= r28425;
        float r28427 = r28403 * r28409;
        float r28428 = sqrt(r28427);
        float r28429 = r28411 - r28404;
        float r28430 = sqrt(r28429);
        float r28431 = r28428 / r28430;
        float r28432 = r28417 * r28431;
        float r28433 = 6.412409989775353e+307;
        bool r28434 = r28418 <= r28433;
        float r28435 = r28404 + r28404;
        float r28436 = r28403 * r28435;
        float r28437 = sqrt(r28436);
        float r28438 = r28417 * r28437;
        float r28439 = r28434 ? r28418 : r28438;
        float r28440 = r28426 ? r28432 : r28439;
        float r28441 = r28420 ? r28424 : r28440;
        return r28441;
}

double f_od(double re, double im) {
        double r28442 = 2.0;
        double r28443 = re;
        double r28444 = im;
        double r28445 = r28443 - r28444;
        double r28446 = r28442 * r28445;
        double r28447 = r28443 * r28443;
        double r28448 = r28444 * r28444;
        double r28449 = r28447 + r28448;
        double r28450 = sqrt(r28449);
        double r28451 = r28443 + r28450;
        double r28452 = r28442 * r28451;
        double r28453 = sqrt(r28452);
        double r28454 = r28446 * r28453;
        double r28455 = cbrt(r28454);
        double r28456 = 0.5;
        double r28457 = r28455 * r28456;
        double r28458 = -1.3242760520716525e-143;
        bool r28459 = r28457 <= r28458;
        double r28460 = r28444 + r28443;
        double r28461 = r28442 * r28460;
        double r28462 = sqrt(r28461);
        double r28463 = r28456 * r28462;
        double r28464 = 1.4249198247416213e-147;
        bool r28465 = r28457 <= r28464;
        double r28466 = r28442 * r28448;
        double r28467 = sqrt(r28466);
        double r28468 = r28450 - r28443;
        double r28469 = sqrt(r28468);
        double r28470 = r28467 / r28469;
        double r28471 = r28456 * r28470;
        double r28472 = 6.412409989775353e+307;
        bool r28473 = r28457 <= r28472;
        double r28474 = r28443 + r28443;
        double r28475 = r28442 * r28474;
        double r28476 = sqrt(r28475);
        double r28477 = r28456 * r28476;
        double r28478 = r28473 ? r28457 : r28477;
        double r28479 = r28465 ? r28471 : r28478;
        double r28480 = r28459 ? r28463 : r28479;
        return r28480;
}

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 r28481, r28482, r28483, r28484, r28485, r28486, r28487, r28488, r28489, r28490, r28491, r28492;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r28481, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r28482, "2.0", 10, MPFR_RNDN);
        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);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r28483, re, MPFR_RNDN);
        mpfr_mul(r28484, r28483, r28483, MPFR_RNDN);
        mpfr_set_d(r28485, im, MPFR_RNDN);
        mpfr_mul(r28486, r28485, r28485, MPFR_RNDN);
        mpfr_add(r28487, r28484, r28486, MPFR_RNDN);
        mpfr_sqrt(r28488, r28487, MPFR_RNDN);
        mpfr_add(r28489, r28488, r28483, MPFR_RNDN);
        mpfr_mul(r28490, r28482, r28489, MPFR_RNDN);
        mpfr_sqrt(r28491, r28490, MPFR_RNDN);
        mpfr_mul(r28492, r28481, r28491, MPFR_RNDN);
        return mpfr_get_d(r28492, MPFR_RNDN);
}

static mpfr_t r28493, r28494, r28495, r28496, r28497, r28498, r28499, r28500, r28501, r28502, r28503, r28504, r28505, r28506, r28507, r28508, r28509, r28510, r28511, r28512, r28513, r28514, r28515, r28516, r28517, r28518, r28519, r28520, r28521, r28522, r28523, r28524, r28525, r28526, r28527, r28528, r28529, r28530, r28531;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r28493, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28494);
        mpfr_init(r28495);
        mpfr_init(r28496);
        mpfr_init(r28497);
        mpfr_init(r28498);
        mpfr_init(r28499);
        mpfr_init(r28500);
        mpfr_init(r28501);
        mpfr_init(r28502);
        mpfr_init(r28503);
        mpfr_init(r28504);
        mpfr_init(r28505);
        mpfr_init(r28506);
        mpfr_init_set_str(r28507, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28508);
        mpfr_init_set_str(r28509, "-1.3242760520716525e-143", 10, MPFR_RNDN);
        mpfr_init(r28510);
        mpfr_init(r28511);
        mpfr_init(r28512);
        mpfr_init(r28513);
        mpfr_init(r28514);
        mpfr_init_set_str(r28515, "1.4249198247416213e-147", 10, MPFR_RNDN);
        mpfr_init(r28516);
        mpfr_init(r28517);
        mpfr_init(r28518);
        mpfr_init(r28519);
        mpfr_init(r28520);
        mpfr_init(r28521);
        mpfr_init(r28522);
        mpfr_init_set_str(r28523, "6.412409989775353e+307", 10, MPFR_RNDN);
        mpfr_init(r28524);
        mpfr_init(r28525);
        mpfr_init(r28526);
        mpfr_init(r28527);
        mpfr_init(r28528);
        mpfr_init(r28529);
        mpfr_init(r28530);
        mpfr_init(r28531);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r28494, re, MPFR_RNDN);
        mpfr_set_d(r28495, im, MPFR_RNDN);
        mpfr_sub(r28496, r28494, r28495, MPFR_RNDN);
        mpfr_mul(r28497, r28493, r28496, MPFR_RNDN);
        mpfr_mul(r28498, r28494, r28494, MPFR_RNDN);
        mpfr_mul(r28499, r28495, r28495, MPFR_RNDN);
        mpfr_add(r28500, r28498, r28499, MPFR_RNDN);
        mpfr_sqrt(r28501, r28500, MPFR_RNDN);
        mpfr_add(r28502, r28494, r28501, MPFR_RNDN);
        mpfr_mul(r28503, r28493, r28502, MPFR_RNDN);
        mpfr_sqrt(r28504, r28503, MPFR_RNDN);
        mpfr_mul(r28505, r28497, r28504, MPFR_RNDN);
        mpfr_cbrt(r28506, r28505, MPFR_RNDN);
        ;
        mpfr_mul(r28508, r28506, r28507, MPFR_RNDN);
        ;
        mpfr_set_si(r28510, mpfr_cmp(r28508, r28509) <= 0, MPFR_RNDN);
        mpfr_add(r28511, r28495, r28494, MPFR_RNDN);
        mpfr_mul(r28512, r28493, r28511, MPFR_RNDN);
        mpfr_sqrt(r28513, r28512, MPFR_RNDN);
        mpfr_mul(r28514, r28507, r28513, MPFR_RNDN);
        ;
        mpfr_set_si(r28516, mpfr_cmp(r28508, r28515) <= 0, MPFR_RNDN);
        mpfr_mul(r28517, r28493, r28499, MPFR_RNDN);
        mpfr_sqrt(r28518, r28517, MPFR_RNDN);
        mpfr_sub(r28519, r28501, r28494, MPFR_RNDN);
        mpfr_sqrt(r28520, r28519, MPFR_RNDN);
        mpfr_div(r28521, r28518, r28520, MPFR_RNDN);
        mpfr_mul(r28522, r28507, r28521, MPFR_RNDN);
        ;
        mpfr_set_si(r28524, mpfr_cmp(r28508, r28523) <= 0, MPFR_RNDN);
        mpfr_add(r28525, r28494, r28494, MPFR_RNDN);
        mpfr_mul(r28526, r28493, r28525, MPFR_RNDN);
        mpfr_sqrt(r28527, r28526, MPFR_RNDN);
        mpfr_mul(r28528, r28507, r28527, MPFR_RNDN);
        if (mpfr_get_si(r28524, MPFR_RNDN)) { mpfr_set(r28529, r28508, MPFR_RNDN); } else { mpfr_set(r28529, r28528, MPFR_RNDN); };
        if (mpfr_get_si(r28516, MPFR_RNDN)) { mpfr_set(r28530, r28522, MPFR_RNDN); } else { mpfr_set(r28530, r28529, MPFR_RNDN); };
        if (mpfr_get_si(r28510, MPFR_RNDN)) { mpfr_set(r28531, r28514, MPFR_RNDN); } else { mpfr_set(r28531, r28530, MPFR_RNDN); };
        return mpfr_get_d(r28531, MPFR_RNDN);
}

static mpfr_t 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, r28570;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r28532, "2.0", 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_set_str(r28546, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28547);
        mpfr_init_set_str(r28548, "-1.3242760520716525e-143", 10, MPFR_RNDN);
        mpfr_init(r28549);
        mpfr_init(r28550);
        mpfr_init(r28551);
        mpfr_init(r28552);
        mpfr_init(r28553);
        mpfr_init_set_str(r28554, "1.4249198247416213e-147", 10, MPFR_RNDN);
        mpfr_init(r28555);
        mpfr_init(r28556);
        mpfr_init(r28557);
        mpfr_init(r28558);
        mpfr_init(r28559);
        mpfr_init(r28560);
        mpfr_init(r28561);
        mpfr_init_set_str(r28562, "6.412409989775353e+307", 10, MPFR_RNDN);
        mpfr_init(r28563);
        mpfr_init(r28564);
        mpfr_init(r28565);
        mpfr_init(r28566);
        mpfr_init(r28567);
        mpfr_init(r28568);
        mpfr_init(r28569);
        mpfr_init(r28570);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r28533, re, MPFR_RNDN);
        mpfr_set_d(r28534, im, MPFR_RNDN);
        mpfr_sub(r28535, r28533, r28534, MPFR_RNDN);
        mpfr_mul(r28536, r28532, r28535, MPFR_RNDN);
        mpfr_mul(r28537, r28533, r28533, MPFR_RNDN);
        mpfr_mul(r28538, r28534, r28534, MPFR_RNDN);
        mpfr_add(r28539, r28537, r28538, MPFR_RNDN);
        mpfr_sqrt(r28540, r28539, MPFR_RNDN);
        mpfr_add(r28541, r28533, r28540, MPFR_RNDN);
        mpfr_mul(r28542, r28532, r28541, MPFR_RNDN);
        mpfr_sqrt(r28543, r28542, MPFR_RNDN);
        mpfr_mul(r28544, r28536, r28543, MPFR_RNDN);
        mpfr_cbrt(r28545, r28544, MPFR_RNDN);
        ;
        mpfr_mul(r28547, r28545, r28546, MPFR_RNDN);
        ;
        mpfr_set_si(r28549, mpfr_cmp(r28547, r28548) <= 0, MPFR_RNDN);
        mpfr_add(r28550, r28534, r28533, MPFR_RNDN);
        mpfr_mul(r28551, r28532, r28550, MPFR_RNDN);
        mpfr_sqrt(r28552, r28551, MPFR_RNDN);
        mpfr_mul(r28553, r28546, r28552, MPFR_RNDN);
        ;
        mpfr_set_si(r28555, mpfr_cmp(r28547, r28554) <= 0, MPFR_RNDN);
        mpfr_mul(r28556, r28532, r28538, MPFR_RNDN);
        mpfr_sqrt(r28557, r28556, MPFR_RNDN);
        mpfr_sub(r28558, r28540, r28533, MPFR_RNDN);
        mpfr_sqrt(r28559, r28558, MPFR_RNDN);
        mpfr_div(r28560, r28557, r28559, MPFR_RNDN);
        mpfr_mul(r28561, r28546, r28560, MPFR_RNDN);
        ;
        mpfr_set_si(r28563, mpfr_cmp(r28547, r28562) <= 0, MPFR_RNDN);
        mpfr_add(r28564, r28533, r28533, MPFR_RNDN);
        mpfr_mul(r28565, r28532, r28564, MPFR_RNDN);
        mpfr_sqrt(r28566, r28565, MPFR_RNDN);
        mpfr_mul(r28567, r28546, r28566, MPFR_RNDN);
        if (mpfr_get_si(r28563, MPFR_RNDN)) { mpfr_set(r28568, r28547, MPFR_RNDN); } else { mpfr_set(r28568, r28567, MPFR_RNDN); };
        if (mpfr_get_si(r28555, MPFR_RNDN)) { mpfr_set(r28569, r28561, MPFR_RNDN); } else { mpfr_set(r28569, r28568, MPFR_RNDN); };
        if (mpfr_get_si(r28549, MPFR_RNDN)) { mpfr_set(r28570, r28553, MPFR_RNDN); } else { mpfr_set(r28570, r28569, MPFR_RNDN); };
        return mpfr_get_d(r28570, MPFR_RNDN);
}

