#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 r19511 = 0.5f;
        float r19512 = 2.0f;
        float r19513 = re;
        float r19514 = r19513 * r19513;
        float r19515 = im;
        float r19516 = r19515 * r19515;
        float r19517 = r19514 + r19516;
        float r19518 = sqrt(r19517);
        float r19519 = r19518 + r19513;
        float r19520 = r19512 * r19519;
        float r19521 = sqrt(r19520);
        float r19522 = r19511 * r19521;
        return r19522;
}

double f_id(double re, double im) {
        double r19523 = 0.5;
        double r19524 = 2.0;
        double r19525 = re;
        double r19526 = r19525 * r19525;
        double r19527 = im;
        double r19528 = r19527 * r19527;
        double r19529 = r19526 + r19528;
        double r19530 = sqrt(r19529);
        double r19531 = r19530 + r19525;
        double r19532 = r19524 * r19531;
        double r19533 = sqrt(r19532);
        double r19534 = r19523 * r19533;
        return r19534;
}


double f_of(float re, float im) {
        float r19535 = re;
        float r19536 = -1.173251993019675e-38f;
        bool r19537 = r19535 <= r19536;
        float r19538 = 0.5f;
        float r19539 = 2.0f;
        float r19540 = im;
        float r19541 = r19539 * r19540;
        float r19542 = r19541 * r19540;
        float r19543 = sqrt(r19542);
        float r19544 = r19535 * r19535;
        float r19545 = r19540 * r19540;
        float r19546 = r19544 + r19545;
        float r19547 = sqrt(r19546);
        float r19548 = r19547 - r19535;
        float r19549 = sqrt(r19548);
        float r19550 = r19543 / r19549;
        float r19551 = r19538 * r19550;
        float r19552 = 3277798768640.0f;
        bool r19553 = r19535 <= r19552;
        float r19554 = cbrt(r19547);
        float r19555 = r19554 * (r19554 * r19554);
        float r19556 = sqrt(r19555);
        float r19557 = r19556 * r19556;
        float r19558 = r19557 + r19535;
        float r19559 = r19539 * r19558;
        float r19560 = sqrt(r19559);
        float r19561 = r19538 * r19560;
        float r19562 = r19535 + r19535;
        float r19563 = r19539 * r19562;
        float r19564 = sqrt(r19563);
        float r19565 = r19538 * r19564;
        float r19566 = r19553 ? r19561 : r19565;
        float r19567 = r19537 ? r19551 : r19566;
        return r19567;
}

double f_od(double re, double im) {
        double r19568 = re;
        double r19569 = -1.173251993019675e-38;
        bool r19570 = r19568 <= r19569;
        double r19571 = 0.5;
        double r19572 = 2.0;
        double r19573 = im;
        double r19574 = r19572 * r19573;
        double r19575 = r19574 * r19573;
        double r19576 = sqrt(r19575);
        double r19577 = r19568 * r19568;
        double r19578 = r19573 * r19573;
        double r19579 = r19577 + r19578;
        double r19580 = sqrt(r19579);
        double r19581 = r19580 - r19568;
        double r19582 = sqrt(r19581);
        double r19583 = r19576 / r19582;
        double r19584 = r19571 * r19583;
        double r19585 = 3277798768640.0;
        bool r19586 = r19568 <= r19585;
        double r19587 = cbrt(r19580);
        double r19588 = r19587 * (r19587 * r19587);
        double r19589 = sqrt(r19588);
        double r19590 = r19589 * r19589;
        double r19591 = r19590 + r19568;
        double r19592 = r19572 * r19591;
        double r19593 = sqrt(r19592);
        double r19594 = r19571 * r19593;
        double r19595 = r19568 + r19568;
        double r19596 = r19572 * r19595;
        double r19597 = sqrt(r19596);
        double r19598 = r19571 * r19597;
        double r19599 = r19586 ? r19594 : r19598;
        double r19600 = r19570 ? r19584 : r19599;
        return r19600;
}

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 r19601, r19602, r19603, r19604, r19605, r19606, r19607, r19608, r19609, r19610, r19611, r19612;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        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);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19603, re, MPFR_RNDN);
        mpfr_mul(r19604, r19603, r19603, MPFR_RNDN);
        mpfr_set_d(r19605, im, MPFR_RNDN);
        mpfr_mul(r19606, r19605, r19605, MPFR_RNDN);
        mpfr_add(r19607, r19604, r19606, MPFR_RNDN);
        mpfr_sqrt(r19608, r19607, MPFR_RNDN);
        mpfr_add(r19609, r19608, r19603, MPFR_RNDN);
        mpfr_mul(r19610, r19602, r19609, MPFR_RNDN);
        mpfr_sqrt(r19611, r19610, MPFR_RNDN);
        mpfr_mul(r19612, r19601, r19611, MPFR_RNDN);
        return mpfr_get_d(r19612, MPFR_RNDN);
}

