#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 r19711 = 0.5f;
        float r19712 = 2.0f;
        float r19713 = re;
        float r19714 = r19713 * r19713;
        float r19715 = im;
        float r19716 = r19715 * r19715;
        float r19717 = r19714 + r19716;
        float r19718 = sqrt(r19717);
        float r19719 = r19718 + r19713;
        float r19720 = r19712 * r19719;
        float r19721 = sqrt(r19720);
        float r19722 = r19711 * r19721;
        return r19722;
}

double f_id(double re, double im) {
        double r19723 = 0.5;
        double r19724 = 2.0;
        double r19725 = re;
        double r19726 = r19725 * r19725;
        double r19727 = im;
        double r19728 = r19727 * r19727;
        double r19729 = r19726 + r19728;
        double r19730 = sqrt(r19729);
        double r19731 = r19730 + r19725;
        double r19732 = r19724 * r19731;
        double r19733 = sqrt(r19732);
        double r19734 = r19723 * r19733;
        return r19734;
}


double f_of(float re, float im) {
        float r19735 = re;
        float r19736 = -2.7522388519686937e+80f;
        bool r19737 = r19735 <= r19736;
        float r19738 = 0.5f;
        float r19739 = im;
        float r19740 = r19739 * r19739;
        float r19741 = 2.0f;
        float r19742 = r19740 * r19741;
        float r19743 = sqrt(r19742);
        float r19744 = r19738 * r19743;
        float r19745 = -r19735;
        float r19746 = r19745 - r19735;
        float r19747 = sqrt(r19746);
        float r19748 = r19744 / r19747;
        float r19749 = -8.68041930647669e-252f;
        bool r19750 = r19735 <= r19749;
        float r19751 = r19735 * r19735;
        float r19752 = r19751 + r19740;
        float r19753 = sqrt(r19752);
        float r19754 = r19753 - r19735;
        float r19755 = r19740 / r19754;
        float r19756 = r19741 * r19755;
        float r19757 = sqrt(r19756);
        float r19758 = r19738 * r19757;
        float r19759 = 1.9727183986347288e-223f;
        bool r19760 = r19735 <= r19759;
        float r19761 = r19739 + r19735;
        float r19762 = r19741 * r19761;
        float r19763 = sqrt(r19762);
        float r19764 = r19738 * r19763;
        float r19765 = 7.79868197508907e+130f;
        bool r19766 = r19735 <= r19765;
        float r19767 = sqrt(r19753);
        float r19768 = r19767 * r19767;
        float r19769 = r19768 + r19735;
        float r19770 = r19741 * r19769;
        float r19771 = sqrt(r19770);
        float r19772 = r19738 * r19771;
        float r19773 = 2.0f;
        float r19774 = r19773 * r19735;
        float r19775 = 0.5f;
        float r19776 = r19739 * r19775;
        float r19777 = r19735 / r19739;
        float r19778 = r19776 / r19777;
        float r19779 = r19774 + r19778;
        float r19780 = r19779 * r19741;
        float r19781 = sqrt(r19780);
        float r19782 = r19738 * r19781;
        float r19783 = r19766 ? r19772 : r19782;
        float r19784 = r19760 ? r19764 : r19783;
        float r19785 = r19750 ? r19758 : r19784;
        float r19786 = r19737 ? r19748 : r19785;
        return r19786;
}

