#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 r18583 = 0.5f;
        float r18584 = 2.0f;
        float r18585 = re;
        float r18586 = r18585 * r18585;
        float r18587 = im;
        float r18588 = r18587 * r18587;
        float r18589 = r18586 + r18588;
        float r18590 = sqrt(r18589);
        float r18591 = r18590 + r18585;
        float r18592 = r18584 * r18591;
        float r18593 = sqrt(r18592);
        float r18594 = r18583 * r18593;
        return r18594;
}

double f_id(double re, double im) {
        double r18595 = 0.5;
        double r18596 = 2.0;
        double r18597 = re;
        double r18598 = r18597 * r18597;
        double r18599 = im;
        double r18600 = r18599 * r18599;
        double r18601 = r18598 + r18600;
        double r18602 = sqrt(r18601);
        double r18603 = r18602 + r18597;
        double r18604 = r18596 * r18603;
        double r18605 = sqrt(r18604);
        double r18606 = r18595 * r18605;
        return r18606;
}


double f_of(float re, float im) {
        float r18607 = re;
        float r18608 = -3.1678827500109226e-18f;
        bool r18609 = r18607 <= r18608;
        float r18610 = 0.5f;
        float r18611 = 2.0f;
        float r18612 = im;
        float r18613 = r18611 * r18612;
        float r18614 = r18613 * r18612;
        float r18615 = sqrt(r18614);
        float r18616 = r18607 * r18607;
        float r18617 = r18612 * r18612;
        float r18618 = r18616 + r18617;
        float r18619 = sqrt(r18618);
        float r18620 = r18619 - r18607;
        float r18621 = sqrt(r18620);
        float r18622 = r18615 / r18621;
        float r18623 = r18610 * r18622;
        float r18624 = 1.605269259812864e+16f;
        bool r18625 = r18607 <= r18624;
        float r18626 = sqrt(r18619);
        float r18627 = r18626 * r18626;
        float r18628 = r18627 + r18607;
        float r18629 = r18611 * r18628;
        float r18630 = sqrt(r18629);
        float r18631 = r18610 * r18630;
        float r18632 = r18607 + r18607;
        float r18633 = r18611 * r18632;
        float r18634 = sqrt(r18633);
        float r18635 = r18610 * r18634;
        float r18636 = r18625 ? r18631 : r18635;
        float r18637 = r18609 ? r18623 : r18636;
        return r18637;
}

double f_od(double re, double im) {
        double r18638 = re;
        double r18639 = -3.1678827500109226e-18;
        bool r18640 = r18638 <= r18639;
        double r18641 = 0.5;
        double r18642 = 2.0;
        double r18643 = im;
        double r18644 = r18642 * r18643;
        double r18645 = r18644 * r18643;
        double r18646 = sqrt(r18645);
        double r18647 = r18638 * r18638;
        double r18648 = r18643 * r18643;
        double r18649 = r18647 + r18648;
        double r18650 = sqrt(r18649);
        double r18651 = r18650 - r18638;
        double r18652 = sqrt(r18651);
        double r18653 = r18646 / r18652;
        double r18654 = r18641 * r18653;
        double r18655 = 1.605269259812864e+16;
        bool r18656 = r18638 <= r18655;
        double r18657 = sqrt(r18650);
        double r18658 = r18657 * r18657;
        double r18659 = r18658 + r18638;
        double r18660 = r18642 * r18659;
        double r18661 = sqrt(r18660);
        double r18662 = r18641 * r18661;
        double r18663 = r18638 + r18638;
        double r18664 = r18642 * r18663;
        double r18665 = sqrt(r18664);
        double r18666 = r18641 * r18665;
        double r18667 = r18656 ? r18662 : r18666;
        double r18668 = r18640 ? r18654 : r18667;
        return r18668;
}

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 r18669, r18670, r18671, r18672, r18673, r18674, r18675, r18676, r18677, r18678, r18679, r18680;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18669, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18670, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18671);
        mpfr_init(r18672);
        mpfr_init(r18673);
        mpfr_init(r18674);
        mpfr_init(r18675);
        mpfr_init(r18676);
        mpfr_init(r18677);
        mpfr_init(r18678);
        mpfr_init(r18679);
        mpfr_init(r18680);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18671, re, MPFR_RNDN);
        mpfr_mul(r18672, r18671, r18671, MPFR_RNDN);
        mpfr_set_d(r18673, im, MPFR_RNDN);
        mpfr_mul(r18674, r18673, r18673, MPFR_RNDN);
        mpfr_add(r18675, r18672, r18674, MPFR_RNDN);
        mpfr_sqrt(r18676, r18675, MPFR_RNDN);
        mpfr_add(r18677, r18676, r18671, MPFR_RNDN);
        mpfr_mul(r18678, r18670, r18677, MPFR_RNDN);
        mpfr_sqrt(r18679, r18678, MPFR_RNDN);
        mpfr_mul(r18680, r18669, r18679, MPFR_RNDN);
        return mpfr_get_d(r18680, MPFR_RNDN);
}

