#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 r18531 = 0.5f;
        float r18532 = 2.0f;
        float r18533 = re;
        float r18534 = r18533 * r18533;
        float r18535 = im;
        float r18536 = r18535 * r18535;
        float r18537 = r18534 + r18536;
        float r18538 = sqrt(r18537);
        float r18539 = r18538 + r18533;
        float r18540 = r18532 * r18539;
        float r18541 = sqrt(r18540);
        float r18542 = r18531 * r18541;
        return r18542;
}

double f_id(double re, double im) {
        double r18543 = 0.5;
        double r18544 = 2.0;
        double r18545 = re;
        double r18546 = r18545 * r18545;
        double r18547 = im;
        double r18548 = r18547 * r18547;
        double r18549 = r18546 + r18548;
        double r18550 = sqrt(r18549);
        double r18551 = r18550 + r18545;
        double r18552 = r18544 * r18551;
        double r18553 = sqrt(r18552);
        double r18554 = r18543 * r18553;
        return r18554;
}


double f_of(float re, float im) {
        float r18555 = re;
        float r18556 = -1.1203718486285652e-07f;
        bool r18557 = r18555 <= r18556;
        float r18558 = 0.5f;
        float r18559 = im;
        float r18560 = r18559 * r18559;
        float r18561 = 2.0f;
        float r18562 = r18560 * r18561;
        float r18563 = sqrt(r18562);
        float r18564 = r18558 * r18563;
        float r18565 = -r18555;
        float r18566 = r18565 - r18555;
        float r18567 = sqrt(r18566);
        float r18568 = r18564 / r18567;
        float r18569 = 1.605269259812864e+16f;
        bool r18570 = r18555 <= r18569;
        float r18571 = r18555 * r18555;
        float r18572 = r18571 + r18560;
        float r18573 = sqrt(r18572);
        float r18574 = sqrt(r18573);
        float r18575 = r18574 * r18574;
        float r18576 = r18575 + r18555;
        float r18577 = r18561 * r18576;
        float r18578 = sqrt(r18577);
        float r18579 = r18558 * r18578;
        float r18580 = r18555 + r18555;
        float r18581 = 0.5f;
        float r18582 = r18559 * r18581;
        float r18583 = r18555 / r18559;
        float r18584 = r18582 / r18583;
        float r18585 = r18580 + r18584;
        float r18586 = r18561 * r18585;
        float r18587 = sqrt(r18586);
        float r18588 = r18587 * r18558;
        float r18589 = r18570 ? r18579 : r18588;
        float r18590 = r18557 ? r18568 : r18589;
        return r18590;
}

double f_od(double re, double im) {
        double r18591 = re;
        double r18592 = -1.1203718486285652e-07;
        bool r18593 = r18591 <= r18592;
        double r18594 = 0.5;
        double r18595 = im;
        double r18596 = r18595 * r18595;
        double r18597 = 2.0;
        double r18598 = r18596 * r18597;
        double r18599 = sqrt(r18598);
        double r18600 = r18594 * r18599;
        double r18601 = -r18591;
        double r18602 = r18601 - r18591;
        double r18603 = sqrt(r18602);
        double r18604 = r18600 / r18603;
        double r18605 = 1.605269259812864e+16;
        bool r18606 = r18591 <= r18605;
        double r18607 = r18591 * r18591;
        double r18608 = r18607 + r18596;
        double r18609 = sqrt(r18608);
        double r18610 = sqrt(r18609);
        double r18611 = r18610 * r18610;
        double r18612 = r18611 + r18591;
        double r18613 = r18597 * r18612;
        double r18614 = sqrt(r18613);
        double r18615 = r18594 * r18614;
        double r18616 = r18591 + r18591;
        double r18617 = 0.5;
        double r18618 = r18595 * r18617;
        double r18619 = r18591 / r18595;
        double r18620 = r18618 / r18619;
        double r18621 = r18616 + r18620;
        double r18622 = r18597 * r18621;
        double r18623 = sqrt(r18622);
        double r18624 = r18623 * r18594;
        double r18625 = r18606 ? r18615 : r18624;
        double r18626 = r18593 ? r18604 : r18625;
        return r18626;
}

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 r18627, r18628, r18629, r18630, r18631, r18632, r18633, r18634, r18635, r18636, r18637, r18638;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18627, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18628, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18629);
        mpfr_init(r18630);
        mpfr_init(r18631);
        mpfr_init(r18632);
        mpfr_init(r18633);
        mpfr_init(r18634);
        mpfr_init(r18635);
        mpfr_init(r18636);
        mpfr_init(r18637);
        mpfr_init(r18638);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18629, re, MPFR_RNDN);
        mpfr_mul(r18630, r18629, r18629, MPFR_RNDN);
        mpfr_set_d(r18631, im, MPFR_RNDN);
        mpfr_mul(r18632, r18631, r18631, MPFR_RNDN);
        mpfr_add(r18633, r18630, r18632, MPFR_RNDN);
        mpfr_sqrt(r18634, r18633, MPFR_RNDN);
        mpfr_add(r18635, r18634, r18629, MPFR_RNDN);
        mpfr_mul(r18636, r18628, r18635, MPFR_RNDN);
        mpfr_sqrt(r18637, r18636, MPFR_RNDN);
        mpfr_mul(r18638, r18627, r18637, MPFR_RNDN);
        return mpfr_get_d(r18638, MPFR_RNDN);
}

