#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 r19631 = 0.5f;
        float r19632 = 2.0f;
        float r19633 = re;
        float r19634 = r19633 * r19633;
        float r19635 = im;
        float r19636 = r19635 * r19635;
        float r19637 = r19634 + r19636;
        float r19638 = sqrt(r19637);
        float r19639 = r19638 + r19633;
        float r19640 = r19632 * r19639;
        float r19641 = sqrt(r19640);
        float r19642 = r19631 * r19641;
        return r19642;
}

double f_id(double re, double im) {
        double r19643 = 0.5;
        double r19644 = 2.0;
        double r19645 = re;
        double r19646 = r19645 * r19645;
        double r19647 = im;
        double r19648 = r19647 * r19647;
        double r19649 = r19646 + r19648;
        double r19650 = sqrt(r19649);
        double r19651 = r19650 + r19645;
        double r19652 = r19644 * r19651;
        double r19653 = sqrt(r19652);
        double r19654 = r19643 * r19653;
        return r19654;
}


double f_of(float re, float im) {
        float r19655 = re;
        float r19656 = -2.1575051392890884e+52f;
        bool r19657 = r19655 <= r19656;
        float r19658 = im;
        float r19659 = r19658 * r19658;
        float r19660 = 2.0f;
        float r19661 = r19659 * r19660;
        float r19662 = sqrt(r19661);
        float r19663 = 0.5f;
        float r19664 = -r19655;
        float r19665 = r19664 - r19655;
        float r19666 = sqrt(r19665);
        float r19667 = r19663 / r19666;
        float r19668 = r19662 * r19667;
        float r19669 = -2.994294306140617e-305f;
        bool r19670 = r19655 <= r19669;
        float r19671 = r19655 * r19655;
        float r19672 = r19671 + r19659;
        float r19673 = sqrt(r19672);
        float r19674 = r19673 - r19655;
        float r19675 = r19659 / r19674;
        float r19676 = r19660 * r19675;
        float r19677 = sqrt(r19676);
        float r19678 = r19663 * r19677;
        float r19679 = 2.255503749858442e-251f;
        bool r19680 = r19655 <= r19679;
        float r19681 = r19658 + r19655;
        float r19682 = r19660 * r19681;
        float r19683 = sqrt(r19682);
        float r19684 = r19663 * r19683;
        float r19685 = 2.3309285477581096e+154f;
        bool r19686 = r19655 <= r19685;
        float r19687 = r19655 * r19655;
        float r19688 = r19687 + r19659;
        float r19689 = sqrt(r19688);
        float r19690 = r19689 + r19655;
        float r19691 = r19660 * r19690;
        float r19692 = sqrt(r19691);
        float r19693 = r19663 * r19692;
        float r19694 = r19655 + r19655;
        float r19695 = r19660 * r19694;
        float r19696 = sqrt(r19695);
        float r19697 = r19663 * r19696;
        float r19698 = r19686 ? r19693 : r19697;
        float r19699 = r19680 ? r19684 : r19698;
        float r19700 = r19670 ? r19678 : r19699;
        float r19701 = r19657 ? r19668 : r19700;
        return r19701;
}

