#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 r19815 = 0.5f;
        float r19816 = 2.0f;
        float r19817 = re;
        float r19818 = r19817 * r19817;
        float r19819 = im;
        float r19820 = r19819 * r19819;
        float r19821 = r19818 + r19820;
        float r19822 = sqrt(r19821);
        float r19823 = r19822 + r19817;
        float r19824 = r19816 * r19823;
        float r19825 = sqrt(r19824);
        float r19826 = r19815 * r19825;
        return r19826;
}

double f_id(double re, double im) {
        double r19827 = 0.5;
        double r19828 = 2.0;
        double r19829 = re;
        double r19830 = r19829 * r19829;
        double r19831 = im;
        double r19832 = r19831 * r19831;
        double r19833 = r19830 + r19832;
        double r19834 = sqrt(r19833);
        double r19835 = r19834 + r19829;
        double r19836 = r19828 * r19835;
        double r19837 = sqrt(r19836);
        double r19838 = r19827 * r19837;
        return r19838;
}


double f_of(float re, float im) {
        float r19839 = re;
        float r19840 = -6.483204993477654e+31f;
        bool r19841 = r19839 <= r19840;
        float r19842 = 0.5f;
        float r19843 = im;
        float r19844 = r19843 * r19843;
        float r19845 = 2.0f;
        float r19846 = r19844 * r19845;
        float r19847 = sqrt(r19846);
        float r19848 = r19842 * r19847;
        float r19849 = -r19839;
        float r19850 = r19849 - r19839;
        float r19851 = sqrt(r19850);
        float r19852 = r19848 / r19851;
        float r19853 = -8.828664881089621e-45f;
        bool r19854 = r19839 <= r19853;
        float r19855 = -r19842;
        float r19856 = sqrt(r19845);
        float r19857 = r19843 * r19856;
        float r19858 = r19855 * r19857;
        float r19859 = r19839 * r19839;
        float r19860 = r19844 + r19859;
        float r19861 = sqrt(r19860);
        float r19862 = r19861 - r19839;
        float r19863 = sqrt(r19862);
        float r19864 = r19858 / r19863;
        float r19865 = 4.185543182523104e-238f;
        bool r19866 = r19839 <= r19865;
        float r19867 = r19843 + r19839;
        float r19868 = r19845 * r19867;
        float r19869 = sqrt(r19868);
        float r19870 = r19842 * r19869;
        float r19871 = 1.0258373431142267e+152f;
        bool r19872 = r19839 <= r19871;
        float r19873 = r19839 * r19839;
        float r19874 = r19873 + r19844;
        float r19875 = sqrt(r19874);
        float r19876 = sqrt(r19875);
        float r19877 = r19876 * r19876;
        float r19878 = r19877 + r19839;
        float r19879 = r19845 * r19878;
        float r19880 = sqrt(r19879);
        float r19881 = r19842 * r19880;
        float r19882 = r19839 + r19839;
        float r19883 = r19845 * r19882;
        float r19884 = sqrt(r19883);
        float r19885 = r19842 * r19884;
        float r19886 = r19872 ? r19881 : r19885;
        float r19887 = r19866 ? r19870 : r19886;
        float r19888 = r19854 ? r19864 : r19887;
        float r19889 = r19841 ? r19852 : r19888;
        return r19889;
}

