#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 r19431 = 0.5f;
        float r19432 = 2.0f;
        float r19433 = re;
        float r19434 = r19433 * r19433;
        float r19435 = im;
        float r19436 = r19435 * r19435;
        float r19437 = r19434 + r19436;
        float r19438 = sqrt(r19437);
        float r19439 = r19438 + r19433;
        float r19440 = r19432 * r19439;
        float r19441 = sqrt(r19440);
        float r19442 = r19431 * r19441;
        return r19442;
}

double f_id(double re, double im) {
        double r19443 = 0.5;
        double r19444 = 2.0;
        double r19445 = re;
        double r19446 = r19445 * r19445;
        double r19447 = im;
        double r19448 = r19447 * r19447;
        double r19449 = r19446 + r19448;
        double r19450 = sqrt(r19449);
        double r19451 = r19450 + r19445;
        double r19452 = r19444 * r19451;
        double r19453 = sqrt(r19452);
        double r19454 = r19443 * r19453;
        return r19454;
}


double f_of(float re, float im) {
        float r19455 = re;
        float r19456 = -2.3894507261462783e-112f;
        bool r19457 = r19455 <= r19456;
        float r19458 = 0.5f;
        float r19459 = 2.0f;
        float r19460 = im;
        float r19461 = r19459 * r19460;
        float r19462 = r19461 * r19460;
        float r19463 = sqrt(r19462);
        float r19464 = r19455 * r19455;
        float r19465 = r19460 * r19460;
        float r19466 = r19464 + r19465;
        float r19467 = sqrt(r19466);
        float r19468 = r19467 - r19455;
        float r19469 = sqrt(r19468);
        float r19470 = r19463 / r19469;
        float r19471 = r19458 * r19470;
        float r19472 = 4.185543182523104e-238f;
        bool r19473 = r19455 <= r19472;
        float r19474 = r19460 + r19455;
        float r19475 = r19459 * r19474;
        float r19476 = sqrt(r19475);
        float r19477 = r19458 * r19476;
        float r19478 = 1.0258373431142267e+152f;
        bool r19479 = r19455 <= r19478;
        float r19480 = cbrt(r19466);
        float r19481 = sqrt(r19480);
        float r19482 = r19481 * r19481;
        float r19483 = r19482 * (r19482 * r19482);
        float r19484 = sqrt(r19483);
        float r19485 = r19484 + r19455;
        float r19486 = r19459 * r19485;
        float r19487 = sqrt(r19486);
        float r19488 = r19458 * r19487;
        float r19489 = r19455 + r19455;
        float r19490 = r19459 * r19489;
        float r19491 = sqrt(r19490);
        float r19492 = r19458 * r19491;
        float r19493 = r19479 ? r19488 : r19492;
        float r19494 = r19473 ? r19477 : r19493;
        float r19495 = r19457 ? r19471 : r19494;
        return r19495;
}

