#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 r25569 = 0.5;
        float r25570 = 2.0;
        float r25571 = re;
        float r25572 = r25571 * r25571;
        float r25573 = im;
        float r25574 = r25573 * r25573;
        float r25575 = r25572 + r25574;
        float r25576 = sqrt(r25575);
        float r25577 = r25576 + r25571;
        float r25578 = r25570 * r25577;
        float r25579 = sqrt(r25578);
        float r25580 = r25569 * r25579;
        return r25580;
}

double f_id(double re, double im) {
        double r25581 = 0.5;
        double r25582 = 2.0;
        double r25583 = re;
        double r25584 = r25583 * r25583;
        double r25585 = im;
        double r25586 = r25585 * r25585;
        double r25587 = r25584 + r25586;
        double r25588 = sqrt(r25587);
        double r25589 = r25588 + r25583;
        double r25590 = r25582 * r25589;
        double r25591 = sqrt(r25590);
        double r25592 = r25581 * r25591;
        return r25592;
}


double f_of(float re, float im) {
        float r25593 = 2.0;
        float r25594 = im;
        float r25595 = re;
        float r25596 = r25594 + r25595;
        float r25597 = r25593 * r25596;
        float r25598 = -6.428611472871722e+156;
        bool r25599 = r25597 <= r25598;
        float r25600 = 0.5;
        float r25601 = r25594 * r25593;
        float r25602 = r25601 * r25594;
        float r25603 = -r25595;
        float r25604 = r25603 - r25595;
        float r25605 = r25602 / r25604;
        float r25606 = sqrt(r25605);
        float r25607 = r25600 * r25606;
        float r25608 = 1.1474879792918442e-257;
        bool r25609 = r25597 <= r25608;
        float r25610 = r25595 * r25595;
        float r25611 = r25594 * r25594;
        float r25612 = r25610 + r25611;
        float r25613 = sqrt(r25612);
        float r25614 = r25613 - r25595;
        float r25615 = r25594 / r25614;
        float r25616 = r25594 * r25615;
        float r25617 = r25593 * r25616;
        float r25618 = sqrt(r25617);
        float r25619 = r25600 * r25618;
        float r25620 = 5.047375239993434e+166;
        bool r25621 = r25597 <= r25620;
        float r25622 = cbrt(r25613);
        float r25623 = r25622 * r25622;
        float r25624 = r25623 * r25622;
        float r25625 = r25624 + r25595;
        float r25626 = r25593 * r25625;
        float r25627 = sqrt(r25626);
        float r25628 = r25600 * r25627;
        float r25629 = 2.1298540120048136e+187;
        bool r25630 = r25597 <= r25629;
        float r25631 = sqrt(r25597);
        float r25632 = r25600 * r25631;
        float r25633 = r25595 + r25595;
        float r25634 = r25593 * r25633;
        float r25635 = sqrt(r25634);
        float r25636 = r25600 * r25635;
        float r25637 = r25630 ? r25632 : r25636;
        float r25638 = r25621 ? r25628 : r25637;
        float r25639 = r25609 ? r25619 : r25638;
        float r25640 = r25599 ? r25607 : r25639;
        return r25640;
}

