#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 r19663 = 0.5f;
        float r19664 = 2.0f;
        float r19665 = re;
        float r19666 = r19665 * r19665;
        float r19667 = im;
        float r19668 = r19667 * r19667;
        float r19669 = r19666 + r19668;
        float r19670 = sqrt(r19669);
        float r19671 = r19670 + r19665;
        float r19672 = r19664 * r19671;
        float r19673 = sqrt(r19672);
        float r19674 = r19663 * r19673;
        return r19674;
}

double f_id(double re, double im) {
        double r19675 = 0.5;
        double r19676 = 2.0;
        double r19677 = re;
        double r19678 = r19677 * r19677;
        double r19679 = im;
        double r19680 = r19679 * r19679;
        double r19681 = r19678 + r19680;
        double r19682 = sqrt(r19681);
        double r19683 = r19682 + r19677;
        double r19684 = r19676 * r19683;
        double r19685 = sqrt(r19684);
        double r19686 = r19675 * r19685;
        return r19686;
}


double f_of(float re, float im) {
        float r19687 = re;
        float r19688 = -1.0070763208517064e+21f;
        bool r19689 = r19687 <= r19688;
        float r19690 = 0.5f;
        float r19691 = 2.0f;
        float r19692 = im;
        float r19693 = r19691 * r19692;
        float r19694 = r19693 * r19692;
        float r19695 = sqrt(r19694);
        float r19696 = -2.0f;
        float r19697 = r19696 * r19687;
        float r19698 = sqrt(r19697);
        float r19699 = r19695 / r19698;
        float r19700 = r19690 * r19699;
        float r19701 = -3.953336011394025e-70f;
        bool r19702 = r19687 <= r19701;
        float r19703 = sqrt(r19693);
        float r19704 = sqrt(r19692);
        float r19705 = r19703 * r19704;
        float r19706 = r19687 * r19687;
        float r19707 = r19692 * r19692;
        float r19708 = r19706 + r19707;
        float r19709 = sqrt(r19708);
        float r19710 = r19709 - r19687;
        float r19711 = sqrt(r19710);
        float r19712 = r19705 / r19711;
        float r19713 = r19690 * r19712;
        float r19714 = 3.751610550051807e+91f;
        bool r19715 = r19687 <= r19714;
        float r19716 = r19687 * r19687;
        float r19717 = r19716 + r19707;
        float r19718 = sqrt(r19717);
        float r19719 = r19718 + r19687;
        float r19720 = r19691 * r19719;
        float r19721 = sqrt(r19720);
        float r19722 = r19690 * r19721;
        float r19723 = r19687 + r19687;
        float r19724 = r19691 * r19723;
        float r19725 = sqrt(r19724);
        float r19726 = r19690 * r19725;
        float r19727 = r19715 ? r19722 : r19726;
        float r19728 = r19702 ? r19713 : r19727;
        float r19729 = r19689 ? r19700 : r19728;
        return r19729;
}

