#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 r19699 = 0.5f;
        float r19700 = 2.0f;
        float r19701 = re;
        float r19702 = r19701 * r19701;
        float r19703 = im;
        float r19704 = r19703 * r19703;
        float r19705 = r19702 + r19704;
        float r19706 = sqrt(r19705);
        float r19707 = r19706 + r19701;
        float r19708 = r19700 * r19707;
        float r19709 = sqrt(r19708);
        float r19710 = r19699 * r19709;
        return r19710;
}

double f_id(double re, double im) {
        double r19711 = 0.5;
        double r19712 = 2.0;
        double r19713 = re;
        double r19714 = r19713 * r19713;
        double r19715 = im;
        double r19716 = r19715 * r19715;
        double r19717 = r19714 + r19716;
        double r19718 = sqrt(r19717);
        double r19719 = r19718 + r19713;
        double r19720 = r19712 * r19719;
        double r19721 = sqrt(r19720);
        double r19722 = r19711 * r19721;
        return r19722;
}


double f_of(float re, float im) {
        float r19723 = re;
        float r19724 = -1.3409558719239694e+109f;
        bool r19725 = r19723 <= r19724;
        float r19726 = 0.5f;
        float r19727 = im;
        float r19728 = r19727 * r19727;
        float r19729 = 2.0f;
        float r19730 = r19728 * r19729;
        float r19731 = sqrt(r19730);
        float r19732 = r19726 * r19731;
        float r19733 = -r19723;
        float r19734 = r19733 - r19723;
        float r19735 = sqrt(r19734);
        float r19736 = r19732 / r19735;
        float r19737 = -2.4943351747820776e-278f;
        bool r19738 = r19723 <= r19737;
        float r19739 = r19729 * r19727;
        float r19740 = r19739 * r19727;
        float r19741 = sqrt(r19740);
        float r19742 = r19723 * r19723;
        float r19743 = r19742 + r19728;
        float r19744 = sqrt(r19743);
        float r19745 = r19744 - r19723;
        float r19746 = sqrt(r19745);
        float r19747 = r19741 / r19746;
        float r19748 = r19726 * r19747;
        float r19749 = 4.3827392081136433e+102f;
        bool r19750 = r19723 <= r19749;
        float r19751 = r19723 * r19723;
        float r19752 = r19751 + r19728;
        float r19753 = sqrt(r19752);
        float r19754 = r19753 + r19723;
        float r19755 = r19729 * r19754;
        float r19756 = sqrt(r19755);
        float r19757 = r19726 * r19756;
        float r19758 = r19723 + r19723;
        float r19759 = r19729 * r19758;
        float r19760 = sqrt(r19759);
        float r19761 = r19726 * r19760;
        float r19762 = r19750 ? r19757 : r19761;
        float r19763 = r19738 ? r19748 : r19762;
        float r19764 = r19725 ? r19736 : r19763;
        return r19764;
}

