#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 r25594 = 0.5;
        float r25595 = 2.0;
        float r25596 = re;
        float r25597 = r25596 * r25596;
        float r25598 = im;
        float r25599 = r25598 * r25598;
        float r25600 = r25597 + r25599;
        float r25601 = sqrt(r25600);
        float r25602 = r25601 + r25596;
        float r25603 = r25595 * r25602;
        float r25604 = sqrt(r25603);
        float r25605 = r25594 * r25604;
        return r25605;
}

double f_id(double re, double im) {
        double r25606 = 0.5;
        double r25607 = 2.0;
        double r25608 = re;
        double r25609 = r25608 * r25608;
        double r25610 = im;
        double r25611 = r25610 * r25610;
        double r25612 = r25609 + r25611;
        double r25613 = sqrt(r25612);
        double r25614 = r25613 + r25608;
        double r25615 = r25607 * r25614;
        double r25616 = sqrt(r25615);
        double r25617 = r25606 * r25616;
        return r25617;
}


double f_of(float re, float im) {
        float r25618 = 2.0;
        float r25619 = im;
        float r25620 = re;
        float r25621 = r25619 + r25620;
        float r25622 = r25618 * r25621;
        float r25623 = -2.4563089802752075e+155;
        bool r25624 = r25622 <= r25623;
        float r25625 = 0.5;
        float r25626 = -r25620;
        float r25627 = r25626 - r25620;
        float r25628 = sqrt(r25627);
        float r25629 = r25619 * r25618;
        float r25630 = r25629 * r25619;
        float r25631 = sqrt(r25630);
        float r25632 = r25628 / r25631;
        float r25633 = r25625 / r25632;
        float r25634 = 1.2687197579271778e-258;
        bool r25635 = r25622 <= r25634;
        float r25636 = sqrt(r25618);
        float r25637 = fabs(r25619);
        float r25638 = r25636 * r25637;
        float r25639 = r25620 * r25620;
        float r25640 = r25619 * r25619;
        float r25641 = r25639 + r25640;
        float r25642 = sqrt(r25641);
        float r25643 = r25642 - r25620;
        float r25644 = sqrt(r25643);
        float r25645 = r25638 / r25644;
        float r25646 = r25625 * r25645;
        float r25647 = 8.360970028419815e+154;
        bool r25648 = r25622 <= r25647;
        float r25649 = r25642 + r25620;
        float r25650 = r25618 * r25649;
        float r25651 = sqrt(r25650);
        float r25652 = r25625 * r25651;
        float r25653 = sqrt(r25622);
        float r25654 = r25625 * r25653;
        float r25655 = r25648 ? r25652 : r25654;
        float r25656 = r25635 ? r25646 : r25655;
        float r25657 = r25624 ? r25633 : r25656;
        return r25657;
}