double f_od(double re, double im) {
        double r19702 = re;
        double r19703 = -2.1575051392890884e+52;
        bool r19704 = r19702 <= r19703;
        double r19705 = im;
        double r19706 = r19705 * r19705;
        double r19707 = 2.0;
        double r19708 = r19706 * r19707;
        double r19709 = sqrt(r19708);
        double r19710 = 0.5;
        double r19711 = -r19702;
        double r19712 = r19711 - r19702;
        double r19713 = sqrt(r19712);
        double r19714 = r19710 / r19713;
        double r19715 = r19709 * r19714;
        double r19716 = -2.994294306140617e-305;
        bool r19717 = r19702 <= r19716;
        double r19718 = r19702 * r19702;
        double r19719 = r19718 + r19706;
        double r19720 = sqrt(r19719);
        double r19721 = r19720 - r19702;
        double r19722 = r19706 / r19721;
        double r19723 = r19707 * r19722;
        double r19724 = sqrt(r19723);
        double r19725 = r19710 * r19724;
        double r19726 = 2.255503749858442e-251;
        bool r19727 = r19702 <= r19726;
        double r19728 = r19705 + r19702;
        double r19729 = r19707 * r19728;
        double r19730 = sqrt(r19729);
        double r19731 = r19710 * r19730;
        double r19732 = 2.3309285477581096e+154;
        bool r19733 = r19702 <= r19732;
        double r19734 = r19702 * r19702;
        double r19735 = r19734 + r19706;
        double r19736 = sqrt(r19735);
        double r19737 = r19736 + r19702;
        double r19738 = r19707 * r19737;
        double r19739 = sqrt(r19738);
        double r19740 = r19710 * r19739;
        double r19741 = r19702 + r19702;
        double r19742 = r19707 * r19741;
        double r19743 = sqrt(r19742);
        double r19744 = r19710 * r19743;
        double r19745 = r19733 ? r19740 : r19744;
        double r19746 = r19727 ? r19731 : r19745;
        double r19747 = r19717 ? r19725 : r19746;
        double r19748 = r19704 ? r19715 : r19747;
        return r19748;
}

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 r19749, r19750, r19751, r19752, r19753, r19754, r19755, r19756, r19757, r19758, r19759, r19760;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19749, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19750, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19751);
        mpfr_init(r19752);
        mpfr_init(r19753);
        mpfr_init(r19754);
        mpfr_init(r19755);
        mpfr_init(r19756);
        mpfr_init(r19757);
        mpfr_init(r19758);
        mpfr_init(r19759);
        mpfr_init(r19760);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19751, re, MPFR_RNDN);
        mpfr_mul(r19752, r19751, r19751, MPFR_RNDN);
        mpfr_set_d(r19753, im, MPFR_RNDN);
        mpfr_mul(r19754, r19753, r19753, MPFR_RNDN);
        mpfr_add(r19755, r19752, r19754, MPFR_RNDN);
        mpfr_sqrt(r19756, r19755, MPFR_RNDN);
        mpfr_add(r19757, r19756, r19751, MPFR_RNDN);
        mpfr_mul(r19758, r19750, r19757, MPFR_RNDN);
        mpfr_sqrt(r19759, r19758, MPFR_RNDN);
        mpfr_mul(r19760, r19749, r19759, MPFR_RNDN);
        return mpfr_get_d(r19760, MPFR_RNDN);
}