static mpfr_t r19613, r19614, r19615, r19616, r19617, r19618, r19619, r19620, r19621, r19622, r19623, r19624, r19625, r19626, r19627, r19628, r19629, r19630, r19631, r19632, r19633, r19634, r19635, r19636, r19637, r19638, r19639, r19640, r19641, r19642, r19643, r19644, r19645;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19613);
        mpfr_init_set_str(r19614, "-1.173252f-38", 10, MPFR_RNDN);
        mpfr_init(r19615);
        mpfr_init_set_str(r19616, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19617, "2.0", 10, MPFR_RNDN);
        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_set_str(r19630, "3.2777988f+12", 10, MPFR_RNDN);
        mpfr_init(r19631);
        mpfr_init(r19632);
        mpfr_init(r19633);
        mpfr_init(r19634);
        mpfr_init(r19635);
        mpfr_init(r19636);
        mpfr_init(r19637);
        mpfr_init(r19638);
        mpfr_init(r19639);
        mpfr_init(r19640);
        mpfr_init(r19641);
        mpfr_init(r19642);
        mpfr_init(r19643);
        mpfr_init(r19644);
        mpfr_init(r19645);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19613, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19615, mpfr_cmp(r19613, r19614) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19618, im, MPFR_RNDN);
        mpfr_mul(r19619, r19617, r19618, MPFR_RNDN);
        mpfr_mul(r19620, r19619, r19618, MPFR_RNDN);
        mpfr_sqrt(r19621, r19620, MPFR_RNDN);
        mpfr_sqr(r19622, r19613, MPFR_RNDN);
        mpfr_mul(r19623, r19618, r19618, MPFR_RNDN);
        mpfr_add(r19624, r19622, r19623, MPFR_RNDN);
        mpfr_sqrt(r19625, r19624, MPFR_RNDN);
        mpfr_sub(r19626, r19625, r19613, MPFR_RNDN);
        mpfr_sqrt(r19627, r19626, MPFR_RNDN);
        mpfr_div(r19628, r19621, r19627, MPFR_RNDN);
        mpfr_mul(r19629, r19616, r19628, MPFR_RNDN);
        ;
        mpfr_set_si(r19631, mpfr_cmp(r19613, r19630) <= 0, MPFR_RNDN);
        mpfr_cbrt(r19632, r19625, MPFR_RNDN);
        mpfr_mul(r19633, r19632, r19632, MPFR_RNDN); mpfr_mul(r19633, r19633, r19632, MPFR_RNDN);
        mpfr_sqrt(r19634, r19633, MPFR_RNDN);
        mpfr_sqr(r19635, r19634, MPFR_RNDN);
        mpfr_add(r19636, r19635, r19613, MPFR_RNDN);
        mpfr_mul(r19637, r19617, r19636, MPFR_RNDN);
        mpfr_sqrt(r19638, r19637, MPFR_RNDN);
        mpfr_mul(r19639, r19616, r19638, MPFR_RNDN);
        mpfr_add(r19640, r19613, r19613, MPFR_RNDN);
        mpfr_mul(r19641, r19617, r19640, MPFR_RNDN);
        mpfr_sqrt(r19642, r19641, MPFR_RNDN);
        mpfr_mul(r19643, r19616, r19642, MPFR_RNDN);
        if (mpfr_get_si(r19631, MPFR_RNDN)) { mpfr_set(r19644, r19639, MPFR_RNDN); } else { mpfr_set(r19644, r19643, MPFR_RNDN); };
        if (mpfr_get_si(r19615, MPFR_RNDN)) { mpfr_set(r19645, r19629, MPFR_RNDN); } else { mpfr_set(r19645, r19644, MPFR_RNDN); };
        return mpfr_get_d(r19645, MPFR_RNDN);
}