double f_od(double re, double im) {
        double r25641 = 2.0;
        double r25642 = im;
        double r25643 = re;
        double r25644 = r25642 + r25643;
        double r25645 = r25641 * r25644;
        double r25646 = -6.428611472871722e+156;
        bool r25647 = r25645 <= r25646;
        double r25648 = 0.5;
        double r25649 = r25642 * r25641;
        double r25650 = r25649 * r25642;
        double r25651 = -r25643;
        double r25652 = r25651 - r25643;
        double r25653 = r25650 / r25652;
        double r25654 = sqrt(r25653);
        double r25655 = r25648 * r25654;
        double r25656 = 1.1474879792918442e-257;
        bool r25657 = r25645 <= r25656;
        double r25658 = r25643 * r25643;
        double r25659 = r25642 * r25642;
        double r25660 = r25658 + r25659;
        double r25661 = sqrt(r25660);
        double r25662 = r25661 - r25643;
        double r25663 = r25642 / r25662;
        double r25664 = r25642 * r25663;
        double r25665 = r25641 * r25664;
        double r25666 = sqrt(r25665);
        double r25667 = r25648 * r25666;
        double r25668 = 5.047375239993434e+166;
        bool r25669 = r25645 <= r25668;
        double r25670 = cbrt(r25661);
        double r25671 = r25670 * r25670;
        double r25672 = r25671 * r25670;
        double r25673 = r25672 + r25643;
        double r25674 = r25641 * r25673;
        double r25675 = sqrt(r25674);
        double r25676 = r25648 * r25675;
        double r25677 = 2.1298540120048136e+187;
        bool r25678 = r25645 <= r25677;
        double r25679 = sqrt(r25645);
        double r25680 = r25648 * r25679;
        double r25681 = r25643 + r25643;
        double r25682 = r25641 * r25681;
        double r25683 = sqrt(r25682);
        double r25684 = r25648 * r25683;
        double r25685 = r25678 ? r25680 : r25684;
        double r25686 = r25669 ? r25676 : r25685;
        double r25687 = r25657 ? r25667 : r25686;
        double r25688 = r25647 ? r25655 : r25687;
        return r25688;
}

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 r25689, r25690, r25691, r25692, r25693, r25694, r25695, r25696, r25697, r25698, r25699, r25700;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r25689, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r25690, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25691);
        mpfr_init(r25692);
        mpfr_init(r25693);
        mpfr_init(r25694);
        mpfr_init(r25695);
        mpfr_init(r25696);
        mpfr_init(r25697);
        mpfr_init(r25698);
        mpfr_init(r25699);
        mpfr_init(r25700);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r25691, re, MPFR_RNDN);
        mpfr_mul(r25692, r25691, r25691, MPFR_RNDN);
        mpfr_set_d(r25693, im, MPFR_RNDN);
        mpfr_mul(r25694, r25693, r25693, MPFR_RNDN);
        mpfr_add(r25695, r25692, r25694, MPFR_RNDN);
        mpfr_sqrt(r25696, r25695, MPFR_RNDN);
        mpfr_add(r25697, r25696, r25691, MPFR_RNDN);
        mpfr_mul(r25698, r25690, r25697, MPFR_RNDN);
        mpfr_sqrt(r25699, r25698, MPFR_RNDN);
        mpfr_mul(r25700, r25689, r25699, MPFR_RNDN);
        return mpfr_get_d(r25700, MPFR_RNDN);
}