static mpfr_t r19761, r19762, r19763, r19764, r19765, r19766, r19767, r19768, r19769, r19770, r19771, r19772, r19773, r19774, r19775, r19776, r19777, r19778, r19779, r19780, r19781, r19782, r19783, r19784, r19785, r19786, r19787, r19788, r19789, r19790, r19791, r19792, r19793, r19794, r19795, r19796, r19797, r19798, r19799, r19800, r19801, r19802, r19803, r19804, r19805, r19806, r19807;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19761);
        mpfr_init_set_str(r19762, "-2.1575051392890884e+52", 10, MPFR_RNDN);
        mpfr_init(r19763);
        mpfr_init(r19764);
        mpfr_init(r19765);
        mpfr_init_set_str(r19766, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19767);
        mpfr_init(r19768);
        mpfr_init_set_str(r19769, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19770);
        mpfr_init(r19771);
        mpfr_init(r19772);
        mpfr_init(r19773);
        mpfr_init(r19774);
        mpfr_init_set_str(r19775, "-2.994294306140617e-305", 10, MPFR_RNDN);
        mpfr_init(r19776);
        mpfr_init(r19777);
        mpfr_init(r19778);
        mpfr_init(r19779);
        mpfr_init(r19780);
        mpfr_init(r19781);
        mpfr_init(r19782);
        mpfr_init(r19783);
        mpfr_init(r19784);
        mpfr_init_set_str(r19785, "2.255503749858442e-251", 10, MPFR_RNDN);
        mpfr_init(r19786);
        mpfr_init(r19787);
        mpfr_init(r19788);
        mpfr_init(r19789);
        mpfr_init(r19790);
        mpfr_init_set_str(r19791, "2.3309285477581096e+154", 10, MPFR_RNDN);
        mpfr_init(r19792);
        mpfr_init(r19793);
        mpfr_init(r19794);
        mpfr_init(r19795);
        mpfr_init(r19796);
        mpfr_init(r19797);
        mpfr_init(r19798);
        mpfr_init(r19799);
        mpfr_init(r19800);
        mpfr_init(r19801);
        mpfr_init(r19802);
        mpfr_init(r19803);
        mpfr_init(r19804);
        mpfr_init(r19805);
        mpfr_init(r19806);
        mpfr_init(r19807);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19761, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19763, mpfr_cmp(r19761, r19762) <= 0, MPFR_RNDN);
        mpfr_set_d(r19764, im, MPFR_RNDN);
        mpfr_mul(r19765, r19764, r19764, MPFR_RNDN);
        ;
        mpfr_mul(r19767, r19765, r19766, MPFR_RNDN);
        mpfr_sqrt(r19768, r19767, MPFR_RNDN);
        ;
        mpfr_neg(r19770, r19761, MPFR_RNDN);
        mpfr_sub(r19771, r19770, r19761, MPFR_RNDN);
        mpfr_sqrt(r19772, r19771, MPFR_RNDN);
        mpfr_div(r19773, r19769, r19772, MPFR_RNDN);
        mpfr_mul(r19774, r19768, r19773, MPFR_RNDN);
        ;
        mpfr_set_si(r19776, mpfr_cmp(r19761, r19775) <= 0, MPFR_RNDN);
        mpfr_sqr(r19777, r19761, MPFR_RNDN);
        mpfr_add(r19778, r19777, r19765, MPFR_RNDN);
        mpfr_sqrt(r19779, r19778, MPFR_RNDN);
        mpfr_sub(r19780, r19779, r19761, MPFR_RNDN);
        mpfr_div(r19781, r19765, r19780, MPFR_RNDN);
        mpfr_mul(r19782, r19766, r19781, MPFR_RNDN);
        mpfr_sqrt(r19783, r19782, MPFR_RNDN);
        mpfr_mul(r19784, r19769, r19783, MPFR_RNDN);
        ;
        mpfr_set_si(r19786, mpfr_cmp(r19761, r19785) <= 0, MPFR_RNDN);
        mpfr_add(r19787, r19764, r19761, MPFR_RNDN);
        mpfr_mul(r19788, r19766, r19787, MPFR_RNDN);
        mpfr_sqrt(r19789, r19788, MPFR_RNDN);
        mpfr_mul(r19790, r19769, r19789, MPFR_RNDN);
        ;
        mpfr_set_si(r19792, mpfr_cmp(r19761, r19791) <= 0, MPFR_RNDN);
        mpfr_mul(r19793, r19761, r19761, MPFR_RNDN);
        mpfr_add(r19794, r19793, r19765, MPFR_RNDN);
        mpfr_sqrt(r19795, r19794, MPFR_RNDN);
        mpfr_add(r19796, r19795, r19761, MPFR_RNDN);
        mpfr_mul(r19797, r19766, r19796, MPFR_RNDN);
        mpfr_sqrt(r19798, r19797, MPFR_RNDN);
        mpfr_mul(r19799, r19769, r19798, MPFR_RNDN);
        mpfr_add(r19800, r19761, r19761, MPFR_RNDN);
        mpfr_mul(r19801, r19766, r19800, MPFR_RNDN);
        mpfr_sqrt(r19802, r19801, MPFR_RNDN);
        mpfr_mul(r19803, r19769, r19802, MPFR_RNDN);
        if (mpfr_get_si(r19792, MPFR_RNDN)) { mpfr_set(r19804, r19799, MPFR_RNDN); } else { mpfr_set(r19804, r19803, MPFR_RNDN); };
        if (mpfr_get_si(r19786, MPFR_RNDN)) { mpfr_set(r19805, r19790, MPFR_RNDN); } else { mpfr_set(r19805, r19804, MPFR_RNDN); };
        if (mpfr_get_si(r19776, MPFR_RNDN)) { mpfr_set(r19806, r19784, MPFR_RNDN); } else { mpfr_set(r19806, r19805, MPFR_RNDN); };
        if (mpfr_get_si(r19763, MPFR_RNDN)) { mpfr_set(r19807, r19774, MPFR_RNDN); } else { mpfr_set(r19807, r19806, MPFR_RNDN); };
        return mpfr_get_d(r19807, MPFR_RNDN);
}