static mpfr_t r19646, r19647, r19648, r19649, r19650, r19651, r19652, r19653, r19654, r19655, r19656, r19657, r19658, r19659, r19660, r19661, r19662, r19663, r19664, r19665, r19666, r19667, r19668, r19669, r19670, r19671, r19672, r19673, r19674, r19675, r19676, r19677, r19678;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19646);
        mpfr_init_set_str(r19647, "-1.173252f-38", 10, MPFR_RNDN);
        mpfr_init(r19648);
        mpfr_init_set_str(r19649, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19650, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19651);
        mpfr_init(r19652);
        mpfr_init(r19653);
        mpfr_init(r19654);
        mpfr_init(r19655);
        mpfr_init(r19656);
        mpfr_init(r19657);
        mpfr_init(r19658);
        mpfr_init(r19659);
        mpfr_init(r19660);
        mpfr_init(r19661);
        mpfr_init(r19662);
        mpfr_init_set_str(r19663, "3.2777988f+12", 10, MPFR_RNDN);
        mpfr_init(r19664);
        mpfr_init(r19665);
        mpfr_init(r19666);
        mpfr_init(r19667);
        mpfr_init(r19668);
        mpfr_init(r19669);
        mpfr_init(r19670);
        mpfr_init(r19671);
        mpfr_init(r19672);
        mpfr_init(r19673);
        mpfr_init(r19674);
        mpfr_init(r19675);
        mpfr_init(r19676);
        mpfr_init(r19677);
        mpfr_init(r19678);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19646, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19648, mpfr_cmp(r19646, r19647) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19651, im, MPFR_RNDN);
        mpfr_mul(r19652, r19650, r19651, MPFR_RNDN);
        mpfr_mul(r19653, r19652, r19651, MPFR_RNDN);
        mpfr_sqrt(r19654, r19653, MPFR_RNDN);
        mpfr_sqr(r19655, r19646, MPFR_RNDN);
        mpfr_mul(r19656, r19651, r19651, MPFR_RNDN);
        mpfr_add(r19657, r19655, r19656, MPFR_RNDN);
        mpfr_sqrt(r19658, r19657, MPFR_RNDN);
        mpfr_sub(r19659, r19658, r19646, MPFR_RNDN);
        mpfr_sqrt(r19660, r19659, MPFR_RNDN);
        mpfr_div(r19661, r19654, r19660, MPFR_RNDN);
        mpfr_mul(r19662, r19649, r19661, MPFR_RNDN);
        ;
        mpfr_set_si(r19664, mpfr_cmp(r19646, r19663) <= 0, MPFR_RNDN);
        mpfr_cbrt(r19665, r19658, MPFR_RNDN);
        mpfr_mul(r19666, r19665, r19665, MPFR_RNDN); mpfr_mul(r19666, r19666, r19665, MPFR_RNDN);
        mpfr_sqrt(r19667, r19666, MPFR_RNDN);
        mpfr_sqr(r19668, r19667, MPFR_RNDN);
        mpfr_add(r19669, r19668, r19646, MPFR_RNDN);
        mpfr_mul(r19670, r19650, r19669, MPFR_RNDN);
        mpfr_sqrt(r19671, r19670, MPFR_RNDN);
        mpfr_mul(r19672, r19649, r19671, MPFR_RNDN);
        mpfr_add(r19673, r19646, r19646, MPFR_RNDN);
        mpfr_mul(r19674, r19650, r19673, MPFR_RNDN);
        mpfr_sqrt(r19675, r19674, MPFR_RNDN);
        mpfr_mul(r19676, r19649, r19675, MPFR_RNDN);
        if (mpfr_get_si(r19664, MPFR_RNDN)) { mpfr_set(r19677, r19672, MPFR_RNDN); } else { mpfr_set(r19677, r19676, MPFR_RNDN); };
        if (mpfr_get_si(r19648, MPFR_RNDN)) { mpfr_set(r19678, r19662, MPFR_RNDN); } else { mpfr_set(r19678, r19677, MPFR_RNDN); };
        return mpfr_get_d(r19678, MPFR_RNDN);
}