double f_od(double re, double im) {
        double r19890 = re;
        double r19891 = -6.483204993477654e+31;
        bool r19892 = r19890 <= r19891;
        double r19893 = 0.5;
        double r19894 = im;
        double r19895 = r19894 * r19894;
        double r19896 = 2.0;
        double r19897 = r19895 * r19896;
        double r19898 = sqrt(r19897);
        double r19899 = r19893 * r19898;
        double r19900 = -r19890;
        double r19901 = r19900 - r19890;
        double r19902 = sqrt(r19901);
        double r19903 = r19899 / r19902;
        double r19904 = -8.828664881089621e-45;
        bool r19905 = r19890 <= r19904;
        double r19906 = -r19893;
        double r19907 = sqrt(r19896);
        double r19908 = r19894 * r19907;
        double r19909 = r19906 * r19908;
        double r19910 = r19890 * r19890;
        double r19911 = r19895 + r19910;
        double r19912 = sqrt(r19911);
        double r19913 = r19912 - r19890;
        double r19914 = sqrt(r19913);
        double r19915 = r19909 / r19914;
        double r19916 = 4.185543182523104e-238;
        bool r19917 = r19890 <= r19916;
        double r19918 = r19894 + r19890;
        double r19919 = r19896 * r19918;
        double r19920 = sqrt(r19919);
        double r19921 = r19893 * r19920;
        double r19922 = 1.0258373431142267e+152;
        bool r19923 = r19890 <= r19922;
        double r19924 = r19890 * r19890;
        double r19925 = r19924 + r19895;
        double r19926 = sqrt(r19925);
        double r19927 = sqrt(r19926);
        double r19928 = r19927 * r19927;
        double r19929 = r19928 + r19890;
        double r19930 = r19896 * r19929;
        double r19931 = sqrt(r19930);
        double r19932 = r19893 * r19931;
        double r19933 = r19890 + r19890;
        double r19934 = r19896 * r19933;
        double r19935 = sqrt(r19934);
        double r19936 = r19893 * r19935;
        double r19937 = r19923 ? r19932 : r19936;
        double r19938 = r19917 ? r19921 : r19937;
        double r19939 = r19905 ? r19915 : r19938;
        double r19940 = r19892 ? r19903 : r19939;
        return r19940;
}

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 r19941, r19942, r19943, r19944, r19945, r19946, r19947, r19948, r19949, r19950, r19951, r19952;

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

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19943, re, MPFR_RNDN);
        mpfr_mul(r19944, r19943, r19943, MPFR_RNDN);
        mpfr_set_d(r19945, im, MPFR_RNDN);
        mpfr_mul(r19946, r19945, r19945, MPFR_RNDN);
        mpfr_add(r19947, r19944, r19946, MPFR_RNDN);
        mpfr_sqrt(r19948, r19947, MPFR_RNDN);
        mpfr_add(r19949, r19948, r19943, MPFR_RNDN);
        mpfr_mul(r19950, r19942, r19949, MPFR_RNDN);
        mpfr_sqrt(r19951, r19950, MPFR_RNDN);
        mpfr_mul(r19952, r19941, r19951, MPFR_RNDN);
        return mpfr_get_d(r19952, MPFR_RNDN);
}