double f_od(double re, double im) {
        double r19730 = re;
        double r19731 = -1.0070763208517064e+21;
        bool r19732 = r19730 <= r19731;
        double r19733 = 0.5;
        double r19734 = 2.0;
        double r19735 = im;
        double r19736 = r19734 * r19735;
        double r19737 = r19736 * r19735;
        double r19738 = sqrt(r19737);
        double r19739 = -2.0;
        double r19740 = r19739 * r19730;
        double r19741 = sqrt(r19740);
        double r19742 = r19738 / r19741;
        double r19743 = r19733 * r19742;
        double r19744 = -3.953336011394025e-70;
        bool r19745 = r19730 <= r19744;
        double r19746 = sqrt(r19736);
        double r19747 = sqrt(r19735);
        double r19748 = r19746 * r19747;
        double r19749 = r19730 * r19730;
        double r19750 = r19735 * r19735;
        double r19751 = r19749 + r19750;
        double r19752 = sqrt(r19751);
        double r19753 = r19752 - r19730;
        double r19754 = sqrt(r19753);
        double r19755 = r19748 / r19754;
        double r19756 = r19733 * r19755;
        double r19757 = 3.751610550051807e+91;
        bool r19758 = r19730 <= r19757;
        double r19759 = r19730 * r19730;
        double r19760 = r19759 + r19750;
        double r19761 = sqrt(r19760);
        double r19762 = r19761 + r19730;
        double r19763 = r19734 * r19762;
        double r19764 = sqrt(r19763);
        double r19765 = r19733 * r19764;
        double r19766 = r19730 + r19730;
        double r19767 = r19734 * r19766;
        double r19768 = sqrt(r19767);
        double r19769 = r19733 * r19768;
        double r19770 = r19758 ? r19765 : r19769;
        double r19771 = r19745 ? r19756 : r19770;
        double r19772 = r19732 ? r19743 : r19771;
        return r19772;
}

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 r19773, r19774, r19775, r19776, r19777, r19778, r19779, r19780, r19781, r19782, r19783, r19784;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19773, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19774, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19775);
        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);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19775, re, MPFR_RNDN);
        mpfr_mul(r19776, r19775, r19775, MPFR_RNDN);
        mpfr_set_d(r19777, im, MPFR_RNDN);
        mpfr_mul(r19778, r19777, r19777, MPFR_RNDN);
        mpfr_add(r19779, r19776, r19778, MPFR_RNDN);
        mpfr_sqrt(r19780, r19779, MPFR_RNDN);
        mpfr_add(r19781, r19780, r19775, MPFR_RNDN);
        mpfr_mul(r19782, r19774, r19781, MPFR_RNDN);
        mpfr_sqrt(r19783, r19782, MPFR_RNDN);
        mpfr_mul(r19784, r19773, r19783, MPFR_RNDN);
        return mpfr_get_d(r19784, MPFR_RNDN);
}