double f_od(double re, double im) {
        double r19765 = re;
        double r19766 = -1.3409558719239694e+109;
        bool r19767 = r19765 <= r19766;
        double r19768 = 0.5;
        double r19769 = im;
        double r19770 = r19769 * r19769;
        double r19771 = 2.0;
        double r19772 = r19770 * r19771;
        double r19773 = sqrt(r19772);
        double r19774 = r19768 * r19773;
        double r19775 = -r19765;
        double r19776 = r19775 - r19765;
        double r19777 = sqrt(r19776);
        double r19778 = r19774 / r19777;
        double r19779 = -2.4943351747820776e-278;
        bool r19780 = r19765 <= r19779;
        double r19781 = r19771 * r19769;
        double r19782 = r19781 * r19769;
        double r19783 = sqrt(r19782);
        double r19784 = r19765 * r19765;
        double r19785 = r19784 + r19770;
        double r19786 = sqrt(r19785);
        double r19787 = r19786 - r19765;
        double r19788 = sqrt(r19787);
        double r19789 = r19783 / r19788;
        double r19790 = r19768 * r19789;
        double r19791 = 4.3827392081136433e+102;
        bool r19792 = r19765 <= r19791;
        double r19793 = r19765 * r19765;
        double r19794 = r19793 + r19770;
        double r19795 = sqrt(r19794);
        double r19796 = r19795 + r19765;
        double r19797 = r19771 * r19796;
        double r19798 = sqrt(r19797);
        double r19799 = r19768 * r19798;
        double r19800 = r19765 + r19765;
        double r19801 = r19771 * r19800;
        double r19802 = sqrt(r19801);
        double r19803 = r19768 * r19802;
        double r19804 = r19792 ? r19799 : r19803;
        double r19805 = r19780 ? r19790 : r19804;
        double r19806 = r19767 ? r19778 : r19805;
        return r19806;
}

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 r19807, r19808, r19809, r19810, r19811, r19812, r19813, r19814, r19815, r19816, r19817, r19818;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19807, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19808, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19809);
        mpfr_init(r19810);
        mpfr_init(r19811);
        mpfr_init(r19812);
        mpfr_init(r19813);
        mpfr_init(r19814);
        mpfr_init(r19815);
        mpfr_init(r19816);
        mpfr_init(r19817);
        mpfr_init(r19818);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19809, re, MPFR_RNDN);
        mpfr_mul(r19810, r19809, r19809, MPFR_RNDN);
        mpfr_set_d(r19811, im, MPFR_RNDN);
        mpfr_mul(r19812, r19811, r19811, MPFR_RNDN);
        mpfr_add(r19813, r19810, r19812, MPFR_RNDN);
        mpfr_sqrt(r19814, r19813, MPFR_RNDN);
        mpfr_add(r19815, r19814, r19809, MPFR_RNDN);
        mpfr_mul(r19816, r19808, r19815, MPFR_RNDN);
        mpfr_sqrt(r19817, r19816, MPFR_RNDN);
        mpfr_mul(r19818, r19807, r19817, MPFR_RNDN);
        return mpfr_get_d(r19818, MPFR_RNDN);
}