static mpfr_t r19953, r19954, r19955, r19956, r19957, r19958, r19959, r19960, r19961, r19962, r19963, r19964, r19965, r19966, r19967, r19968, r19969, r19970, r19971, r19972, r19973, r19974, r19975, r19976, r19977, r19978, r19979, r19980, r19981, r19982, r19983, r19984, r19985, r19986, r19987, r19988, r19989, r19990, r19991, r19992, r19993, r19994, r19995, r19996, r19997, r19998, r19999, r20000, r20001, r20002, r20003;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19953);
        mpfr_init_set_str(r19954, "-6.483204993477654e+31", 10, MPFR_RNDN);
        mpfr_init(r19955);
        mpfr_init_set_str(r19956, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19957);
        mpfr_init(r19958);
        mpfr_init_set_str(r19959, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19960);
        mpfr_init(r19961);
        mpfr_init(r19962);
        mpfr_init(r19963);
        mpfr_init(r19964);
        mpfr_init(r19965);
        mpfr_init(r19966);
        mpfr_init_set_str(r19967, "-8.828664881089621e-45", 10, MPFR_RNDN);
        mpfr_init(r19968);
        mpfr_init(r19969);
        mpfr_init(r19970);
        mpfr_init(r19971);
        mpfr_init(r19972);
        mpfr_init(r19973);
        mpfr_init(r19974);
        mpfr_init(r19975);
        mpfr_init(r19976);
        mpfr_init(r19977);
        mpfr_init(r19978);
        mpfr_init_set_str(r19979, "4.185543182523104e-238", 10, MPFR_RNDN);
        mpfr_init(r19980);
        mpfr_init(r19981);
        mpfr_init(r19982);
        mpfr_init(r19983);
        mpfr_init(r19984);
        mpfr_init_set_str(r19985, "1.0258373431142267e+152", 10, MPFR_RNDN);
        mpfr_init(r19986);
        mpfr_init(r19987);
        mpfr_init(r19988);
        mpfr_init(r19989);
        mpfr_init(r19990);
        mpfr_init(r19991);
        mpfr_init(r19992);
        mpfr_init(r19993);
        mpfr_init(r19994);
        mpfr_init(r19995);
        mpfr_init(r19996);
        mpfr_init(r19997);
        mpfr_init(r19998);
        mpfr_init(r19999);
        mpfr_init(r20000);
        mpfr_init(r20001);
        mpfr_init(r20002);
        mpfr_init(r20003);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19953, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19955, mpfr_cmp(r19953, r19954) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19957, im, MPFR_RNDN);
        mpfr_mul(r19958, r19957, r19957, MPFR_RNDN);
        ;
        mpfr_mul(r19960, r19958, r19959, MPFR_RNDN);
        mpfr_sqrt(r19961, r19960, MPFR_RNDN);
        mpfr_mul(r19962, r19956, r19961, MPFR_RNDN);
        mpfr_neg(r19963, r19953, MPFR_RNDN);
        mpfr_sub(r19964, r19963, r19953, MPFR_RNDN);
        mpfr_sqrt(r19965, r19964, MPFR_RNDN);
        mpfr_div(r19966, r19962, r19965, MPFR_RNDN);
        ;
        mpfr_set_si(r19968, mpfr_cmp(r19953, r19967) <= 0, MPFR_RNDN);
        mpfr_neg(r19969, r19956, MPFR_RNDN);
        mpfr_sqrt(r19970, r19959, MPFR_RNDN);
        mpfr_mul(r19971, r19957, r19970, MPFR_RNDN);
        mpfr_mul(r19972, r19969, r19971, MPFR_RNDN);
        mpfr_mul(r19973, r19953, r19953, MPFR_RNDN);
        mpfr_add(r19974, r19958, r19973, MPFR_RNDN);
        mpfr_sqrt(r19975, r19974, MPFR_RNDN);
        mpfr_sub(r19976, r19975, r19953, MPFR_RNDN);
        mpfr_sqrt(r19977, r19976, MPFR_RNDN);
        mpfr_div(r19978, r19972, r19977, MPFR_RNDN);
        ;
        mpfr_set_si(r19980, mpfr_cmp(r19953, r19979) <= 0, MPFR_RNDN);
        mpfr_add(r19981, r19957, r19953, MPFR_RNDN);
        mpfr_mul(r19982, r19959, r19981, MPFR_RNDN);
        mpfr_sqrt(r19983, r19982, MPFR_RNDN);
        mpfr_mul(r19984, r19956, r19983, MPFR_RNDN);
        ;
        mpfr_set_si(r19986, mpfr_cmp(r19953, r19985) <= 0, MPFR_RNDN);
        mpfr_sqr(r19987, r19953, MPFR_RNDN);
        mpfr_add(r19988, r19987, r19958, MPFR_RNDN);
        mpfr_sqrt(r19989, r19988, MPFR_RNDN);
        mpfr_sqrt(r19990, r19989, MPFR_RNDN);
        mpfr_sqr(r19991, r19990, MPFR_RNDN);
        mpfr_add(r19992, r19991, r19953, MPFR_RNDN);
        mpfr_mul(r19993, r19959, r19992, MPFR_RNDN);
        mpfr_sqrt(r19994, r19993, MPFR_RNDN);
        mpfr_mul(r19995, r19956, r19994, MPFR_RNDN);
        mpfr_add(r19996, r19953, r19953, MPFR_RNDN);
        mpfr_mul(r19997, r19959, r19996, MPFR_RNDN);
        mpfr_sqrt(r19998, r19997, MPFR_RNDN);
        mpfr_mul(r19999, r19956, r19998, MPFR_RNDN);
        if (mpfr_get_si(r19986, MPFR_RNDN)) { mpfr_set(r20000, r19995, MPFR_RNDN); } else { mpfr_set(r20000, r19999, MPFR_RNDN); };
        if (mpfr_get_si(r19980, MPFR_RNDN)) { mpfr_set(r20001, r19984, MPFR_RNDN); } else { mpfr_set(r20001, r20000, MPFR_RNDN); };
        if (mpfr_get_si(r19968, MPFR_RNDN)) { mpfr_set(r20002, r19978, MPFR_RNDN); } else { mpfr_set(r20002, r20001, MPFR_RNDN); };
        if (mpfr_get_si(r19955, MPFR_RNDN)) { mpfr_set(r20003, r19966, MPFR_RNDN); } else { mpfr_set(r20003, r20002, MPFR_RNDN); };
        return mpfr_get_d(r20003, MPFR_RNDN);
}