static mpfr_t r18639, r18640, r18641, r18642, r18643, r18644, r18645, r18646, r18647, r18648, r18649, r18650, r18651, r18652, r18653, r18654, r18655, r18656, r18657, r18658, r18659, r18660, r18661, r18662, r18663, r18664, r18665, r18666, r18667, r18668, r18669, r18670, r18671, r18672, r18673, r18674;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18639);
        mpfr_init_set_str(r18640, "-1.12037185f-07", 10, MPFR_RNDN);
        mpfr_init(r18641);
        mpfr_init_set_str(r18642, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18643);
        mpfr_init(r18644);
        mpfr_init_set_str(r18645, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18646);
        mpfr_init(r18647);
        mpfr_init(r18648);
        mpfr_init(r18649);
        mpfr_init(r18650);
        mpfr_init(r18651);
        mpfr_init(r18652);
        mpfr_init_set_str(r18653, "1.6052693f+16", 10, MPFR_RNDN);
        mpfr_init(r18654);
        mpfr_init(r18655);
        mpfr_init(r18656);
        mpfr_init(r18657);
        mpfr_init(r18658);
        mpfr_init(r18659);
        mpfr_init(r18660);
        mpfr_init(r18661);
        mpfr_init(r18662);
        mpfr_init(r18663);
        mpfr_init(r18664);
        mpfr_init_set_str(r18665, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18666);
        mpfr_init(r18667);
        mpfr_init(r18668);
        mpfr_init(r18669);
        mpfr_init(r18670);
        mpfr_init(r18671);
        mpfr_init(r18672);
        mpfr_init(r18673);
        mpfr_init(r18674);
}

double f_fm(double re, double im) {
        mpfr_set_d(r18639, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18641, mpfr_cmp(r18639, r18640) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r18643, im, MPFR_RNDN);
        mpfr_mul(r18644, r18643, r18643, MPFR_RNDN);
        ;
        mpfr_mul(r18646, r18644, r18645, MPFR_RNDN);
        mpfr_sqrt(r18647, r18646, MPFR_RNDN);
        mpfr_mul(r18648, r18642, r18647, MPFR_RNDN);
        mpfr_neg(r18649, r18639, MPFR_RNDN);
        mpfr_sub(r18650, r18649, r18639, MPFR_RNDN);
        mpfr_sqrt(r18651, r18650, MPFR_RNDN);
        mpfr_div(r18652, r18648, r18651, MPFR_RNDN);
        ;
        mpfr_set_si(r18654, mpfr_cmp(r18639, r18653) <= 0, MPFR_RNDN);
        mpfr_sqr(r18655, r18639, MPFR_RNDN);
        mpfr_add(r18656, r18655, r18644, MPFR_RNDN);
        mpfr_sqrt(r18657, r18656, MPFR_RNDN);
        mpfr_sqrt(r18658, r18657, MPFR_RNDN);
        mpfr_sqr(r18659, r18658, MPFR_RNDN);
        mpfr_add(r18660, r18659, r18639, MPFR_RNDN);
        mpfr_mul(r18661, r18645, r18660, MPFR_RNDN);
        mpfr_sqrt(r18662, r18661, MPFR_RNDN);
        mpfr_mul(r18663, r18642, r18662, MPFR_RNDN);
        mpfr_add(r18664, r18639, r18639, MPFR_RNDN);
        ;
        mpfr_mul(r18666, r18643, r18665, MPFR_RNDN);
        mpfr_div(r18667, r18639, r18643, MPFR_RNDN);
        mpfr_div(r18668, r18666, r18667, MPFR_RNDN);
        mpfr_add(r18669, r18664, r18668, MPFR_RNDN);
        mpfr_mul(r18670, r18645, r18669, MPFR_RNDN);
        mpfr_sqrt(r18671, r18670, MPFR_RNDN);
        mpfr_mul(r18672, r18671, r18642, MPFR_RNDN);
        if (mpfr_get_si(r18654, MPFR_RNDN)) { mpfr_set(r18673, r18663, MPFR_RNDN); } else { mpfr_set(r18673, r18672, MPFR_RNDN); };
        if (mpfr_get_si(r18641, MPFR_RNDN)) { mpfr_set(r18674, r18652, MPFR_RNDN); } else { mpfr_set(r18674, r18673, MPFR_RNDN); };
        return mpfr_get_d(r18674, MPFR_RNDN);
}