static mpfr_t r19785, r19786, r19787, r19788, r19789, r19790, r19791, r19792, r19793, r19794, r19795, r19796, r19797, r19798, r19799, r19800, r19801, r19802, r19803, r19804, r19805, r19806, r19807, r19808, r19809, r19810, r19811, r19812, r19813, r19814, r19815, r19816, r19817, r19818, r19819, r19820, r19821, r19822, r19823, r19824, r19825, r19826, r19827;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19785);
        mpfr_init_set_str(r19786, "-1.0070763208517064e+21", 10, MPFR_RNDN);
        mpfr_init(r19787);
        mpfr_init_set_str(r19788, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19789, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19790);
        mpfr_init(r19791);
        mpfr_init(r19792);
        mpfr_init(r19793);
        mpfr_init_set_str(r19794, "-2", 10, MPFR_RNDN);
        mpfr_init(r19795);
        mpfr_init(r19796);
        mpfr_init(r19797);
        mpfr_init(r19798);
        mpfr_init_set_str(r19799, "-3.953336011394025e-70", 10, MPFR_RNDN);
        mpfr_init(r19800);
        mpfr_init(r19801);
        mpfr_init(r19802);
        mpfr_init(r19803);
        mpfr_init(r19804);
        mpfr_init(r19805);
        mpfr_init(r19806);
        mpfr_init(r19807);
        mpfr_init(r19808);
        mpfr_init(r19809);
        mpfr_init(r19810);
        mpfr_init(r19811);
        mpfr_init_set_str(r19812, "3.751610550051807e+91", 10, MPFR_RNDN);
        mpfr_init(r19813);
        mpfr_init(r19814);
        mpfr_init(r19815);
        mpfr_init(r19816);
        mpfr_init(r19817);
        mpfr_init(r19818);
        mpfr_init(r19819);
        mpfr_init(r19820);
        mpfr_init(r19821);
        mpfr_init(r19822);
        mpfr_init(r19823);
        mpfr_init(r19824);
        mpfr_init(r19825);
        mpfr_init(r19826);
        mpfr_init(r19827);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19785, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19787, mpfr_cmp(r19785, r19786) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19790, im, MPFR_RNDN);
        mpfr_mul(r19791, r19789, r19790, MPFR_RNDN);
        mpfr_mul(r19792, r19791, r19790, MPFR_RNDN);
        mpfr_sqrt(r19793, r19792, MPFR_RNDN);
        ;
        mpfr_mul(r19795, r19794, r19785, MPFR_RNDN);
        mpfr_sqrt(r19796, r19795, MPFR_RNDN);
        mpfr_div(r19797, r19793, r19796, MPFR_RNDN);
        mpfr_mul(r19798, r19788, r19797, MPFR_RNDN);
        ;
        mpfr_set_si(r19800, mpfr_cmp(r19785, r19799) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19801, r19791, MPFR_RNDN);
        mpfr_sqrt(r19802, r19790, MPFR_RNDN);
        mpfr_mul(r19803, r19801, r19802, MPFR_RNDN);
        mpfr_sqr(r19804, r19785, MPFR_RNDN);
        mpfr_mul(r19805, r19790, r19790, MPFR_RNDN);
        mpfr_add(r19806, r19804, r19805, MPFR_RNDN);
        mpfr_sqrt(r19807, r19806, MPFR_RNDN);
        mpfr_sub(r19808, r19807, r19785, MPFR_RNDN);
        mpfr_sqrt(r19809, r19808, MPFR_RNDN);
        mpfr_div(r19810, r19803, r19809, MPFR_RNDN);
        mpfr_mul(r19811, r19788, r19810, MPFR_RNDN);
        ;
        mpfr_set_si(r19813, mpfr_cmp(r19785, r19812) <= 0, MPFR_RNDN);
        mpfr_mul(r19814, r19785, r19785, MPFR_RNDN);
        mpfr_add(r19815, r19814, r19805, MPFR_RNDN);
        mpfr_sqrt(r19816, r19815, MPFR_RNDN);
        mpfr_add(r19817, r19816, r19785, MPFR_RNDN);
        mpfr_mul(r19818, r19789, r19817, MPFR_RNDN);
        mpfr_sqrt(r19819, r19818, MPFR_RNDN);
        mpfr_mul(r19820, r19788, r19819, MPFR_RNDN);
        mpfr_add(r19821, r19785, r19785, MPFR_RNDN);
        mpfr_mul(r19822, r19789, r19821, MPFR_RNDN);
        mpfr_sqrt(r19823, r19822, MPFR_RNDN);
        mpfr_mul(r19824, r19788, r19823, MPFR_RNDN);
        if (mpfr_get_si(r19813, MPFR_RNDN)) { mpfr_set(r19825, r19820, MPFR_RNDN); } else { mpfr_set(r19825, r19824, MPFR_RNDN); };
        if (mpfr_get_si(r19800, MPFR_RNDN)) { mpfr_set(r19826, r19811, MPFR_RNDN); } else { mpfr_set(r19826, r19825, MPFR_RNDN); };
        if (mpfr_get_si(r19787, MPFR_RNDN)) { mpfr_set(r19827, r19798, MPFR_RNDN); } else { mpfr_set(r19827, r19826, MPFR_RNDN); };
        return mpfr_get_d(r19827, MPFR_RNDN);
}