static mpfr_t r20004, r20005, r20006, r20007, r20008, r20009, r20010, r20011, r20012, r20013, r20014, r20015, r20016, r20017, r20018, r20019, r20020, r20021, r20022, r20023, r20024, r20025, r20026, r20027, r20028, r20029, r20030, r20031, r20032, r20033, r20034, r20035, r20036, r20037, r20038, r20039, r20040, r20041, r20042, r20043, r20044, r20045, r20046, r20047, r20048, r20049, r20050, r20051, r20052, r20053, r20054;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20004);
        mpfr_init_set_str(r20005, "-6.483204993477654e+31", 10, MPFR_RNDN);
        mpfr_init(r20006);
        mpfr_init_set_str(r20007, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20008);
        mpfr_init(r20009);
        mpfr_init_set_str(r20010, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20011);
        mpfr_init(r20012);
        mpfr_init(r20013);
        mpfr_init(r20014);
        mpfr_init(r20015);
        mpfr_init(r20016);
        mpfr_init(r20017);
        mpfr_init_set_str(r20018, "-8.828664881089621e-45", 10, MPFR_RNDN);
        mpfr_init(r20019);
        mpfr_init(r20020);
        mpfr_init(r20021);
        mpfr_init(r20022);
        mpfr_init(r20023);
        mpfr_init(r20024);
        mpfr_init(r20025);
        mpfr_init(r20026);
        mpfr_init(r20027);
        mpfr_init(r20028);
        mpfr_init(r20029);
        mpfr_init_set_str(r20030, "4.185543182523104e-238", 10, MPFR_RNDN);
        mpfr_init(r20031);
        mpfr_init(r20032);
        mpfr_init(r20033);
        mpfr_init(r20034);
        mpfr_init(r20035);
        mpfr_init_set_str(r20036, "1.0258373431142267e+152", 10, MPFR_RNDN);
        mpfr_init(r20037);
        mpfr_init(r20038);
        mpfr_init(r20039);
        mpfr_init(r20040);
        mpfr_init(r20041);
        mpfr_init(r20042);
        mpfr_init(r20043);
        mpfr_init(r20044);
        mpfr_init(r20045);
        mpfr_init(r20046);
        mpfr_init(r20047);
        mpfr_init(r20048);
        mpfr_init(r20049);
        mpfr_init(r20050);
        mpfr_init(r20051);
        mpfr_init(r20052);
        mpfr_init(r20053);
        mpfr_init(r20054);
}

