#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 r19463 = 0.5f;
        float r19464 = 2.0f;
        float r19465 = re;
        float r19466 = r19465 * r19465;
        float r19467 = im;
        float r19468 = r19467 * r19467;
        float r19469 = r19466 + r19468;
        float r19470 = sqrt(r19469);
        float r19471 = r19470 + r19465;
        float r19472 = r19464 * r19471;
        float r19473 = sqrt(r19472);
        float r19474 = r19463 * r19473;
        return r19474;
}

double f_id(double re, double im) {
        double r19475 = 0.5;
        double r19476 = 2.0;
        double r19477 = re;
        double r19478 = r19477 * r19477;
        double r19479 = im;
        double r19480 = r19479 * r19479;
        double r19481 = r19478 + r19480;
        double r19482 = sqrt(r19481);
        double r19483 = r19482 + r19477;
        double r19484 = r19476 * r19483;
        double r19485 = sqrt(r19484);
        double r19486 = r19475 * r19485;
        return r19486;
}


double f_of(float re, float im) {
        float r19487 = re;
        float r19488 = 5.025445854041876e-39f;
        bool r19489 = r19487 <= r19488;
        float r19490 = 0.5f;
        float r19491 = 2.0f;
        float r19492 = im;
        float r19493 = r19491 * r19492;
        float r19494 = r19493 * r19492;
        float r19495 = sqrt(r19494);
        float r19496 = r19487 * r19487;
        float r19497 = r19492 * r19492;
        float r19498 = r19496 + r19497;
        float r19499 = sqrt(r19498);
        float r19500 = r19499 - r19487;
        float r19501 = sqrt(r19500);
        float r19502 = r19495 / r19501;
        float r19503 = r19490 * r19502;
        float r19504 = 1212733.375f;
        bool r19505 = r19487 <= r19504;
        float r19506 = sqrt(r19499);
        float r19507 = r19506 * r19506;
        float r19508 = r19507 + r19487;
        float r19509 = r19491 * r19508;
        float r19510 = sqrt(r19509);
        float r19511 = r19510 * (r19510 * r19510);
        float r19512 = cbrt(r19511);
        float r19513 = r19490 * r19512;
        float r19514 = r19487 + r19487;
        float r19515 = r19491 * r19514;
        float r19516 = sqrt(r19515);
        float r19517 = r19490 * r19516;
        float r19518 = r19505 ? r19513 : r19517;
        float r19519 = r19489 ? r19503 : r19518;
        return r19519;
}

double f_od(double re, double im) {
        double r19520 = re;
        double r19521 = 5.025445854041876e-39;
        bool r19522 = r19520 <= r19521;
        double r19523 = 0.5;
        double r19524 = 2.0;
        double r19525 = im;
        double r19526 = r19524 * r19525;
        double r19527 = r19526 * r19525;
        double r19528 = sqrt(r19527);
        double r19529 = r19520 * r19520;
        double r19530 = r19525 * r19525;
        double r19531 = r19529 + r19530;
        double r19532 = sqrt(r19531);
        double r19533 = r19532 - r19520;
        double r19534 = sqrt(r19533);
        double r19535 = r19528 / r19534;
        double r19536 = r19523 * r19535;
        double r19537 = 1212733.375;
        bool r19538 = r19520 <= r19537;
        double r19539 = sqrt(r19532);
        double r19540 = r19539 * r19539;
        double r19541 = r19540 + r19520;
        double r19542 = r19524 * r19541;
        double r19543 = sqrt(r19542);
        double r19544 = r19543 * (r19543 * r19543);
        double r19545 = cbrt(r19544);
        double r19546 = r19523 * r19545;
        double r19547 = r19520 + r19520;
        double r19548 = r19524 * r19547;
        double r19549 = sqrt(r19548);
        double r19550 = r19523 * r19549;
        double r19551 = r19538 ? r19546 : r19550;
        double r19552 = r19522 ? r19536 : r19551;
        return r19552;
}

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 r19553, r19554, r19555, r19556, r19557, r19558, r19559, r19560, r19561, r19562, r19563, r19564;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19553, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19554, "2.0", 10, MPFR_RNDN);
        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);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19555, re, MPFR_RNDN);
        mpfr_mul(r19556, r19555, r19555, MPFR_RNDN);
        mpfr_set_d(r19557, im, MPFR_RNDN);
        mpfr_mul(r19558, r19557, r19557, MPFR_RNDN);
        mpfr_add(r19559, r19556, r19558, MPFR_RNDN);
        mpfr_sqrt(r19560, r19559, MPFR_RNDN);
        mpfr_add(r19561, r19560, r19555, MPFR_RNDN);
        mpfr_mul(r19562, r19554, r19561, MPFR_RNDN);
        mpfr_sqrt(r19563, r19562, MPFR_RNDN);
        mpfr_mul(r19564, r19553, r19563, MPFR_RNDN);
        return mpfr_get_d(r19564, MPFR_RNDN);
}