static mpfr_t 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, r19855, r19856, r19857, r19858, r19859, r19860;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19819);
        mpfr_init_set_str(r19820, "-1.3409558719239694e+109", 10, MPFR_RNDN);
        mpfr_init(r19821);
        mpfr_init_set_str(r19822, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19823);
        mpfr_init(r19824);
        mpfr_init_set_str(r19825, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19826);
        mpfr_init(r19827);
        mpfr_init(r19828);
        mpfr_init(r19829);
        mpfr_init(r19830);
        mpfr_init(r19831);
        mpfr_init(r19832);
        mpfr_init_set_str(r19833, "-2.4943351747820776e-278", 10, MPFR_RNDN);
        mpfr_init(r19834);
        mpfr_init(r19835);
        mpfr_init(r19836);
        mpfr_init(r19837);
        mpfr_init(r19838);
        mpfr_init(r19839);
        mpfr_init(r19840);
        mpfr_init(r19841);
        mpfr_init(r19842);
        mpfr_init(r19843);
        mpfr_init(r19844);
        mpfr_init_set_str(r19845, "4.3827392081136433e+102", 10, MPFR_RNDN);
        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(r19855);
        mpfr_init(r19856);
        mpfr_init(r19857);
        mpfr_init(r19858);
        mpfr_init(r19859);
        mpfr_init(r19860);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19819, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19821, mpfr_cmp(r19819, r19820) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19823, im, MPFR_RNDN);
        mpfr_mul(r19824, r19823, r19823, MPFR_RNDN);
        ;
        mpfr_mul(r19826, r19824, r19825, MPFR_RNDN);
        mpfr_sqrt(r19827, r19826, MPFR_RNDN);
        mpfr_mul(r19828, r19822, r19827, MPFR_RNDN);
        mpfr_neg(r19829, r19819, MPFR_RNDN);
        mpfr_sub(r19830, r19829, r19819, MPFR_RNDN);
        mpfr_sqrt(r19831, r19830, MPFR_RNDN);
        mpfr_div(r19832, r19828, r19831, MPFR_RNDN);
        ;
        mpfr_set_si(r19834, mpfr_cmp(r19819, r19833) <= 0, MPFR_RNDN);
        mpfr_mul(r19835, r19825, r19823, MPFR_RNDN);
        mpfr_mul(r19836, r19835, r19823, MPFR_RNDN);
        mpfr_sqrt(r19837, r19836, MPFR_RNDN);
        mpfr_sqr(r19838, r19819, MPFR_RNDN);
        mpfr_add(r19839, r19838, r19824, MPFR_RNDN);
        mpfr_sqrt(r19840, r19839, MPFR_RNDN);
        mpfr_sub(r19841, r19840, r19819, MPFR_RNDN);
        mpfr_sqrt(r19842, r19841, MPFR_RNDN);
        mpfr_div(r19843, r19837, r19842, MPFR_RNDN);
        mpfr_mul(r19844, r19822, r19843, MPFR_RNDN);
        ;
        mpfr_set_si(r19846, mpfr_cmp(r19819, r19845) <= 0, MPFR_RNDN);
        mpfr_mul(r19847, r19819, r19819, MPFR_RNDN);
        mpfr_add(r19848, r19847, r19824, MPFR_RNDN);
        mpfr_sqrt(r19849, r19848, MPFR_RNDN);
        mpfr_add(r19850, r19849, r19819, MPFR_RNDN);
        mpfr_mul(r19851, r19825, r19850, MPFR_RNDN);
        mpfr_sqrt(r19852, r19851, MPFR_RNDN);
        mpfr_mul(r19853, r19822, r19852, MPFR_RNDN);
        mpfr_add(r19854, r19819, r19819, MPFR_RNDN);
        mpfr_mul(r19855, r19825, r19854, MPFR_RNDN);
        mpfr_sqrt(r19856, r19855, MPFR_RNDN);
        mpfr_mul(r19857, r19822, r19856, MPFR_RNDN);
        if (mpfr_get_si(r19846, MPFR_RNDN)) { mpfr_set(r19858, r19853, MPFR_RNDN); } else { mpfr_set(r19858, r19857, MPFR_RNDN); };
        if (mpfr_get_si(r19834, MPFR_RNDN)) { mpfr_set(r19859, r19844, MPFR_RNDN); } else { mpfr_set(r19859, r19858, MPFR_RNDN); };
        if (mpfr_get_si(r19821, MPFR_RNDN)) { mpfr_set(r19860, r19832, MPFR_RNDN); } else { mpfr_set(r19860, r19859, MPFR_RNDN); };
        return mpfr_get_d(r19860, MPFR_RNDN);
}