static mpfr_t r25701, r25702, r25703, r25704, r25705, r25706, r25707, r25708, r25709, r25710, r25711, r25712, r25713, r25714, r25715, r25716, r25717, r25718, r25719, r25720, r25721, r25722, r25723, r25724, r25725, r25726, r25727, r25728, r25729, r25730, r25731, r25732, r25733, r25734, r25735, r25736, r25737, r25738, r25739, r25740, r25741, r25742, r25743, r25744, r25745, r25746, r25747, r25748;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r25701, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25702);
        mpfr_init(r25703);
        mpfr_init(r25704);
        mpfr_init(r25705);
        mpfr_init_set_str(r25706, "-6.428611472871722e+156", 10, MPFR_RNDN);
        mpfr_init(r25707);
        mpfr_init_set_str(r25708, "0.5", 10, MPFR_RNDN);
        mpfr_init(r25709);
        mpfr_init(r25710);
        mpfr_init(r25711);
        mpfr_init(r25712);
        mpfr_init(r25713);
        mpfr_init(r25714);
        mpfr_init(r25715);
        mpfr_init_set_str(r25716, "1.1474879792918442e-257", 10, MPFR_RNDN);
        mpfr_init(r25717);
        mpfr_init(r25718);
        mpfr_init(r25719);
        mpfr_init(r25720);
        mpfr_init(r25721);
        mpfr_init(r25722);
        mpfr_init(r25723);
        mpfr_init(r25724);
        mpfr_init(r25725);
        mpfr_init(r25726);
        mpfr_init(r25727);
        mpfr_init_set_str(r25728, "5.047375239993434e+166", 10, MPFR_RNDN);
        mpfr_init(r25729);
        mpfr_init(r25730);
        mpfr_init(r25731);
        mpfr_init(r25732);
        mpfr_init(r25733);
        mpfr_init(r25734);
        mpfr_init(r25735);
        mpfr_init(r25736);
        mpfr_init_set_str(r25737, "2.1298540120048136e+187", 10, MPFR_RNDN);
        mpfr_init(r25738);
        mpfr_init(r25739);
        mpfr_init(r25740);
        mpfr_init(r25741);
        mpfr_init(r25742);
        mpfr_init(r25743);
        mpfr_init(r25744);
        mpfr_init(r25745);
        mpfr_init(r25746);
        mpfr_init(r25747);
        mpfr_init(r25748);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r25702, im, MPFR_RNDN);
        mpfr_set_d(r25703, re, MPFR_RNDN);
        mpfr_add(r25704, r25702, r25703, MPFR_RNDN);
        mpfr_mul(r25705, r25701, r25704, MPFR_RNDN);
        ;
        mpfr_set_si(r25707, mpfr_cmp(r25705, r25706) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r25709, r25702, r25701, MPFR_RNDN);
        mpfr_mul(r25710, r25709, r25702, MPFR_RNDN);
        mpfr_neg(r25711, r25703, MPFR_RNDN);
        mpfr_sub(r25712, r25711, r25703, MPFR_RNDN);
        mpfr_div(r25713, r25710, r25712, MPFR_RNDN);
        mpfr_sqrt(r25714, r25713, MPFR_RNDN);
        mpfr_mul(r25715, r25708, r25714, MPFR_RNDN);
        ;
        mpfr_set_si(r25717, mpfr_cmp(r25705, r25716) <= 0, MPFR_RNDN);
        mpfr_mul(r25718, r25703, r25703, MPFR_RNDN);
        mpfr_mul(r25719, r25702, r25702, MPFR_RNDN);
        mpfr_add(r25720, r25718, r25719, MPFR_RNDN);
        mpfr_sqrt(r25721, r25720, MPFR_RNDN);
        mpfr_sub(r25722, r25721, r25703, MPFR_RNDN);
        mpfr_div(r25723, r25702, r25722, MPFR_RNDN);
        mpfr_mul(r25724, r25702, r25723, MPFR_RNDN);
        mpfr_mul(r25725, r25701, r25724, MPFR_RNDN);
        mpfr_sqrt(r25726, r25725, MPFR_RNDN);
        mpfr_mul(r25727, r25708, r25726, MPFR_RNDN);
        ;
        mpfr_set_si(r25729, mpfr_cmp(r25705, r25728) <= 0, MPFR_RNDN);
        mpfr_cbrt(r25730, r25721, MPFR_RNDN);
        mpfr_mul(r25731, r25730, r25730, MPFR_RNDN);
        mpfr_mul(r25732, r25731, r25730, MPFR_RNDN);
        mpfr_add(r25733, r25732, r25703, MPFR_RNDN);
        mpfr_mul(r25734, r25701, r25733, MPFR_RNDN);
        mpfr_sqrt(r25735, r25734, MPFR_RNDN);
        mpfr_mul(r25736, r25708, r25735, MPFR_RNDN);
        ;
        mpfr_set_si(r25738, mpfr_cmp(r25705, r25737) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25739, r25705, MPFR_RNDN);
        mpfr_mul(r25740, r25708, r25739, MPFR_RNDN);
        mpfr_add(r25741, r25703, r25703, MPFR_RNDN);
        mpfr_mul(r25742, r25701, r25741, MPFR_RNDN);
        mpfr_sqrt(r25743, r25742, MPFR_RNDN);
        mpfr_mul(r25744, r25708, r25743, MPFR_RNDN);
        if (mpfr_get_si(r25738, MPFR_RNDN)) { mpfr_set(r25745, r25740, MPFR_RNDN); } else { mpfr_set(r25745, r25744, MPFR_RNDN); };
        if (mpfr_get_si(r25729, MPFR_RNDN)) { mpfr_set(r25746, r25736, MPFR_RNDN); } else { mpfr_set(r25746, r25745, MPFR_RNDN); };
        if (mpfr_get_si(r25717, MPFR_RNDN)) { mpfr_set(r25747, r25727, MPFR_RNDN); } else { mpfr_set(r25747, r25746, MPFR_RNDN); };
        if (mpfr_get_si(r25707, MPFR_RNDN)) { mpfr_set(r25748, r25715, MPFR_RNDN); } else { mpfr_set(r25748, r25747, MPFR_RNDN); };
        return mpfr_get_d(r25748, MPFR_RNDN);
}