double f_od(double re, double im) {
        double r19787 = re;
        double r19788 = -2.7522388519686937e+80;
        bool r19789 = r19787 <= r19788;
        double r19790 = 0.5;
        double r19791 = im;
        double r19792 = r19791 * r19791;
        double r19793 = 2.0;
        double r19794 = r19792 * r19793;
        double r19795 = sqrt(r19794);
        double r19796 = r19790 * r19795;
        double r19797 = -r19787;
        double r19798 = r19797 - r19787;
        double r19799 = sqrt(r19798);
        double r19800 = r19796 / r19799;
        double r19801 = -8.68041930647669e-252;
        bool r19802 = r19787 <= r19801;
        double r19803 = r19787 * r19787;
        double r19804 = r19803 + r19792;
        double r19805 = sqrt(r19804);
        double r19806 = r19805 - r19787;
        double r19807 = r19792 / r19806;
        double r19808 = r19793 * r19807;
        double r19809 = sqrt(r19808);
        double r19810 = r19790 * r19809;
        double r19811 = 1.9727183986347288e-223;
        bool r19812 = r19787 <= r19811;
        double r19813 = r19791 + r19787;
        double r19814 = r19793 * r19813;
        double r19815 = sqrt(r19814);
        double r19816 = r19790 * r19815;
        double r19817 = 7.79868197508907e+130;
        bool r19818 = r19787 <= r19817;
        double r19819 = sqrt(r19805);
        double r19820 = r19819 * r19819;
        double r19821 = r19820 + r19787;
        double r19822 = r19793 * r19821;
        double r19823 = sqrt(r19822);
        double r19824 = r19790 * r19823;
        double r19825 = 2.0;
        double r19826 = r19825 * r19787;
        double r19827 = 0.5;
        double r19828 = r19791 * r19827;
        double r19829 = r19787 / r19791;
        double r19830 = r19828 / r19829;
        double r19831 = r19826 + r19830;
        double r19832 = r19831 * r19793;
        double r19833 = sqrt(r19832);
        double r19834 = r19790 * r19833;
        double r19835 = r19818 ? r19824 : r19834;
        double r19836 = r19812 ? r19816 : r19835;
        double r19837 = r19802 ? r19810 : r19836;
        double r19838 = r19789 ? r19800 : r19837;
        return r19838;
}

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 r19839, r19840, r19841, r19842, r19843, r19844, r19845, r19846, r19847, r19848, r19849, r19850;

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

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19841, re, MPFR_RNDN);
        mpfr_mul(r19842, r19841, r19841, MPFR_RNDN);
        mpfr_set_d(r19843, im, MPFR_RNDN);
        mpfr_mul(r19844, r19843, r19843, MPFR_RNDN);
        mpfr_add(r19845, r19842, r19844, MPFR_RNDN);
        mpfr_sqrt(r19846, r19845, MPFR_RNDN);
        mpfr_add(r19847, r19846, r19841, MPFR_RNDN);
        mpfr_mul(r19848, r19840, r19847, MPFR_RNDN);
        mpfr_sqrt(r19849, r19848, MPFR_RNDN);
        mpfr_mul(r19850, r19839, r19849, MPFR_RNDN);
        return mpfr_get_d(r19850, MPFR_RNDN);
}