static mpfr_t r19808, r19809, r19810, r19811, r19812, r19813, r19814, r19815, r19816, r19817, r19818, r19819, r19820, r19821, r19822, r19823, r19824, r19825, r19826, r19827, r19828, r19829, r19830, r19831, r19832, r19833, r19834, r19835, r19836, r19837, r19838, r19839, r19840, r19841, r19842, r19843, r19844, r19845, r19846, r19847, r19848, r19849, r19850, r19851, r19852, r19853, r19854;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19808);
        mpfr_init_set_str(r19809, "-2.1575051392890884e+52", 10, MPFR_RNDN);
        mpfr_init(r19810);
        mpfr_init(r19811);
        mpfr_init(r19812);
        mpfr_init_set_str(r19813, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19814);
        mpfr_init(r19815);
        mpfr_init_set_str(r19816, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19817);
        mpfr_init(r19818);
        mpfr_init(r19819);
        mpfr_init(r19820);
        mpfr_init(r19821);
        mpfr_init_set_str(r19822, "-2.994294306140617e-305", 10, MPFR_RNDN);
        mpfr_init(r19823);
        mpfr_init(r19824);
        mpfr_init(r19825);
        mpfr_init(r19826);
        mpfr_init(r19827);
        mpfr_init(r19828);
        mpfr_init(r19829);
        mpfr_init(r19830);
        mpfr_init(r19831);
        mpfr_init_set_str(r19832, "2.255503749858442e-251", 10, MPFR_RNDN);
        mpfr_init(r19833);
        mpfr_init(r19834);
        mpfr_init(r19835);
        mpfr_init(r19836);
        mpfr_init(r19837);
        mpfr_init_set_str(r19838, "2.3309285477581096e+154", 10, MPFR_RNDN);
        mpfr_init(r19839);
        mpfr_init(r19840);
        mpfr_init(r19841);
        mpfr_init(r19842);
        mpfr_init(r19843);
        mpfr_init(r19844);
        mpfr_init(r19845);
        mpfr_init(r19846);
        mpfr_init(r19847);
        mpfr_init(r19848);
        mpfr_init(r19849);
        mpfr_init(r19850);
        mpfr_init(r19851);
        mpfr_init(r19852);
        mpfr_init(r19853);
        mpfr_init(r19854);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19808, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19810, mpfr_cmp(r19808, r19809) <= 0, MPFR_RNDN);
        mpfr_set_d(r19811, im, MPFR_RNDN);
        mpfr_mul(r19812, r19811, r19811, MPFR_RNDN);
        ;
        mpfr_mul(r19814, r19812, r19813, MPFR_RNDN);
        mpfr_sqrt(r19815, r19814, MPFR_RNDN);
        ;
        mpfr_neg(r19817, r19808, MPFR_RNDN);
        mpfr_sub(r19818, r19817, r19808, MPFR_RNDN);
        mpfr_sqrt(r19819, r19818, MPFR_RNDN);
        mpfr_div(r19820, r19816, r19819, MPFR_RNDN);
        mpfr_mul(r19821, r19815, r19820, MPFR_RNDN);
        ;
        mpfr_set_si(r19823, mpfr_cmp(r19808, r19822) <= 0, MPFR_RNDN);
        mpfr_sqr(r19824, r19808, MPFR_RNDN);
        mpfr_add(r19825, r19824, r19812, MPFR_RNDN);
        mpfr_sqrt(r19826, r19825, MPFR_RNDN);
        mpfr_sub(r19827, r19826, r19808, MPFR_RNDN);
        mpfr_div(r19828, r19812, r19827, MPFR_RNDN);
        mpfr_mul(r19829, r19813, r19828, MPFR_RNDN);
        mpfr_sqrt(r19830, r19829, MPFR_RNDN);
        mpfr_mul(r19831, r19816, r19830, MPFR_RNDN);
        ;
        mpfr_set_si(r19833, mpfr_cmp(r19808, r19832) <= 0, MPFR_RNDN);
        mpfr_add(r19834, r19811, r19808, MPFR_RNDN);
        mpfr_mul(r19835, r19813, r19834, MPFR_RNDN);
        mpfr_sqrt(r19836, r19835, MPFR_RNDN);
        mpfr_mul(r19837, r19816, r19836, MPFR_RNDN);
        ;
        mpfr_set_si(r19839, mpfr_cmp(r19808, r19838) <= 0, MPFR_RNDN);
        mpfr_mul(r19840, r19808, r19808, MPFR_RNDN);
        mpfr_add(r19841, r19840, r19812, MPFR_RNDN);
        mpfr_sqrt(r19842, r19841, MPFR_RNDN);
        mpfr_add(r19843, r19842, r19808, MPFR_RNDN);
        mpfr_mul(r19844, r19813, r19843, MPFR_RNDN);
        mpfr_sqrt(r19845, r19844, MPFR_RNDN);
        mpfr_mul(r19846, r19816, r19845, MPFR_RNDN);
        mpfr_add(r19847, r19808, r19808, MPFR_RNDN);
        mpfr_mul(r19848, r19813, r19847, MPFR_RNDN);
        mpfr_sqrt(r19849, r19848, MPFR_RNDN);
        mpfr_mul(r19850, r19816, r19849, MPFR_RNDN);
        if (mpfr_get_si(r19839, MPFR_RNDN)) { mpfr_set(r19851, r19846, MPFR_RNDN); } else { mpfr_set(r19851, r19850, MPFR_RNDN); };
        if (mpfr_get_si(r19833, MPFR_RNDN)) { mpfr_set(r19852, r19837, MPFR_RNDN); } else { mpfr_set(r19852, r19851, MPFR_RNDN); };
        if (mpfr_get_si(r19823, MPFR_RNDN)) { mpfr_set(r19853, r19831, MPFR_RNDN); } else { mpfr_set(r19853, r19852, MPFR_RNDN); };
        if (mpfr_get_si(r19810, MPFR_RNDN)) { mpfr_set(r19854, r19821, MPFR_RNDN); } else { mpfr_set(r19854, r19853, MPFR_RNDN); };
        return mpfr_get_d(r19854, MPFR_RNDN);
}