double f_od(double re, double im) {
        double r19496 = re;
        double r19497 = -2.3894507261462783e-112;
        bool r19498 = r19496 <= r19497;
        double r19499 = 0.5;
        double r19500 = 2.0;
        double r19501 = im;
        double r19502 = r19500 * r19501;
        double r19503 = r19502 * r19501;
        double r19504 = sqrt(r19503);
        double r19505 = r19496 * r19496;
        double r19506 = r19501 * r19501;
        double r19507 = r19505 + r19506;
        double r19508 = sqrt(r19507);
        double r19509 = r19508 - r19496;
        double r19510 = sqrt(r19509);
        double r19511 = r19504 / r19510;
        double r19512 = r19499 * r19511;
        double r19513 = 4.185543182523104e-238;
        bool r19514 = r19496 <= r19513;
        double r19515 = r19501 + r19496;
        double r19516 = r19500 * r19515;
        double r19517 = sqrt(r19516);
        double r19518 = r19499 * r19517;
        double r19519 = 1.0258373431142267e+152;
        bool r19520 = r19496 <= r19519;
        double r19521 = cbrt(r19507);
        double r19522 = sqrt(r19521);
        double r19523 = r19522 * r19522;
        double r19524 = r19523 * (r19523 * r19523);
        double r19525 = sqrt(r19524);
        double r19526 = r19525 + r19496;
        double r19527 = r19500 * r19526;
        double r19528 = sqrt(r19527);
        double r19529 = r19499 * r19528;
        double r19530 = r19496 + r19496;
        double r19531 = r19500 * r19530;
        double r19532 = sqrt(r19531);
        double r19533 = r19499 * r19532;
        double r19534 = r19520 ? r19529 : r19533;
        double r19535 = r19514 ? r19518 : r19534;
        double r19536 = r19498 ? r19512 : r19535;
        return r19536;
}

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 r19537, r19538, r19539, r19540, r19541, r19542, r19543, r19544, r19545, r19546, r19547, r19548;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19537, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19538, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19539);
        mpfr_init(r19540);
        mpfr_init(r19541);
        mpfr_init(r19542);
        mpfr_init(r19543);
        mpfr_init(r19544);
        mpfr_init(r19545);
        mpfr_init(r19546);
        mpfr_init(r19547);
        mpfr_init(r19548);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19539, re, MPFR_RNDN);
        mpfr_mul(r19540, r19539, r19539, MPFR_RNDN);
        mpfr_set_d(r19541, im, MPFR_RNDN);
        mpfr_mul(r19542, r19541, r19541, MPFR_RNDN);
        mpfr_add(r19543, r19540, r19542, MPFR_RNDN);
        mpfr_sqrt(r19544, r19543, MPFR_RNDN);
        mpfr_add(r19545, r19544, r19539, MPFR_RNDN);
        mpfr_mul(r19546, r19538, r19545, MPFR_RNDN);
        mpfr_sqrt(r19547, r19546, MPFR_RNDN);
        mpfr_mul(r19548, r19537, r19547, MPFR_RNDN);
        return mpfr_get_d(r19548, MPFR_RNDN);
}