double f_dm(double re, double im) {
        mpfr_set_d(r20004, re, MPFR_RNDN);
        ;
        mpfr_set_si(r20006, mpfr_cmp(r20004, r20005) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20008, im, MPFR_RNDN);
        mpfr_mul(r20009, r20008, r20008, MPFR_RNDN);
        ;
        mpfr_mul(r20011, r20009, r20010, MPFR_RNDN);
        mpfr_sqrt(r20012, r20011, MPFR_RNDN);
        mpfr_mul(r20013, r20007, r20012, MPFR_RNDN);
        mpfr_neg(r20014, r20004, MPFR_RNDN);
        mpfr_sub(r20015, r20014, r20004, MPFR_RNDN);
        mpfr_sqrt(r20016, r20015, MPFR_RNDN);
        mpfr_div(r20017, r20013, r20016, MPFR_RNDN);
        ;
        mpfr_set_si(r20019, mpfr_cmp(r20004, r20018) <= 0, MPFR_RNDN);
        mpfr_neg(r20020, r20007, MPFR_RNDN);
        mpfr_sqrt(r20021, r20010, MPFR_RNDN);
        mpfr_mul(r20022, r20008, r20021, MPFR_RNDN);
        mpfr_mul(r20023, r20020, r20022, MPFR_RNDN);
        mpfr_mul(r20024, r20004, r20004, MPFR_RNDN);
        mpfr_add(r20025, r20009, r20024, MPFR_RNDN);
        mpfr_sqrt(r20026, r20025, MPFR_RNDN);
        mpfr_sub(r20027, r20026, r20004, MPFR_RNDN);
        mpfr_sqrt(r20028, r20027, MPFR_RNDN);
        mpfr_div(r20029, r20023, r20028, MPFR_RNDN);
        ;
        mpfr_set_si(r20031, mpfr_cmp(r20004, r20030) <= 0, MPFR_RNDN);
        mpfr_add(r20032, r20008, r20004, MPFR_RNDN);
        mpfr_mul(r20033, r20010, r20032, MPFR_RNDN);
        mpfr_sqrt(r20034, r20033, MPFR_RNDN);
        mpfr_mul(r20035, r20007, r20034, MPFR_RNDN);
        ;
        mpfr_set_si(r20037, mpfr_cmp(r20004, r20036) <= 0, MPFR_RNDN);
        mpfr_sqr(r20038, r20004, MPFR_RNDN);
        mpfr_add(r20039, r20038, r20009, MPFR_RNDN);
        mpfr_sqrt(r20040, r20039, MPFR_RNDN);
        mpfr_sqrt(r20041, r20040, MPFR_RNDN);
        mpfr_sqr(r20042, r20041, MPFR_RNDN);
        mpfr_add(r20043, r20042, r20004, MPFR_RNDN);
        mpfr_mul(r20044, r20010, r20043, MPFR_RNDN);
        mpfr_sqrt(r20045, r20044, MPFR_RNDN);
        mpfr_mul(r20046, r20007, r20045, MPFR_RNDN);
        mpfr_add(r20047, r20004, r20004, MPFR_RNDN);
        mpfr_mul(r20048, r20010, r20047, MPFR_RNDN);
        mpfr_sqrt(r20049, r20048, MPFR_RNDN);
        mpfr_mul(r20050, r20007, r20049, MPFR_RNDN);
        if (mpfr_get_si(r20037, MPFR_RNDN)) { mpfr_set(r20051, r20046, MPFR_RNDN); } else { mpfr_set(r20051, r20050, MPFR_RNDN); };
        if (mpfr_get_si(r20031, MPFR_RNDN)) { mpfr_set(r20052, r20035, MPFR_RNDN); } else { mpfr_set(r20052, r20051, MPFR_RNDN); };
        if (mpfr_get_si(r20019, MPFR_RNDN)) { mpfr_set(r20053, r20029, MPFR_RNDN); } else { mpfr_set(r20053, r20052, MPFR_RNDN); };
        if (mpfr_get_si(r20006, MPFR_RNDN)) { mpfr_set(r20054, r20017, MPFR_RNDN); } else { mpfr_set(r20054, r20053, MPFR_RNDN); };
        return mpfr_get_d(r20054, MPFR_RNDN);
}

