#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 r18562 = 0.5f;
        float r18563 = 2.0f;
        float r18564 = re;
        float r18565 = r18564 * r18564;
        float r18566 = im;
        float r18567 = r18566 * r18566;
        float r18568 = r18565 + r18567;
        float r18569 = sqrt(r18568);
        float r18570 = r18569 + r18564;
        float r18571 = r18563 * r18570;
        float r18572 = sqrt(r18571);
        float r18573 = r18562 * r18572;
        return r18573;
}

double f_id(double re, double im) {
        double r18574 = 0.5;
        double r18575 = 2.0;
        double r18576 = re;
        double r18577 = r18576 * r18576;
        double r18578 = im;
        double r18579 = r18578 * r18578;
        double r18580 = r18577 + r18579;
        double r18581 = sqrt(r18580);
        double r18582 = r18581 + r18576;
        double r18583 = r18575 * r18582;
        double r18584 = sqrt(r18583);
        double r18585 = r18574 * r18584;
        return r18585;
}


double f_of(float re, float im) {
        float r18586 = re;
        float r18587 = -1.4086893328152055e-38f;
        bool r18588 = r18586 <= r18587;
        float r18589 = 0.5f;
        float r18590 = 2.0f;
        float r18591 = im;
        float r18592 = r18590 * r18591;
        float r18593 = r18592 * r18591;
        float r18594 = sqrt(r18593);
        float r18595 = r18586 * r18586;
        float r18596 = r18591 * r18591;
        float r18597 = r18595 + r18596;
        float r18598 = sqrt(r18597);
        float r18599 = r18598 - r18586;
        float r18600 = sqrt(r18599);
        float r18601 = r18594 / r18600;
        float r18602 = r18589 * r18601;
        float r18603 = 1.16678960611328e+15f;
        bool r18604 = r18586 <= r18603;
        float r18605 = sqrt(r18598);
        float r18606 = r18605 * r18605;
        float r18607 = r18606 + r18586;
        float r18608 = r18590 * r18607;
        float r18609 = sqrt(r18608);
        float r18610 = r18589 * r18609;
        float r18611 = r18586 + r18586;
        float r18612 = r18590 * r18611;
        float r18613 = sqrt(r18612);
        float r18614 = r18589 * r18613;
        float r18615 = r18604 ? r18610 : r18614;
        float r18616 = r18588 ? r18602 : r18615;
        return r18616;
}

double f_od(double re, double im) {
        double r18617 = re;
        double r18618 = -1.4086893328152055e-38;
        bool r18619 = r18617 <= r18618;
        double r18620 = 0.5;
        double r18621 = 2.0;
        double r18622 = im;
        double r18623 = r18621 * r18622;
        double r18624 = r18623 * r18622;
        double r18625 = sqrt(r18624);
        double r18626 = r18617 * r18617;
        double r18627 = r18622 * r18622;
        double r18628 = r18626 + r18627;
        double r18629 = sqrt(r18628);
        double r18630 = r18629 - r18617;
        double r18631 = sqrt(r18630);
        double r18632 = r18625 / r18631;
        double r18633 = r18620 * r18632;
        double r18634 = 1.16678960611328e+15;
        bool r18635 = r18617 <= r18634;
        double r18636 = sqrt(r18629);
        double r18637 = r18636 * r18636;
        double r18638 = r18637 + r18617;
        double r18639 = r18621 * r18638;
        double r18640 = sqrt(r18639);
        double r18641 = r18620 * r18640;
        double r18642 = r18617 + r18617;
        double r18643 = r18621 * r18642;
        double r18644 = sqrt(r18643);
        double r18645 = r18620 * r18644;
        double r18646 = r18635 ? r18641 : r18645;
        double r18647 = r18619 ? r18633 : r18646;
        return r18647;
}

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 r18648, r18649, r18650, r18651, r18652, r18653, r18654, r18655, r18656, r18657, r18658, r18659;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18648, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18649, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18650);
        mpfr_init(r18651);
        mpfr_init(r18652);
        mpfr_init(r18653);
        mpfr_init(r18654);
        mpfr_init(r18655);
        mpfr_init(r18656);
        mpfr_init(r18657);
        mpfr_init(r18658);
        mpfr_init(r18659);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18650, re, MPFR_RNDN);
        mpfr_mul(r18651, r18650, r18650, MPFR_RNDN);
        mpfr_set_d(r18652, im, MPFR_RNDN);
        mpfr_mul(r18653, r18652, r18652, MPFR_RNDN);
        mpfr_add(r18654, r18651, r18653, MPFR_RNDN);
        mpfr_sqrt(r18655, r18654, MPFR_RNDN);
        mpfr_add(r18656, r18655, r18650, MPFR_RNDN);
        mpfr_mul(r18657, r18649, r18656, MPFR_RNDN);
        mpfr_sqrt(r18658, r18657, MPFR_RNDN);
        mpfr_mul(r18659, r18648, r18658, MPFR_RNDN);
        return mpfr_get_d(r18659, MPFR_RNDN);
}