static mpfr_t 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, r18711;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18681);
        mpfr_init_set_str(r18682, "-3.1678828f-18", 10, MPFR_RNDN);
        mpfr_init(r18683);
        mpfr_init_set_str(r18684, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18685, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18686);
        mpfr_init(r18687);
        mpfr_init(r18688);
        mpfr_init(r18689);
        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_set_str(r18698, "1.6052693f+16", 10, MPFR_RNDN);
        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(r18708);
        mpfr_init(r18709);
        mpfr_init(r18710);
        mpfr_init(r18711);
}

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

static mpfr_t r18712, r18713, r18714, r18715, r18716, r18717, r18718, r18719, r18720, r18721, r18722, r18723, r18724, r18725, r18726, r18727, r18728, r18729, r18730, r18731, r18732, r18733, r18734, r18735, r18736, r18737, r18738, r18739, r18740, r18741, r18742;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18712);
        mpfr_init_set_str(r18713, "-3.1678828f-18", 10, MPFR_RNDN);
        mpfr_init(r18714);
        mpfr_init_set_str(r18715, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18716, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18717);
        mpfr_init(r18718);
        mpfr_init(r18719);
        mpfr_init(r18720);
        mpfr_init(r18721);
        mpfr_init(r18722);
        mpfr_init(r18723);
        mpfr_init(r18724);
        mpfr_init(r18725);
        mpfr_init(r18726);
        mpfr_init(r18727);
        mpfr_init(r18728);
        mpfr_init_set_str(r18729, "1.6052693f+16", 10, MPFR_RNDN);
        mpfr_init(r18730);
        mpfr_init(r18731);
        mpfr_init(r18732);
        mpfr_init(r18733);
        mpfr_init(r18734);
        mpfr_init(r18735);
        mpfr_init(r18736);
        mpfr_init(r18737);
        mpfr_init(r18738);
        mpfr_init(r18739);
        mpfr_init(r18740);
        mpfr_init(r18741);
        mpfr_init(r18742);
}

double f_dm(double re, double im) {
        mpfr_set_d(r18712, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18714, mpfr_cmp(r18712, r18713) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18717, im, MPFR_RNDN);
        mpfr_mul(r18718, r18716, r18717, MPFR_RNDN);
        mpfr_mul(r18719, r18718, r18717, MPFR_RNDN);
        mpfr_sqrt(r18720, r18719, MPFR_RNDN);
        mpfr_sqr(r18721, r18712, MPFR_RNDN);
        mpfr_mul(r18722, r18717, r18717, MPFR_RNDN);
        mpfr_add(r18723, r18721, r18722, MPFR_RNDN);
        mpfr_sqrt(r18724, r18723, MPFR_RNDN);
        mpfr_sub(r18725, r18724, r18712, MPFR_RNDN);
        mpfr_sqrt(r18726, r18725, MPFR_RNDN);
        mpfr_div(r18727, r18720, r18726, MPFR_RNDN);
        mpfr_mul(r18728, r18715, r18727, MPFR_RNDN);
        ;
        mpfr_set_si(r18730, mpfr_cmp(r18712, r18729) <= 0, MPFR_RNDN);
        mpfr_sqrt(r18731, r18724, MPFR_RNDN);
        mpfr_sqr(r18732, r18731, MPFR_RNDN);
        mpfr_add(r18733, r18732, r18712, MPFR_RNDN);
        mpfr_mul(r18734, r18716, r18733, MPFR_RNDN);
        mpfr_sqrt(r18735, r18734, MPFR_RNDN);
        mpfr_mul(r18736, r18715, r18735, MPFR_RNDN);
        mpfr_add(r18737, r18712, r18712, MPFR_RNDN);
        mpfr_mul(r18738, r18716, r18737, MPFR_RNDN);
        mpfr_sqrt(r18739, r18738, MPFR_RNDN);
        mpfr_mul(r18740, r18715, r18739, MPFR_RNDN);
        if (mpfr_get_si(r18730, MPFR_RNDN)) { mpfr_set(r18741, r18736, MPFR_RNDN); } else { mpfr_set(r18741, r18740, MPFR_RNDN); };
        if (mpfr_get_si(r18714, MPFR_RNDN)) { mpfr_set(r18742, r18728, MPFR_RNDN); } else { mpfr_set(r18742, r18741, MPFR_RNDN); };
        return mpfr_get_d(r18742, MPFR_RNDN);
}