double f_od(double re, double im) {
        double r25658 = 2.0;
        double r25659 = im;
        double r25660 = re;
        double r25661 = r25659 + r25660;
        double r25662 = r25658 * r25661;
        double r25663 = -2.4563089802752075e+155;
        bool r25664 = r25662 <= r25663;
        double r25665 = 0.5;
        double r25666 = -r25660;
        double r25667 = r25666 - r25660;
        double r25668 = sqrt(r25667);
        double r25669 = r25659 * r25658;
        double r25670 = r25669 * r25659;
        double r25671 = sqrt(r25670);
        double r25672 = r25668 / r25671;
        double r25673 = r25665 / r25672;
        double r25674 = 1.2687197579271778e-258;
        bool r25675 = r25662 <= r25674;
        double r25676 = sqrt(r25658);
        double r25677 = fabs(r25659);
        double r25678 = r25676 * r25677;
        double r25679 = r25660 * r25660;
        double r25680 = r25659 * r25659;
        double r25681 = r25679 + r25680;
        double r25682 = sqrt(r25681);
        double r25683 = r25682 - r25660;
        double r25684 = sqrt(r25683);
        double r25685 = r25678 / r25684;
        double r25686 = r25665 * r25685;
        double r25687 = 8.360970028419815e+154;
        bool r25688 = r25662 <= r25687;
        double r25689 = r25682 + r25660;
        double r25690 = r25658 * r25689;
        double r25691 = sqrt(r25690);
        double r25692 = r25665 * r25691;
        double r25693 = sqrt(r25662);
        double r25694 = r25665 * r25693;
        double r25695 = r25688 ? r25692 : r25694;
        double r25696 = r25675 ? r25686 : r25695;
        double r25697 = r25664 ? r25673 : r25696;
        return r25697;
}

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 r25698, r25699, r25700, r25701, r25702, r25703, r25704, r25705, r25706, r25707, r25708, r25709;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r25698, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r25699, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25700);
        mpfr_init(r25701);
        mpfr_init(r25702);
        mpfr_init(r25703);
        mpfr_init(r25704);
        mpfr_init(r25705);
        mpfr_init(r25706);
        mpfr_init(r25707);
        mpfr_init(r25708);
        mpfr_init(r25709);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r25700, re, MPFR_RNDN);
        mpfr_mul(r25701, r25700, r25700, MPFR_RNDN);
        mpfr_set_d(r25702, im, MPFR_RNDN);
        mpfr_mul(r25703, r25702, r25702, MPFR_RNDN);
        mpfr_add(r25704, r25701, r25703, MPFR_RNDN);
        mpfr_sqrt(r25705, r25704, MPFR_RNDN);
        mpfr_add(r25706, r25705, r25700, MPFR_RNDN);
        mpfr_mul(r25707, r25699, r25706, MPFR_RNDN);
        mpfr_sqrt(r25708, r25707, MPFR_RNDN);
        mpfr_mul(r25709, r25698, r25708, MPFR_RNDN);
        return mpfr_get_d(r25709, MPFR_RNDN);
}

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r25710, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25711);
        mpfr_init(r25712);
        mpfr_init(r25713);
        mpfr_init(r25714);
        mpfr_init_set_str(r25715, "-2.4563089802752075e+155", 10, MPFR_RNDN);
        mpfr_init(r25716);
        mpfr_init_set_str(r25717, "0.5", 10, MPFR_RNDN);
        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_set_str(r25726, "1.2687197579271778e-258", 10, MPFR_RNDN);
        mpfr_init(r25727);
        mpfr_init(r25728);
        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(r25737);
        mpfr_init(r25738);
        mpfr_init_set_str(r25739, "8.360970028419815e+154", 10, MPFR_RNDN);
        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);
        mpfr_init(r25749);
}

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

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

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r25750, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25751);
        mpfr_init(r25752);
        mpfr_init(r25753);
        mpfr_init(r25754);
        mpfr_init_set_str(r25755, "-2.4563089802752075e+155", 10, MPFR_RNDN);
        mpfr_init(r25756);
        mpfr_init_set_str(r25757, "0.5", 10, MPFR_RNDN);
        mpfr_init(r25758);
        mpfr_init(r25759);
        mpfr_init(r25760);
        mpfr_init(r25761);
        mpfr_init(r25762);
        mpfr_init(r25763);
        mpfr_init(r25764);
        mpfr_init(r25765);
        mpfr_init_set_str(r25766, "1.2687197579271778e-258", 10, MPFR_RNDN);
        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(r25776);
        mpfr_init(r25777);
        mpfr_init(r25778);
        mpfr_init_set_str(r25779, "8.360970028419815e+154", 10, MPFR_RNDN);
        mpfr_init(r25780);
        mpfr_init(r25781);
        mpfr_init(r25782);
        mpfr_init(r25783);
        mpfr_init(r25784);
        mpfr_init(r25785);
        mpfr_init(r25786);
        mpfr_init(r25787);
        mpfr_init(r25788);
        mpfr_init(r25789);
}

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