static mpfr_t r18660, r18661, r18662, r18663, r18664, r18665, r18666, r18667, r18668, r18669, r18670, r18671, r18672, r18673, r18674, r18675, r18676, r18677, r18678, r18679, r18680, r18681, r18682, r18683, r18684, r18685, r18686, r18687, r18688, r18689, r18690;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18660);
        mpfr_init_set_str(r18661, "-1.4086893f-38", 10, MPFR_RNDN);
        mpfr_init(r18662);
        mpfr_init_set_str(r18663, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18664, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18665);
        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);
        mpfr_init(r18675);
        mpfr_init(r18676);
        mpfr_init_set_str(r18677, "1.1667896f+15", 10, MPFR_RNDN);
        mpfr_init(r18678);
        mpfr_init(r18679);
        mpfr_init(r18680);
        mpfr_init(r18681);
        mpfr_init(r18682);
        mpfr_init(r18683);
        mpfr_init(r18684);
        mpfr_init(r18685);
        mpfr_init(r18686);
        mpfr_init(r18687);
        mpfr_init(r18688);
        mpfr_init(r18689);
        mpfr_init(r18690);
}

double f_fm(double re, double im) {
        mpfr_set_d(r18660, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18662, mpfr_cmp(r18660, r18661) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18665, im, MPFR_RNDN);
        mpfr_mul(r18666, r18664, r18665, MPFR_RNDN);
        mpfr_mul(r18667, r18666, r18665, MPFR_RNDN);
        mpfr_sqrt(r18668, r18667, MPFR_RNDN);
        mpfr_sqr(r18669, r18660, MPFR_RNDN);
        mpfr_mul(r18670, r18665, r18665, MPFR_RNDN);
        mpfr_add(r18671, r18669, r18670, MPFR_RNDN);
        mpfr_sqrt(r18672, r18671, MPFR_RNDN);
        mpfr_sub(r18673, r18672, r18660, MPFR_RNDN);
        mpfr_sqrt(r18674, r18673, MPFR_RNDN);
        mpfr_div(r18675, r18668, r18674, MPFR_RNDN);
        mpfr_mul(r18676, r18663, r18675, MPFR_RNDN);
        ;
        mpfr_set_si(r18678, mpfr_cmp(r18660, r18677) <= 0, MPFR_RNDN);
        mpfr_sqrt(r18679, r18672, MPFR_RNDN);
        mpfr_sqr(r18680, r18679, MPFR_RNDN);
        mpfr_add(r18681, r18680, r18660, MPFR_RNDN);
        mpfr_mul(r18682, r18664, r18681, MPFR_RNDN);
        mpfr_sqrt(r18683, r18682, MPFR_RNDN);
        mpfr_mul(r18684, r18663, r18683, MPFR_RNDN);
        mpfr_add(r18685, r18660, r18660, MPFR_RNDN);
        mpfr_mul(r18686, r18664, r18685, MPFR_RNDN);
        mpfr_sqrt(r18687, r18686, MPFR_RNDN);
        mpfr_mul(r18688, r18663, r18687, MPFR_RNDN);
        if (mpfr_get_si(r18678, MPFR_RNDN)) { mpfr_set(r18689, r18684, MPFR_RNDN); } else { mpfr_set(r18689, r18688, MPFR_RNDN); };
        if (mpfr_get_si(r18662, MPFR_RNDN)) { mpfr_set(r18690, r18676, MPFR_RNDN); } else { mpfr_set(r18690, r18689, MPFR_RNDN); };
        return mpfr_get_d(r18690, MPFR_RNDN);
}