static mpfr_t r25749, r25750, r25751, r25752, r25753, r25754, r25755, r25756, r25757, r25758, r25759, r25760, r25761, r25762, r25763, r25764, r25765, r25766, r25767, r25768, r25769, r25770, r25771, r25772, r25773, r25774, r25775, r25776, r25777, r25778, r25779, r25780, r25781, r25782, r25783, r25784, r25785, r25786, r25787, r25788, r25789, r25790, r25791, r25792, r25793, r25794, r25795, r25796;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r25749, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25750);
        mpfr_init(r25751);
        mpfr_init(r25752);
        mpfr_init(r25753);
        mpfr_init_set_str(r25754, "-6.428611472871722e+156", 10, MPFR_RNDN);
        mpfr_init(r25755);
        mpfr_init_set_str(r25756, "0.5", 10, MPFR_RNDN);
        mpfr_init(r25757);
        mpfr_init(r25758);
        mpfr_init(r25759);
        mpfr_init(r25760);
        mpfr_init(r25761);
        mpfr_init(r25762);
        mpfr_init(r25763);
        mpfr_init_set_str(r25764, "1.1474879792918442e-257", 10, MPFR_RNDN);
        mpfr_init(r25765);
        mpfr_init(r25766);
        mpfr_init(r25767);
        mpfr_init(r25768);
        mpfr_init(r25769);
        mpfr_init(r25770);
        mpfr_init(r25771);
        mpfr_init(r25772);
        mpfr_init(r25773);
        mpfr_init(r25774);
        mpfr_init(r25775);
        mpfr_init_set_str(r25776, "5.047375239993434e+166", 10, MPFR_RNDN);
        mpfr_init(r25777);
        mpfr_init(r25778);
        mpfr_init(r25779);
        mpfr_init(r25780);
        mpfr_init(r25781);
        mpfr_init(r25782);
        mpfr_init(r25783);
        mpfr_init(r25784);
        mpfr_init_set_str(r25785, "2.1298540120048136e+187", 10, MPFR_RNDN);
        mpfr_init(r25786);
        mpfr_init(r25787);
        mpfr_init(r25788);
        mpfr_init(r25789);
        mpfr_init(r25790);
        mpfr_init(r25791);
        mpfr_init(r25792);
        mpfr_init(r25793);
        mpfr_init(r25794);
        mpfr_init(r25795);
        mpfr_init(r25796);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r25750, im, MPFR_RNDN);
        mpfr_set_d(r25751, re, MPFR_RNDN);
        mpfr_add(r25752, r25750, r25751, MPFR_RNDN);
        mpfr_mul(r25753, r25749, r25752, MPFR_RNDN);
        ;
        mpfr_set_si(r25755, mpfr_cmp(r25753, r25754) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r25757, r25750, r25749, MPFR_RNDN);
        mpfr_mul(r25758, r25757, r25750, MPFR_RNDN);
        mpfr_neg(r25759, r25751, MPFR_RNDN);
        mpfr_sub(r25760, r25759, r25751, MPFR_RNDN);
        mpfr_div(r25761, r25758, r25760, MPFR_RNDN);
        mpfr_sqrt(r25762, r25761, MPFR_RNDN);
        mpfr_mul(r25763, r25756, r25762, MPFR_RNDN);
        ;
        mpfr_set_si(r25765, mpfr_cmp(r25753, r25764) <= 0, MPFR_RNDN);
        mpfr_mul(r25766, r25751, r25751, MPFR_RNDN);
        mpfr_mul(r25767, r25750, r25750, MPFR_RNDN);
        mpfr_add(r25768, r25766, r25767, MPFR_RNDN);
        mpfr_sqrt(r25769, r25768, MPFR_RNDN);
        mpfr_sub(r25770, r25769, r25751, MPFR_RNDN);
        mpfr_div(r25771, r25750, r25770, MPFR_RNDN);
        mpfr_mul(r25772, r25750, r25771, MPFR_RNDN);
        mpfr_mul(r25773, r25749, r25772, MPFR_RNDN);
        mpfr_sqrt(r25774, r25773, MPFR_RNDN);
        mpfr_mul(r25775, r25756, r25774, MPFR_RNDN);
        ;
        mpfr_set_si(r25777, mpfr_cmp(r25753, r25776) <= 0, MPFR_RNDN);
        mpfr_cbrt(r25778, r25769, MPFR_RNDN);
        mpfr_mul(r25779, r25778, r25778, MPFR_RNDN);
        mpfr_mul(r25780, r25779, r25778, MPFR_RNDN);
        mpfr_add(r25781, r25780, r25751, MPFR_RNDN);
        mpfr_mul(r25782, r25749, r25781, MPFR_RNDN);
        mpfr_sqrt(r25783, r25782, MPFR_RNDN);
        mpfr_mul(r25784, r25756, r25783, MPFR_RNDN);
        ;
        mpfr_set_si(r25786, mpfr_cmp(r25753, r25785) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25787, r25753, MPFR_RNDN);
        mpfr_mul(r25788, r25756, r25787, MPFR_RNDN);
        mpfr_add(r25789, r25751, r25751, MPFR_RNDN);
        mpfr_mul(r25790, r25749, r25789, MPFR_RNDN);
        mpfr_sqrt(r25791, r25790, MPFR_RNDN);
        mpfr_mul(r25792, r25756, r25791, MPFR_RNDN);
        if (mpfr_get_si(r25786, MPFR_RNDN)) { mpfr_set(r25793, r25788, MPFR_RNDN); } else { mpfr_set(r25793, r25792, MPFR_RNDN); };
        if (mpfr_get_si(r25777, MPFR_RNDN)) { mpfr_set(r25794, r25784, MPFR_RNDN); } else { mpfr_set(r25794, r25793, MPFR_RNDN); };
        if (mpfr_get_si(r25765, MPFR_RNDN)) { mpfr_set(r25795, r25775, MPFR_RNDN); } else { mpfr_set(r25795, r25794, MPFR_RNDN); };
        if (mpfr_get_si(r25755, MPFR_RNDN)) { mpfr_set(r25796, r25763, MPFR_RNDN); } else { mpfr_set(r25796, r25795, MPFR_RNDN); };
        return mpfr_get_d(r25796, MPFR_RNDN);
}