static mpfr_t r18675, r18676, r18677, r18678, r18679, r18680, r18681, r18682, r18683, r18684, r18685, r18686, r18687, r18688, r18689, r18690, r18691, r18692, r18693, r18694, r18695, r18696, r18697, r18698, r18699, r18700, r18701, r18702, r18703, r18704, r18705, r18706, r18707, r18708, r18709, r18710;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18675);
        mpfr_init_set_str(r18676, "-1.12037185f-07", 10, MPFR_RNDN);
        mpfr_init(r18677);
        mpfr_init_set_str(r18678, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18679);
        mpfr_init(r18680);
        mpfr_init_set_str(r18681, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18682);
        mpfr_init(r18683);
        mpfr_init(r18684);
        mpfr_init(r18685);
        mpfr_init(r18686);
        mpfr_init(r18687);
        mpfr_init(r18688);
        mpfr_init_set_str(r18689, "1.6052693f+16", 10, MPFR_RNDN);
        mpfr_init(r18690);
        mpfr_init(r18691);
        mpfr_init(r18692);
        mpfr_init(r18693);
        mpfr_init(r18694);
        mpfr_init(r18695);
        mpfr_init(r18696);
        mpfr_init(r18697);
        mpfr_init(r18698);
        mpfr_init(r18699);
        mpfr_init(r18700);
        mpfr_init_set_str(r18701, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18702);
        mpfr_init(r18703);
        mpfr_init(r18704);
        mpfr_init(r18705);
        mpfr_init(r18706);
        mpfr_init(r18707);
        mpfr_init(r18708);
        mpfr_init(r18709);
        mpfr_init(r18710);
}

double f_dm(double re, double im) {
        mpfr_set_d(r18675, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18677, mpfr_cmp(r18675, r18676) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r18679, im, MPFR_RNDN);
        mpfr_mul(r18680, r18679, r18679, MPFR_RNDN);
        ;
        mpfr_mul(r18682, r18680, r18681, MPFR_RNDN);
        mpfr_sqrt(r18683, r18682, MPFR_RNDN);
        mpfr_mul(r18684, r18678, r18683, MPFR_RNDN);
        mpfr_neg(r18685, r18675, MPFR_RNDN);
        mpfr_sub(r18686, r18685, r18675, MPFR_RNDN);
        mpfr_sqrt(r18687, r18686, MPFR_RNDN);
        mpfr_div(r18688, r18684, r18687, MPFR_RNDN);
        ;
        mpfr_set_si(r18690, mpfr_cmp(r18675, r18689) <= 0, MPFR_RNDN);
        mpfr_sqr(r18691, r18675, MPFR_RNDN);
        mpfr_add(r18692, r18691, r18680, MPFR_RNDN);
        mpfr_sqrt(r18693, r18692, MPFR_RNDN);
        mpfr_sqrt(r18694, r18693, MPFR_RNDN);
        mpfr_sqr(r18695, r18694, MPFR_RNDN);
        mpfr_add(r18696, r18695, r18675, MPFR_RNDN);
        mpfr_mul(r18697, r18681, r18696, MPFR_RNDN);
        mpfr_sqrt(r18698, r18697, MPFR_RNDN);
        mpfr_mul(r18699, r18678, r18698, MPFR_RNDN);
        mpfr_add(r18700, r18675, r18675, MPFR_RNDN);
        ;
        mpfr_mul(r18702, r18679, r18701, MPFR_RNDN);
        mpfr_div(r18703, r18675, r18679, MPFR_RNDN);
        mpfr_div(r18704, r18702, r18703, MPFR_RNDN);
        mpfr_add(r18705, r18700, r18704, MPFR_RNDN);
        mpfr_mul(r18706, r18681, r18705, MPFR_RNDN);
        mpfr_sqrt(r18707, r18706, MPFR_RNDN);
        mpfr_mul(r18708, r18707, r18678, MPFR_RNDN);
        if (mpfr_get_si(r18690, MPFR_RNDN)) { mpfr_set(r18709, r18699, MPFR_RNDN); } else { mpfr_set(r18709, r18708, MPFR_RNDN); };
        if (mpfr_get_si(r18677, MPFR_RNDN)) { mpfr_set(r18710, r18688, MPFR_RNDN); } else { mpfr_set(r18710, r18709, MPFR_RNDN); };
        return mpfr_get_d(r18710, MPFR_RNDN);
}