static mpfr_t r18691, r18692, r18693, r18694, r18695, r18696, r18697, r18698, r18699, r18700, r18701, r18702, r18703, r18704, r18705, r18706, r18707, r18708, r18709, r18710, r18711, r18712, r18713, r18714, r18715, r18716, r18717, r18718, r18719, r18720, r18721;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18691);
        mpfr_init_set_str(r18692, "-1.4086893f-38", 10, MPFR_RNDN);
        mpfr_init(r18693);
        mpfr_init_set_str(r18694, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18695, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18696);
        mpfr_init(r18697);
        mpfr_init(r18698);
        mpfr_init(r18699);
        mpfr_init(r18700);
        mpfr_init(r18701);
        mpfr_init(r18702);
        mpfr_init(r18703);
        mpfr_init(r18704);
        mpfr_init(r18705);
        mpfr_init(r18706);
        mpfr_init(r18707);
        mpfr_init_set_str(r18708, "1.1667896f+15", 10, MPFR_RNDN);
        mpfr_init(r18709);
        mpfr_init(r18710);
        mpfr_init(r18711);
        mpfr_init(r18712);
        mpfr_init(r18713);
        mpfr_init(r18714);
        mpfr_init(r18715);
        mpfr_init(r18716);
        mpfr_init(r18717);
        mpfr_init(r18718);
        mpfr_init(r18719);
        mpfr_init(r18720);
        mpfr_init(r18721);
}

double f_dm(double re, double im) {
        mpfr_set_d(r18691, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18693, mpfr_cmp(r18691, r18692) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18696, im, MPFR_RNDN);
        mpfr_mul(r18697, r18695, r18696, MPFR_RNDN);
        mpfr_mul(r18698, r18697, r18696, MPFR_RNDN);
        mpfr_sqrt(r18699, r18698, MPFR_RNDN);
        mpfr_sqr(r18700, r18691, MPFR_RNDN);
        mpfr_mul(r18701, r18696, r18696, MPFR_RNDN);
        mpfr_add(r18702, r18700, r18701, MPFR_RNDN);
        mpfr_sqrt(r18703, r18702, MPFR_RNDN);
        mpfr_sub(r18704, r18703, r18691, MPFR_RNDN);
        mpfr_sqrt(r18705, r18704, MPFR_RNDN);
        mpfr_div(r18706, r18699, r18705, MPFR_RNDN);
        mpfr_mul(r18707, r18694, r18706, MPFR_RNDN);
        ;
        mpfr_set_si(r18709, mpfr_cmp(r18691, r18708) <= 0, MPFR_RNDN);
        mpfr_sqrt(r18710, r18703, MPFR_RNDN);
        mpfr_sqr(r18711, r18710, MPFR_RNDN);
        mpfr_add(r18712, r18711, r18691, MPFR_RNDN);
        mpfr_mul(r18713, r18695, r18712, MPFR_RNDN);
        mpfr_sqrt(r18714, r18713, MPFR_RNDN);
        mpfr_mul(r18715, r18694, r18714, MPFR_RNDN);
        mpfr_add(r18716, r18691, r18691, MPFR_RNDN);
        mpfr_mul(r18717, r18695, r18716, MPFR_RNDN);
        mpfr_sqrt(r18718, r18717, MPFR_RNDN);
        mpfr_mul(r18719, r18694, r18718, MPFR_RNDN);
        if (mpfr_get_si(r18709, MPFR_RNDN)) { mpfr_set(r18720, r18715, MPFR_RNDN); } else { mpfr_set(r18720, r18719, MPFR_RNDN); };
        if (mpfr_get_si(r18693, MPFR_RNDN)) { mpfr_set(r18721, r18707, MPFR_RNDN); } else { mpfr_set(r18721, r18720, MPFR_RNDN); };
        return mpfr_get_d(r18721, MPFR_RNDN);
}