static mpfr_t r19549, r19550, r19551, r19552, r19553, r19554, r19555, r19556, r19557, r19558, r19559, r19560, r19561, r19562, r19563, r19564, r19565, r19566, r19567, r19568, r19569, r19570, r19571, r19572, r19573, r19574, r19575, r19576, r19577, r19578, r19579, r19580, r19581, r19582, r19583, r19584, r19585, r19586, r19587, r19588, r19589;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19549);
        mpfr_init_set_str(r19550, "-2.3894507261462783e-112", 10, MPFR_RNDN);
        mpfr_init(r19551);
        mpfr_init_set_str(r19552, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19553, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19554);
        mpfr_init(r19555);
        mpfr_init(r19556);
        mpfr_init(r19557);
        mpfr_init(r19558);
        mpfr_init(r19559);
        mpfr_init(r19560);
        mpfr_init(r19561);
        mpfr_init(r19562);
        mpfr_init(r19563);
        mpfr_init(r19564);
        mpfr_init(r19565);
        mpfr_init_set_str(r19566, "4.185543182523104e-238", 10, MPFR_RNDN);
        mpfr_init(r19567);
        mpfr_init(r19568);
        mpfr_init(r19569);
        mpfr_init(r19570);
        mpfr_init(r19571);
        mpfr_init_set_str(r19572, "1.0258373431142267e+152", 10, MPFR_RNDN);
        mpfr_init(r19573);
        mpfr_init(r19574);
        mpfr_init(r19575);
        mpfr_init(r19576);
        mpfr_init(r19577);
        mpfr_init(r19578);
        mpfr_init(r19579);
        mpfr_init(r19580);
        mpfr_init(r19581);
        mpfr_init(r19582);
        mpfr_init(r19583);
        mpfr_init(r19584);
        mpfr_init(r19585);
        mpfr_init(r19586);
        mpfr_init(r19587);
        mpfr_init(r19588);
        mpfr_init(r19589);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19549, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19551, mpfr_cmp(r19549, r19550) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19554, im, MPFR_RNDN);
        mpfr_mul(r19555, r19553, r19554, MPFR_RNDN);
        mpfr_mul(r19556, r19555, r19554, MPFR_RNDN);
        mpfr_sqrt(r19557, r19556, MPFR_RNDN);
        mpfr_sqr(r19558, r19549, MPFR_RNDN);
        mpfr_mul(r19559, r19554, r19554, MPFR_RNDN);
        mpfr_add(r19560, r19558, r19559, MPFR_RNDN);
        mpfr_sqrt(r19561, r19560, MPFR_RNDN);
        mpfr_sub(r19562, r19561, r19549, MPFR_RNDN);
        mpfr_sqrt(r19563, r19562, MPFR_RNDN);
        mpfr_div(r19564, r19557, r19563, MPFR_RNDN);
        mpfr_mul(r19565, r19552, r19564, MPFR_RNDN);
        ;
        mpfr_set_si(r19567, mpfr_cmp(r19549, r19566) <= 0, MPFR_RNDN);
        mpfr_add(r19568, r19554, r19549, MPFR_RNDN);
        mpfr_mul(r19569, r19553, r19568, MPFR_RNDN);
        mpfr_sqrt(r19570, r19569, MPFR_RNDN);
        mpfr_mul(r19571, r19552, r19570, MPFR_RNDN);
        ;
        mpfr_set_si(r19573, mpfr_cmp(r19549, r19572) <= 0, MPFR_RNDN);
        mpfr_cbrt(r19574, r19560, MPFR_RNDN);
        mpfr_sqrt(r19575, r19574, MPFR_RNDN);
        mpfr_sqr(r19576, r19575, MPFR_RNDN);
        mpfr_mul(r19577, r19576, r19576, MPFR_RNDN); mpfr_mul(r19577, r19577, r19576, MPFR_RNDN);
        mpfr_sqrt(r19578, r19577, MPFR_RNDN);
        mpfr_add(r19579, r19578, r19549, MPFR_RNDN);
        mpfr_mul(r19580, r19553, r19579, MPFR_RNDN);
        mpfr_sqrt(r19581, r19580, MPFR_RNDN);
        mpfr_mul(r19582, r19552, r19581, MPFR_RNDN);
        mpfr_add(r19583, r19549, r19549, MPFR_RNDN);
        mpfr_mul(r19584, r19553, r19583, MPFR_RNDN);
        mpfr_sqrt(r19585, r19584, MPFR_RNDN);
        mpfr_mul(r19586, r19552, r19585, MPFR_RNDN);
        if (mpfr_get_si(r19573, MPFR_RNDN)) { mpfr_set(r19587, r19582, MPFR_RNDN); } else { mpfr_set(r19587, r19586, MPFR_RNDN); };
        if (mpfr_get_si(r19567, MPFR_RNDN)) { mpfr_set(r19588, r19571, MPFR_RNDN); } else { mpfr_set(r19588, r19587, MPFR_RNDN); };
        if (mpfr_get_si(r19551, MPFR_RNDN)) { mpfr_set(r19589, r19565, MPFR_RNDN); } else { mpfr_set(r19589, r19588, MPFR_RNDN); };
        return mpfr_get_d(r19589, MPFR_RNDN);
}