static mpfr_t r19851, r19852, r19853, r19854, r19855, r19856, r19857, r19858, r19859, r19860, 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_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19851);
        mpfr_init_set_str(r19852, "-2.7522388519686937e+80", 10, MPFR_RNDN);
        mpfr_init(r19853);
        mpfr_init_set_str(r19854, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19855);
        mpfr_init(r19856);
        mpfr_init_set_str(r19857, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19858);
        mpfr_init(r19859);
        mpfr_init(r19860);
        mpfr_init(r19861);
        mpfr_init(r19862);
        mpfr_init(r19863);
        mpfr_init(r19864);
        mpfr_init_set_str(r19865, "-8.68041930647669e-252", 10, MPFR_RNDN);
        mpfr_init(r19866);
        mpfr_init(r19867);
        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, "1.9727183986347288e-223", 10, MPFR_RNDN);
        mpfr_init(r19876);
        mpfr_init(r19877);
        mpfr_init(r19878);
        mpfr_init(r19879);
        mpfr_init(r19880);
        mpfr_init_set_str(r19881, "7.79868197508907e+130", 10, MPFR_RNDN);
        mpfr_init(r19882);
        mpfr_init(r19883);
        mpfr_init(r19884);
        mpfr_init(r19885);
        mpfr_init(r19886);
        mpfr_init(r19887);
        mpfr_init(r19888);
        mpfr_init_set_str(r19889, "2", 10, MPFR_RNDN);
        mpfr_init(r19890);
        mpfr_init_set_str(r19891, "1/2", 10, MPFR_RNDN);
        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_fm(double re, double im) {
        mpfr_set_d(r19851, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19853, mpfr_cmp(r19851, r19852) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19855, im, MPFR_RNDN);
        mpfr_mul(r19856, r19855, r19855, MPFR_RNDN);
        ;
        mpfr_mul(r19858, r19856, r19857, MPFR_RNDN);
        mpfr_sqrt(r19859, r19858, MPFR_RNDN);
        mpfr_mul(r19860, r19854, r19859, MPFR_RNDN);
        mpfr_neg(r19861, r19851, MPFR_RNDN);
        mpfr_sub(r19862, r19861, r19851, MPFR_RNDN);
        mpfr_sqrt(r19863, r19862, MPFR_RNDN);
        mpfr_div(r19864, r19860, r19863, MPFR_RNDN);
        ;
        mpfr_set_si(r19866, mpfr_cmp(r19851, r19865) <= 0, MPFR_RNDN);
        mpfr_sqr(r19867, r19851, MPFR_RNDN);
        mpfr_add(r19868, r19867, r19856, MPFR_RNDN);
        mpfr_sqrt(r19869, r19868, MPFR_RNDN);
        mpfr_sub(r19870, r19869, r19851, MPFR_RNDN);
        mpfr_div(r19871, r19856, r19870, MPFR_RNDN);
        mpfr_mul(r19872, r19857, r19871, MPFR_RNDN);
        mpfr_sqrt(r19873, r19872, MPFR_RNDN);
        mpfr_mul(r19874, r19854, r19873, MPFR_RNDN);
        ;
        mpfr_set_si(r19876, mpfr_cmp(r19851, r19875) <= 0, MPFR_RNDN);
        mpfr_add(r19877, r19855, r19851, MPFR_RNDN);
        mpfr_mul(r19878, r19857, r19877, MPFR_RNDN);
        mpfr_sqrt(r19879, r19878, MPFR_RNDN);
        mpfr_mul(r19880, r19854, r19879, MPFR_RNDN);
        ;
        mpfr_set_si(r19882, mpfr_cmp(r19851, r19881) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19883, r19869, MPFR_RNDN);
        mpfr_sqr(r19884, r19883, MPFR_RNDN);
        mpfr_add(r19885, r19884, r19851, MPFR_RNDN);
        mpfr_mul(r19886, r19857, r19885, MPFR_RNDN);
        mpfr_sqrt(r19887, r19886, MPFR_RNDN);
        mpfr_mul(r19888, r19854, r19887, MPFR_RNDN);
        ;
        mpfr_mul(r19890, r19889, r19851, MPFR_RNDN);
        ;
        mpfr_mul(r19892, r19855, r19891, MPFR_RNDN);
        mpfr_div(r19893, r19851, r19855, MPFR_RNDN);
        mpfr_div(r19894, r19892, r19893, MPFR_RNDN);
        mpfr_add(r19895, r19890, r19894, MPFR_RNDN);
        mpfr_mul(r19896, r19895, r19857, MPFR_RNDN);
        mpfr_sqrt(r19897, r19896, MPFR_RNDN);
        mpfr_mul(r19898, r19854, r19897, MPFR_RNDN);
        if (mpfr_get_si(r19882, MPFR_RNDN)) { mpfr_set(r19899, r19888, MPFR_RNDN); } else { mpfr_set(r19899, r19898, MPFR_RNDN); };
        if (mpfr_get_si(r19876, MPFR_RNDN)) { mpfr_set(r19900, r19880, MPFR_RNDN); } else { mpfr_set(r19900, r19899, MPFR_RNDN); };
        if (mpfr_get_si(r19866, MPFR_RNDN)) { mpfr_set(r19901, r19874, MPFR_RNDN); } else { mpfr_set(r19901, r19900, MPFR_RNDN); };
        if (mpfr_get_si(r19853, MPFR_RNDN)) { mpfr_set(r19902, r19864, MPFR_RNDN); } else { mpfr_set(r19902, r19901, MPFR_RNDN); };
        return mpfr_get_d(r19902, MPFR_RNDN);
}