static mpfr_t 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, r19590, r19591, r19592, r19593, r19594, r19595, r19596, r19597;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19565);
        mpfr_init_set_str(r19566, "5.025446f-39", 10, MPFR_RNDN);
        mpfr_init(r19567);
        mpfr_init_set_str(r19568, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19569, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19570);
        mpfr_init(r19571);
        mpfr_init(r19572);
        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_set_str(r19582, "1212733.4f0", 10, MPFR_RNDN);
        mpfr_init(r19583);
        mpfr_init(r19584);
        mpfr_init(r19585);
        mpfr_init(r19586);
        mpfr_init(r19587);
        mpfr_init(r19588);
        mpfr_init(r19589);
        mpfr_init(r19590);
        mpfr_init(r19591);
        mpfr_init(r19592);
        mpfr_init(r19593);
        mpfr_init(r19594);
        mpfr_init(r19595);
        mpfr_init(r19596);
        mpfr_init(r19597);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19565, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19567, mpfr_cmp(r19565, r19566) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19570, im, MPFR_RNDN);
        mpfr_mul(r19571, r19569, r19570, MPFR_RNDN);
        mpfr_mul(r19572, r19571, r19570, MPFR_RNDN);
        mpfr_sqrt(r19573, r19572, MPFR_RNDN);
        mpfr_sqr(r19574, r19565, MPFR_RNDN);
        mpfr_mul(r19575, r19570, r19570, MPFR_RNDN);
        mpfr_add(r19576, r19574, r19575, MPFR_RNDN);
        mpfr_sqrt(r19577, r19576, MPFR_RNDN);
        mpfr_sub(r19578, r19577, r19565, MPFR_RNDN);
        mpfr_sqrt(r19579, r19578, MPFR_RNDN);
        mpfr_div(r19580, r19573, r19579, MPFR_RNDN);
        mpfr_mul(r19581, r19568, r19580, MPFR_RNDN);
        ;
        mpfr_set_si(r19583, mpfr_cmp(r19565, r19582) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19584, r19577, MPFR_RNDN);
        mpfr_sqr(r19585, r19584, MPFR_RNDN);
        mpfr_add(r19586, r19585, r19565, MPFR_RNDN);
        mpfr_mul(r19587, r19569, r19586, MPFR_RNDN);
        mpfr_sqrt(r19588, r19587, MPFR_RNDN);
        mpfr_mul(r19589, r19588, r19588, MPFR_RNDN); mpfr_mul(r19589, r19589, r19588, MPFR_RNDN);
        mpfr_cbrt(r19590, r19589, MPFR_RNDN);
        mpfr_mul(r19591, r19568, r19590, MPFR_RNDN);
        mpfr_add(r19592, r19565, r19565, MPFR_RNDN);
        mpfr_mul(r19593, r19569, r19592, MPFR_RNDN);
        mpfr_sqrt(r19594, r19593, MPFR_RNDN);
        mpfr_mul(r19595, r19568, r19594, MPFR_RNDN);
        if (mpfr_get_si(r19583, MPFR_RNDN)) { mpfr_set(r19596, r19591, MPFR_RNDN); } else { mpfr_set(r19596, r19595, MPFR_RNDN); };
        if (mpfr_get_si(r19567, MPFR_RNDN)) { mpfr_set(r19597, r19581, MPFR_RNDN); } else { mpfr_set(r19597, r19596, MPFR_RNDN); };
        return mpfr_get_d(r19597, MPFR_RNDN);
}