static mpfr_t r19861, r19862, r19863, r19864, r19865, r19866, r19867, r19868, r19869, r19870, r19871, r19872, r19873, r19874, r19875, r19876, r19877, r19878, r19879, r19880, r19881, r19882, r19883, r19884, r19885, r19886, r19887, r19888, r19889, r19890, r19891, r19892, r19893, r19894, r19895, r19896, r19897, r19898, r19899, r19900, r19901, r19902;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19861);
        mpfr_init_set_str(r19862, "-1.3409558719239694e+109", 10, MPFR_RNDN);
        mpfr_init(r19863);
        mpfr_init_set_str(r19864, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19865);
        mpfr_init(r19866);
        mpfr_init_set_str(r19867, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19868);
        mpfr_init(r19869);
        mpfr_init(r19870);
        mpfr_init(r19871);
        mpfr_init(r19872);
        mpfr_init(r19873);
        mpfr_init(r19874);
        mpfr_init_set_str(r19875, "-2.4943351747820776e-278", 10, MPFR_RNDN);
        mpfr_init(r19876);
        mpfr_init(r19877);
        mpfr_init(r19878);
        mpfr_init(r19879);
        mpfr_init(r19880);
        mpfr_init(r19881);
        mpfr_init(r19882);
        mpfr_init(r19883);
        mpfr_init(r19884);
        mpfr_init(r19885);
        mpfr_init(r19886);
        mpfr_init_set_str(r19887, "4.3827392081136433e+102", 10, MPFR_RNDN);
        mpfr_init(r19888);
        mpfr_init(r19889);
        mpfr_init(r19890);
        mpfr_init(r19891);
        mpfr_init(r19892);
        mpfr_init(r19893);
        mpfr_init(r19894);
        mpfr_init(r19895);
        mpfr_init(r19896);
        mpfr_init(r19897);
        mpfr_init(r19898);
        mpfr_init(r19899);
        mpfr_init(r19900);
        mpfr_init(r19901);
        mpfr_init(r19902);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19861, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19863, mpfr_cmp(r19861, r19862) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19865, im, MPFR_RNDN);
        mpfr_mul(r19866, r19865, r19865, MPFR_RNDN);
        ;
        mpfr_mul(r19868, r19866, r19867, MPFR_RNDN);
        mpfr_sqrt(r19869, r19868, MPFR_RNDN);
        mpfr_mul(r19870, r19864, r19869, MPFR_RNDN);
        mpfr_neg(r19871, r19861, MPFR_RNDN);
        mpfr_sub(r19872, r19871, r19861, MPFR_RNDN);
        mpfr_sqrt(r19873, r19872, MPFR_RNDN);
        mpfr_div(r19874, r19870, r19873, MPFR_RNDN);
        ;
        mpfr_set_si(r19876, mpfr_cmp(r19861, r19875) <= 0, MPFR_RNDN);
        mpfr_mul(r19877, r19867, r19865, MPFR_RNDN);
        mpfr_mul(r19878, r19877, r19865, MPFR_RNDN);
        mpfr_sqrt(r19879, r19878, MPFR_RNDN);
        mpfr_sqr(r19880, r19861, MPFR_RNDN);
        mpfr_add(r19881, r19880, r19866, MPFR_RNDN);
        mpfr_sqrt(r19882, r19881, MPFR_RNDN);
        mpfr_sub(r19883, r19882, r19861, MPFR_RNDN);
        mpfr_sqrt(r19884, r19883, MPFR_RNDN);
        mpfr_div(r19885, r19879, r19884, MPFR_RNDN);
        mpfr_mul(r19886, r19864, r19885, MPFR_RNDN);
        ;
        mpfr_set_si(r19888, mpfr_cmp(r19861, r19887) <= 0, MPFR_RNDN);
        mpfr_mul(r19889, r19861, r19861, MPFR_RNDN);
        mpfr_add(r19890, r19889, r19866, MPFR_RNDN);
        mpfr_sqrt(r19891, r19890, MPFR_RNDN);
        mpfr_add(r19892, r19891, r19861, MPFR_RNDN);
        mpfr_mul(r19893, r19867, r19892, MPFR_RNDN);
        mpfr_sqrt(r19894, r19893, MPFR_RNDN);
        mpfr_mul(r19895, r19864, r19894, MPFR_RNDN);
        mpfr_add(r19896, r19861, r19861, MPFR_RNDN);
        mpfr_mul(r19897, r19867, r19896, MPFR_RNDN);
        mpfr_sqrt(r19898, r19897, MPFR_RNDN);
        mpfr_mul(r19899, r19864, r19898, MPFR_RNDN);
        if (mpfr_get_si(r19888, MPFR_RNDN)) { mpfr_set(r19900, r19895, MPFR_RNDN); } else { mpfr_set(r19900, r19899, MPFR_RNDN); };
        if (mpfr_get_si(r19876, MPFR_RNDN)) { mpfr_set(r19901, r19886, MPFR_RNDN); } else { mpfr_set(r19901, r19900, MPFR_RNDN); };
        if (mpfr_get_si(r19863, MPFR_RNDN)) { mpfr_set(r19902, r19874, MPFR_RNDN); } else { mpfr_set(r19902, r19901, MPFR_RNDN); };
        return mpfr_get_d(r19902, MPFR_RNDN);
}

