#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 r19403 = 0.5f;
        float r19404 = 2.0f;
        float r19405 = re;
        float r19406 = r19405 * r19405;
        float r19407 = im;
        float r19408 = r19407 * r19407;
        float r19409 = r19406 + r19408;
        float r19410 = sqrt(r19409);
        float r19411 = r19410 + r19405;
        float r19412 = r19404 * r19411;
        float r19413 = sqrt(r19412);
        float r19414 = r19403 * r19413;
        return r19414;
}

double f_id(double re, double im) {
        double r19415 = 0.5;
        double r19416 = 2.0;
        double r19417 = re;
        double r19418 = r19417 * r19417;
        double r19419 = im;
        double r19420 = r19419 * r19419;
        double r19421 = r19418 + r19420;
        double r19422 = sqrt(r19421);
        double r19423 = r19422 + r19417;
        double r19424 = r19416 * r19423;
        double r19425 = sqrt(r19424);
        double r19426 = r19415 * r19425;
        return r19426;
}


double f_of(float re, float im) {
        float r19427 = re;
        float r19428 = -2.4943351747820776e-278f;
        bool r19429 = r19427 <= r19428;
        float r19430 = 0.5f;
        float r19431 = 2.0f;
        float r19432 = im;
        float r19433 = r19431 * r19432;
        float r19434 = r19433 * r19432;
        float r19435 = sqrt(r19434);
        float r19436 = r19427 * r19427;
        float r19437 = r19432 * r19432;
        float r19438 = r19436 + r19437;
        float r19439 = sqrt(r19438);
        float r19440 = r19439 - r19427;
        float r19441 = sqrt(r19440);
        float r19442 = r19435 / r19441;
        float r19443 = r19430 * r19442;
        float r19444 = 4.3827392081136433e+102f;
        bool r19445 = r19427 <= r19444;
        float r19446 = r19427 * r19427;
        float r19447 = r19446 + r19437;
        float r19448 = sqrt(r19447);
        float r19449 = r19448 + r19427;
        float r19450 = r19431 * r19449;
        float r19451 = sqrt(r19450);
        float r19452 = r19430 * r19451;
        float r19453 = r19427 + r19427;
        float r19454 = r19431 * r19453;
        float r19455 = sqrt(r19454);
        float r19456 = r19430 * r19455;
        float r19457 = r19445 ? r19452 : r19456;
        float r19458 = r19429 ? r19443 : r19457;
        return r19458;
}

double f_od(double re, double im) {
        double r19459 = re;
        double r19460 = -2.4943351747820776e-278;
        bool r19461 = r19459 <= r19460;
        double r19462 = 0.5;
        double r19463 = 2.0;
        double r19464 = im;
        double r19465 = r19463 * r19464;
        double r19466 = r19465 * r19464;
        double r19467 = sqrt(r19466);
        double r19468 = r19459 * r19459;
        double r19469 = r19464 * r19464;
        double r19470 = r19468 + r19469;
        double r19471 = sqrt(r19470);
        double r19472 = r19471 - r19459;
        double r19473 = sqrt(r19472);
        double r19474 = r19467 / r19473;
        double r19475 = r19462 * r19474;
        double r19476 = 4.3827392081136433e+102;
        bool r19477 = r19459 <= r19476;
        double r19478 = r19459 * r19459;
        double r19479 = r19478 + r19469;
        double r19480 = sqrt(r19479);
        double r19481 = r19480 + r19459;
        double r19482 = r19463 * r19481;
        double r19483 = sqrt(r19482);
        double r19484 = r19462 * r19483;
        double r19485 = r19459 + r19459;
        double r19486 = r19463 * r19485;
        double r19487 = sqrt(r19486);
        double r19488 = r19462 * r19487;
        double r19489 = r19477 ? r19484 : r19488;
        double r19490 = r19461 ? r19475 : r19489;
        return r19490;
}

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 r19491, r19492, r19493, r19494, r19495, r19496, r19497, r19498, r19499, r19500, r19501, r19502;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19491, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19492, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19493);
        mpfr_init(r19494);
        mpfr_init(r19495);
        mpfr_init(r19496);
        mpfr_init(r19497);
        mpfr_init(r19498);
        mpfr_init(r19499);
        mpfr_init(r19500);
        mpfr_init(r19501);
        mpfr_init(r19502);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19493, re, MPFR_RNDN);
        mpfr_mul(r19494, r19493, r19493, MPFR_RNDN);
        mpfr_set_d(r19495, im, MPFR_RNDN);
        mpfr_mul(r19496, r19495, r19495, MPFR_RNDN);
        mpfr_add(r19497, r19494, r19496, MPFR_RNDN);
        mpfr_sqrt(r19498, r19497, MPFR_RNDN);
        mpfr_add(r19499, r19498, r19493, MPFR_RNDN);
        mpfr_mul(r19500, r19492, r19499, MPFR_RNDN);
        mpfr_sqrt(r19501, r19500, MPFR_RNDN);
        mpfr_mul(r19502, r19491, r19501, MPFR_RNDN);
        return mpfr_get_d(r19502, MPFR_RNDN);
}