static mpfr_t 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(r19598);
        mpfr_init_set_str(r19599, "5.025446f-39", 10, MPFR_RNDN);
        mpfr_init(r19600);
        mpfr_init_set_str(r19601, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19602, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19603);
        mpfr_init(r19604);
        mpfr_init(r19605);
        mpfr_init(r19606);
        mpfr_init(r19607);
        mpfr_init(r19608);
        mpfr_init(r19609);
        mpfr_init(r19610);
        mpfr_init(r19611);
        mpfr_init(r19612);
        mpfr_init(r19613);
        mpfr_init(r19614);
        mpfr_init_set_str(r19615, "1212733.4f0", 10, MPFR_RNDN);
        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(r19598, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19600, mpfr_cmp(r19598, r19599) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19603, im, MPFR_RNDN);
        mpfr_mul(r19604, r19602, r19603, MPFR_RNDN);
        mpfr_mul(r19605, r19604, r19603, MPFR_RNDN);
        mpfr_sqrt(r19606, r19605, MPFR_RNDN);
        mpfr_sqr(r19607, r19598, MPFR_RNDN);
        mpfr_mul(r19608, r19603, r19603, MPFR_RNDN);
        mpfr_add(r19609, r19607, r19608, MPFR_RNDN);
        mpfr_sqrt(r19610, r19609, MPFR_RNDN);
        mpfr_sub(r19611, r19610, r19598, MPFR_RNDN);
        mpfr_sqrt(r19612, r19611, MPFR_RNDN);
        mpfr_div(r19613, r19606, r19612, MPFR_RNDN);
        mpfr_mul(r19614, r19601, r19613, MPFR_RNDN);
        ;
        mpfr_set_si(r19616, mpfr_cmp(r19598, r19615) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19617, r19610, MPFR_RNDN);
        mpfr_sqr(r19618, r19617, MPFR_RNDN);
        mpfr_add(r19619, r19618, r19598, MPFR_RNDN);
        mpfr_mul(r19620, r19602, r19619, MPFR_RNDN);
        mpfr_sqrt(r19621, r19620, MPFR_RNDN);
        mpfr_mul(r19622, r19621, r19621, MPFR_RNDN); mpfr_mul(r19622, r19622, r19621, MPFR_RNDN);
        mpfr_cbrt(r19623, r19622, MPFR_RNDN);
        mpfr_mul(r19624, r19601, r19623, MPFR_RNDN);
        mpfr_add(r19625, r19598, r19598, MPFR_RNDN);
        mpfr_mul(r19626, r19602, r19625, MPFR_RNDN);
        mpfr_sqrt(r19627, r19626, MPFR_RNDN);
        mpfr_mul(r19628, r19601, r19627, MPFR_RNDN);
        if (mpfr_get_si(r19616, MPFR_RNDN)) { mpfr_set(r19629, r19624, MPFR_RNDN); } else { mpfr_set(r19629, r19628, MPFR_RNDN); };
        if (mpfr_get_si(r19600, MPFR_RNDN)) { mpfr_set(r19630, r19614, MPFR_RNDN); } else { mpfr_set(r19630, r19629, MPFR_RNDN); };
        return mpfr_get_d(r19630, MPFR_RNDN);
}