static mpfr_t r19590, r19591, r19592, r19593, r19594, r19595, r19596, r19597, r19598, r19599, r19600, r19601, r19602, r19603, r19604, r19605, r19606, r19607, r19608, r19609, r19610, r19611, r19612, r19613, r19614, r19615, r19616, r19617, r19618, r19619, r19620, r19621, r19622, r19623, r19624, r19625, r19626, r19627, r19628, r19629, r19630;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19590);
        mpfr_init_set_str(r19591, "-2.3894507261462783e-112", 10, MPFR_RNDN);
        mpfr_init(r19592);
        mpfr_init_set_str(r19593, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19594, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19595);
        mpfr_init(r19596);
        mpfr_init(r19597);
        mpfr_init(r19598);
        mpfr_init(r19599);
        mpfr_init(r19600);
        mpfr_init(r19601);
        mpfr_init(r19602);
        mpfr_init(r19603);
        mpfr_init(r19604);
        mpfr_init(r19605);
        mpfr_init(r19606);
        mpfr_init_set_str(r19607, "4.185543182523104e-238", 10, MPFR_RNDN);
        mpfr_init(r19608);
        mpfr_init(r19609);
        mpfr_init(r19610);
        mpfr_init(r19611);
        mpfr_init(r19612);
        mpfr_init_set_str(r19613, "1.0258373431142267e+152", 10, MPFR_RNDN);
        mpfr_init(r19614);
        mpfr_init(r19615);
        mpfr_init(r19616);
        mpfr_init(r19617);
        mpfr_init(r19618);
        mpfr_init(r19619);
        mpfr_init(r19620);
        mpfr_init(r19621);
        mpfr_init(r19622);
        mpfr_init(r19623);
        mpfr_init(r19624);
        mpfr_init(r19625);
        mpfr_init(r19626);
        mpfr_init(r19627);
        mpfr_init(r19628);
        mpfr_init(r19629);
        mpfr_init(r19630);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19590, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19592, mpfr_cmp(r19590, r19591) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19595, im, MPFR_RNDN);
        mpfr_mul(r19596, r19594, r19595, MPFR_RNDN);
        mpfr_mul(r19597, r19596, r19595, MPFR_RNDN);
        mpfr_sqrt(r19598, r19597, MPFR_RNDN);
        mpfr_sqr(r19599, r19590, MPFR_RNDN);
        mpfr_mul(r19600, r19595, r19595, MPFR_RNDN);
        mpfr_add(r19601, r19599, r19600, MPFR_RNDN);
        mpfr_sqrt(r19602, r19601, MPFR_RNDN);
        mpfr_sub(r19603, r19602, r19590, MPFR_RNDN);
        mpfr_sqrt(r19604, r19603, MPFR_RNDN);
        mpfr_div(r19605, r19598, r19604, MPFR_RNDN);
        mpfr_mul(r19606, r19593, r19605, MPFR_RNDN);
        ;
        mpfr_set_si(r19608, mpfr_cmp(r19590, r19607) <= 0, MPFR_RNDN);
        mpfr_add(r19609, r19595, r19590, MPFR_RNDN);
        mpfr_mul(r19610, r19594, r19609, MPFR_RNDN);
        mpfr_sqrt(r19611, r19610, MPFR_RNDN);
        mpfr_mul(r19612, r19593, r19611, MPFR_RNDN);
        ;
        mpfr_set_si(r19614, mpfr_cmp(r19590, r19613) <= 0, MPFR_RNDN);
        mpfr_cbrt(r19615, r19601, MPFR_RNDN);
        mpfr_sqrt(r19616, r19615, MPFR_RNDN);
        mpfr_sqr(r19617, r19616, MPFR_RNDN);
        mpfr_mul(r19618, r19617, r19617, MPFR_RNDN); mpfr_mul(r19618, r19618, r19617, MPFR_RNDN);
        mpfr_sqrt(r19619, r19618, MPFR_RNDN);
        mpfr_add(r19620, r19619, r19590, MPFR_RNDN);
        mpfr_mul(r19621, r19594, r19620, MPFR_RNDN);
        mpfr_sqrt(r19622, r19621, MPFR_RNDN);
        mpfr_mul(r19623, r19593, r19622, MPFR_RNDN);
        mpfr_add(r19624, r19590, r19590, MPFR_RNDN);
        mpfr_mul(r19625, r19594, r19624, MPFR_RNDN);
        mpfr_sqrt(r19626, r19625, MPFR_RNDN);
        mpfr_mul(r19627, r19593, r19626, MPFR_RNDN);
        if (mpfr_get_si(r19614, MPFR_RNDN)) { mpfr_set(r19628, r19623, MPFR_RNDN); } else { mpfr_set(r19628, r19627, MPFR_RNDN); };
        if (mpfr_get_si(r19608, MPFR_RNDN)) { mpfr_set(r19629, r19612, MPFR_RNDN); } else { mpfr_set(r19629, r19628, MPFR_RNDN); };
        if (mpfr_get_si(r19592, MPFR_RNDN)) { mpfr_set(r19630, r19606, MPFR_RNDN); } else { mpfr_set(r19630, r19629, MPFR_RNDN); };
        return mpfr_get_d(r19630, MPFR_RNDN);
}