static mpfr_t r19503, r19504, r19505, r19506, r19507, r19508, r19509, r19510, r19511, r19512, r19513, r19514, r19515, r19516, r19517, r19518, r19519, r19520, r19521, r19522, r19523, r19524, r19525, r19526, r19527, r19528, r19529, r19530, r19531, r19532, r19533, r19534;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19503);
        mpfr_init_set_str(r19504, "-2.4943351747820776e-278", 10, MPFR_RNDN);
        mpfr_init(r19505);
        mpfr_init_set_str(r19506, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19507, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19508);
        mpfr_init(r19509);
        mpfr_init(r19510);
        mpfr_init(r19511);
        mpfr_init(r19512);
        mpfr_init(r19513);
        mpfr_init(r19514);
        mpfr_init(r19515);
        mpfr_init(r19516);
        mpfr_init(r19517);
        mpfr_init(r19518);
        mpfr_init(r19519);
        mpfr_init_set_str(r19520, "4.3827392081136433e+102", 10, MPFR_RNDN);
        mpfr_init(r19521);
        mpfr_init(r19522);
        mpfr_init(r19523);
        mpfr_init(r19524);
        mpfr_init(r19525);
        mpfr_init(r19526);
        mpfr_init(r19527);
        mpfr_init(r19528);
        mpfr_init(r19529);
        mpfr_init(r19530);
        mpfr_init(r19531);
        mpfr_init(r19532);
        mpfr_init(r19533);
        mpfr_init(r19534);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19503, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19505, mpfr_cmp(r19503, r19504) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19508, im, MPFR_RNDN);
        mpfr_mul(r19509, r19507, r19508, MPFR_RNDN);
        mpfr_mul(r19510, r19509, r19508, MPFR_RNDN);
        mpfr_sqrt(r19511, r19510, MPFR_RNDN);
        mpfr_sqr(r19512, r19503, MPFR_RNDN);
        mpfr_mul(r19513, r19508, r19508, MPFR_RNDN);
        mpfr_add(r19514, r19512, r19513, MPFR_RNDN);
        mpfr_sqrt(r19515, r19514, MPFR_RNDN);
        mpfr_sub(r19516, r19515, r19503, MPFR_RNDN);
        mpfr_sqrt(r19517, r19516, MPFR_RNDN);
        mpfr_div(r19518, r19511, r19517, MPFR_RNDN);
        mpfr_mul(r19519, r19506, r19518, MPFR_RNDN);
        ;
        mpfr_set_si(r19521, mpfr_cmp(r19503, r19520) <= 0, MPFR_RNDN);
        mpfr_mul(r19522, r19503, r19503, MPFR_RNDN);
        mpfr_add(r19523, r19522, r19513, MPFR_RNDN);
        mpfr_sqrt(r19524, r19523, MPFR_RNDN);
        mpfr_add(r19525, r19524, r19503, MPFR_RNDN);
        mpfr_mul(r19526, r19507, r19525, MPFR_RNDN);
        mpfr_sqrt(r19527, r19526, MPFR_RNDN);
        mpfr_mul(r19528, r19506, r19527, MPFR_RNDN);
        mpfr_add(r19529, r19503, r19503, MPFR_RNDN);
        mpfr_mul(r19530, r19507, r19529, MPFR_RNDN);
        mpfr_sqrt(r19531, r19530, MPFR_RNDN);
        mpfr_mul(r19532, r19506, r19531, MPFR_RNDN);
        if (mpfr_get_si(r19521, MPFR_RNDN)) { mpfr_set(r19533, r19528, MPFR_RNDN); } else { mpfr_set(r19533, r19532, MPFR_RNDN); };
        if (mpfr_get_si(r19505, MPFR_RNDN)) { mpfr_set(r19534, r19519, MPFR_RNDN); } else { mpfr_set(r19534, r19533, MPFR_RNDN); };
        return mpfr_get_d(r19534, MPFR_RNDN);
}