static mpfr_t r19903, r19904, r19905, r19906, r19907, r19908, r19909, r19910, r19911, r19912, r19913, r19914, r19915, r19916, r19917, r19918, r19919, r19920, r19921, r19922, r19923, r19924, r19925, r19926, r19927, r19928, r19929, r19930, r19931, r19932, r19933, r19934, r19935, r19936, r19937, r19938, r19939, r19940, r19941, r19942, r19943, r19944, r19945, r19946, r19947, r19948, r19949, r19950, r19951, r19952, r19953, r19954;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19903);
        mpfr_init_set_str(r19904, "-2.7522388519686937e+80", 10, MPFR_RNDN);
        mpfr_init(r19905);
        mpfr_init_set_str(r19906, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19907);
        mpfr_init(r19908);
        mpfr_init_set_str(r19909, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19910);
        mpfr_init(r19911);
        mpfr_init(r19912);
        mpfr_init(r19913);
        mpfr_init(r19914);
        mpfr_init(r19915);
        mpfr_init(r19916);
        mpfr_init_set_str(r19917, "-8.68041930647669e-252", 10, MPFR_RNDN);
        mpfr_init(r19918);
        mpfr_init(r19919);
        mpfr_init(r19920);
        mpfr_init(r19921);
        mpfr_init(r19922);
        mpfr_init(r19923);
        mpfr_init(r19924);
        mpfr_init(r19925);
        mpfr_init(r19926);
        mpfr_init_set_str(r19927, "1.9727183986347288e-223", 10, MPFR_RNDN);
        mpfr_init(r19928);
        mpfr_init(r19929);
        mpfr_init(r19930);
        mpfr_init(r19931);
        mpfr_init(r19932);
        mpfr_init_set_str(r19933, "7.79868197508907e+130", 10, MPFR_RNDN);
        mpfr_init(r19934);
        mpfr_init(r19935);
        mpfr_init(r19936);
        mpfr_init(r19937);
        mpfr_init(r19938);
        mpfr_init(r19939);
        mpfr_init(r19940);
        mpfr_init_set_str(r19941, "2", 10, MPFR_RNDN);
        mpfr_init(r19942);
        mpfr_init_set_str(r19943, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19944);
        mpfr_init(r19945);
        mpfr_init(r19946);
        mpfr_init(r19947);
        mpfr_init(r19948);
        mpfr_init(r19949);
        mpfr_init(r19950);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init(r19953);
        mpfr_init(r19954);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19903, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19905, mpfr_cmp(r19903, r19904) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19907, im, MPFR_RNDN);
        mpfr_mul(r19908, r19907, r19907, MPFR_RNDN);
        ;
        mpfr_mul(r19910, r19908, r19909, MPFR_RNDN);
        mpfr_sqrt(r19911, r19910, MPFR_RNDN);
        mpfr_mul(r19912, r19906, r19911, MPFR_RNDN);
        mpfr_neg(r19913, r19903, MPFR_RNDN);
        mpfr_sub(r19914, r19913, r19903, MPFR_RNDN);
        mpfr_sqrt(r19915, r19914, MPFR_RNDN);
        mpfr_div(r19916, r19912, r19915, MPFR_RNDN);
        ;
        mpfr_set_si(r19918, mpfr_cmp(r19903, r19917) <= 0, MPFR_RNDN);
        mpfr_sqr(r19919, r19903, MPFR_RNDN);
        mpfr_add(r19920, r19919, r19908, MPFR_RNDN);
        mpfr_sqrt(r19921, r19920, MPFR_RNDN);
        mpfr_sub(r19922, r19921, r19903, MPFR_RNDN);
        mpfr_div(r19923, r19908, r19922, MPFR_RNDN);
        mpfr_mul(r19924, r19909, r19923, MPFR_RNDN);
        mpfr_sqrt(r19925, r19924, MPFR_RNDN);
        mpfr_mul(r19926, r19906, r19925, MPFR_RNDN);
        ;
        mpfr_set_si(r19928, mpfr_cmp(r19903, r19927) <= 0, MPFR_RNDN);
        mpfr_add(r19929, r19907, r19903, MPFR_RNDN);
        mpfr_mul(r19930, r19909, r19929, MPFR_RNDN);
        mpfr_sqrt(r19931, r19930, MPFR_RNDN);
        mpfr_mul(r19932, r19906, r19931, MPFR_RNDN);
        ;
        mpfr_set_si(r19934, mpfr_cmp(r19903, r19933) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19935, r19921, MPFR_RNDN);
        mpfr_sqr(r19936, r19935, MPFR_RNDN);
        mpfr_add(r19937, r19936, r19903, MPFR_RNDN);
        mpfr_mul(r19938, r19909, r19937, MPFR_RNDN);
        mpfr_sqrt(r19939, r19938, MPFR_RNDN);
        mpfr_mul(r19940, r19906, r19939, MPFR_RNDN);
        ;
        mpfr_mul(r19942, r19941, r19903, MPFR_RNDN);
        ;
        mpfr_mul(r19944, r19907, r19943, MPFR_RNDN);
        mpfr_div(r19945, r19903, r19907, MPFR_RNDN);
        mpfr_div(r19946, r19944, r19945, MPFR_RNDN);
        mpfr_add(r19947, r19942, r19946, MPFR_RNDN);
        mpfr_mul(r19948, r19947, r19909, MPFR_RNDN);
        mpfr_sqrt(r19949, r19948, MPFR_RNDN);
        mpfr_mul(r19950, r19906, r19949, MPFR_RNDN);
        if (mpfr_get_si(r19934, MPFR_RNDN)) { mpfr_set(r19951, r19940, MPFR_RNDN); } else { mpfr_set(r19951, r19950, MPFR_RNDN); };
        if (mpfr_get_si(r19928, MPFR_RNDN)) { mpfr_set(r19952, r19932, MPFR_RNDN); } else { mpfr_set(r19952, r19951, MPFR_RNDN); };
        if (mpfr_get_si(r19918, MPFR_RNDN)) { mpfr_set(r19953, r19926, MPFR_RNDN); } else { mpfr_set(r19953, r19952, MPFR_RNDN); };
        if (mpfr_get_si(r19905, MPFR_RNDN)) { mpfr_set(r19954, r19916, MPFR_RNDN); } else { mpfr_set(r19954, r19953, MPFR_RNDN); };
        return mpfr_get_d(r19954, MPFR_RNDN);
}