static mpfr_t 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, r19855, r19856, r19857, r19858, r19859, r19860, r19861, r19862, r19863, r19864, r19865, r19866, r19867, r19868, r19869, r19870;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19828);
        mpfr_init_set_str(r19829, "-1.0070763208517064e+21", 10, MPFR_RNDN);
        mpfr_init(r19830);
        mpfr_init_set_str(r19831, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19832, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19833);
        mpfr_init(r19834);
        mpfr_init(r19835);
        mpfr_init(r19836);
        mpfr_init_set_str(r19837, "-2", 10, MPFR_RNDN);
        mpfr_init(r19838);
        mpfr_init(r19839);
        mpfr_init(r19840);
        mpfr_init(r19841);
        mpfr_init_set_str(r19842, "-3.953336011394025e-70", 10, MPFR_RNDN);
        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);
        mpfr_init_set_str(r19855, "3.751610550051807e+91", 10, MPFR_RNDN);
        mpfr_init(r19856);
        mpfr_init(r19857);
        mpfr_init(r19858);
        mpfr_init(r19859);
        mpfr_init(r19860);
        mpfr_init(r19861);
        mpfr_init(r19862);
        mpfr_init(r19863);
        mpfr_init(r19864);
        mpfr_init(r19865);
        mpfr_init(r19866);
        mpfr_init(r19867);
        mpfr_init(r19868);
        mpfr_init(r19869);
        mpfr_init(r19870);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19828, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19830, mpfr_cmp(r19828, r19829) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19833, im, MPFR_RNDN);
        mpfr_mul(r19834, r19832, r19833, MPFR_RNDN);
        mpfr_mul(r19835, r19834, r19833, MPFR_RNDN);
        mpfr_sqrt(r19836, r19835, MPFR_RNDN);
        ;
        mpfr_mul(r19838, r19837, r19828, MPFR_RNDN);
        mpfr_sqrt(r19839, r19838, MPFR_RNDN);
        mpfr_div(r19840, r19836, r19839, MPFR_RNDN);
        mpfr_mul(r19841, r19831, r19840, MPFR_RNDN);
        ;
        mpfr_set_si(r19843, mpfr_cmp(r19828, r19842) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19844, r19834, MPFR_RNDN);
        mpfr_sqrt(r19845, r19833, MPFR_RNDN);
        mpfr_mul(r19846, r19844, r19845, MPFR_RNDN);
        mpfr_sqr(r19847, r19828, MPFR_RNDN);
        mpfr_mul(r19848, r19833, r19833, MPFR_RNDN);
        mpfr_add(r19849, r19847, r19848, MPFR_RNDN);
        mpfr_sqrt(r19850, r19849, MPFR_RNDN);
        mpfr_sub(r19851, r19850, r19828, MPFR_RNDN);
        mpfr_sqrt(r19852, r19851, MPFR_RNDN);
        mpfr_div(r19853, r19846, r19852, MPFR_RNDN);
        mpfr_mul(r19854, r19831, r19853, MPFR_RNDN);
        ;
        mpfr_set_si(r19856, mpfr_cmp(r19828, r19855) <= 0, MPFR_RNDN);
        mpfr_mul(r19857, r19828, r19828, MPFR_RNDN);
        mpfr_add(r19858, r19857, r19848, MPFR_RNDN);
        mpfr_sqrt(r19859, r19858, MPFR_RNDN);
        mpfr_add(r19860, r19859, r19828, MPFR_RNDN);
        mpfr_mul(r19861, r19832, r19860, MPFR_RNDN);
        mpfr_sqrt(r19862, r19861, MPFR_RNDN);
        mpfr_mul(r19863, r19831, r19862, MPFR_RNDN);
        mpfr_add(r19864, r19828, r19828, MPFR_RNDN);
        mpfr_mul(r19865, r19832, r19864, MPFR_RNDN);
        mpfr_sqrt(r19866, r19865, MPFR_RNDN);
        mpfr_mul(r19867, r19831, r19866, MPFR_RNDN);
        if (mpfr_get_si(r19856, MPFR_RNDN)) { mpfr_set(r19868, r19863, MPFR_RNDN); } else { mpfr_set(r19868, r19867, MPFR_RNDN); };
        if (mpfr_get_si(r19843, MPFR_RNDN)) { mpfr_set(r19869, r19854, MPFR_RNDN); } else { mpfr_set(r19869, r19868, MPFR_RNDN); };
        if (mpfr_get_si(r19830, MPFR_RNDN)) { mpfr_set(r19870, r19841, MPFR_RNDN); } else { mpfr_set(r19870, r19869, MPFR_RNDN); };
        return mpfr_get_d(r19870, MPFR_RNDN);
}