static mpfr_t r19535, r19536, r19537, r19538, r19539, r19540, r19541, r19542, r19543, r19544, r19545, r19546, r19547, r19548, r19549, r19550, r19551, r19552, r19553, r19554, r19555, r19556, r19557, r19558, r19559, r19560, r19561, r19562, r19563, r19564, r19565, r19566;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19535);
        mpfr_init_set_str(r19536, "-2.4943351747820776e-278", 10, MPFR_RNDN);
        mpfr_init(r19537);
        mpfr_init_set_str(r19538, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19539, "2.0", 10, MPFR_RNDN);
        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);
        mpfr_init(r19549);
        mpfr_init(r19550);
        mpfr_init(r19551);
        mpfr_init_set_str(r19552, "4.3827392081136433e+102", 10, MPFR_RNDN);
        mpfr_init(r19553);
        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(r19566);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19535, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19537, mpfr_cmp(r19535, r19536) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19540, im, MPFR_RNDN);
        mpfr_mul(r19541, r19539, r19540, MPFR_RNDN);
        mpfr_mul(r19542, r19541, r19540, MPFR_RNDN);
        mpfr_sqrt(r19543, r19542, MPFR_RNDN);
        mpfr_sqr(r19544, r19535, MPFR_RNDN);
        mpfr_mul(r19545, r19540, r19540, MPFR_RNDN);
        mpfr_add(r19546, r19544, r19545, MPFR_RNDN);
        mpfr_sqrt(r19547, r19546, MPFR_RNDN);
        mpfr_sub(r19548, r19547, r19535, MPFR_RNDN);
        mpfr_sqrt(r19549, r19548, MPFR_RNDN);
        mpfr_div(r19550, r19543, r19549, MPFR_RNDN);
        mpfr_mul(r19551, r19538, r19550, MPFR_RNDN);
        ;
        mpfr_set_si(r19553, mpfr_cmp(r19535, r19552) <= 0, MPFR_RNDN);
        mpfr_mul(r19554, r19535, r19535, MPFR_RNDN);
        mpfr_add(r19555, r19554, r19545, MPFR_RNDN);
        mpfr_sqrt(r19556, r19555, MPFR_RNDN);
        mpfr_add(r19557, r19556, r19535, MPFR_RNDN);
        mpfr_mul(r19558, r19539, r19557, MPFR_RNDN);
        mpfr_sqrt(r19559, r19558, MPFR_RNDN);
        mpfr_mul(r19560, r19538, r19559, MPFR_RNDN);
        mpfr_add(r19561, r19535, r19535, MPFR_RNDN);
        mpfr_mul(r19562, r19539, r19561, MPFR_RNDN);
        mpfr_sqrt(r19563, r19562, MPFR_RNDN);
        mpfr_mul(r19564, r19538, r19563, MPFR_RNDN);
        if (mpfr_get_si(r19553, MPFR_RNDN)) { mpfr_set(r19565, r19560, MPFR_RNDN); } else { mpfr_set(r19565, r19564, MPFR_RNDN); };
        if (mpfr_get_si(r19537, MPFR_RNDN)) { mpfr_set(r19566, r19551, MPFR_RNDN); } else { mpfr_set(r19566, r19565, MPFR_RNDN); };
        return mpfr_get_d(r19566, MPFR_RNDN);
}

