#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 r19883 = 0.5f;
        float r19884 = 2.0f;
        float r19885 = re;
        float r19886 = r19885 * r19885;
        float r19887 = im;
        float r19888 = r19887 * r19887;
        float r19889 = r19886 + r19888;
        float r19890 = sqrt(r19889);
        float r19891 = r19890 + r19885;
        float r19892 = r19884 * r19891;
        float r19893 = sqrt(r19892);
        float r19894 = r19883 * r19893;
        return r19894;
}

double f_id(double re, double im) {
        double r19895 = 0.5;
        double r19896 = 2.0;
        double r19897 = re;
        double r19898 = r19897 * r19897;
        double r19899 = im;
        double r19900 = r19899 * r19899;
        double r19901 = r19898 + r19900;
        double r19902 = sqrt(r19901);
        double r19903 = r19902 + r19897;
        double r19904 = r19896 * r19903;
        double r19905 = sqrt(r19904);
        double r19906 = r19895 * r19905;
        return r19906;
}


double f_of(float re, float im) {
        float r19907 = re;
        float r19908 = -3.824436836720318e+109f;
        bool r19909 = r19907 <= r19908;
        float r19910 = 0.5f;
        float r19911 = im;
        float r19912 = r19911 * r19911;
        float r19913 = 2.0f;
        float r19914 = r19912 * r19913;
        float r19915 = sqrt(r19914);
        float r19916 = r19910 * r19915;
        float r19917 = -r19907;
        float r19918 = r19917 - r19907;
        float r19919 = sqrt(r19918);
        float r19920 = r19916 / r19919;
        float r19921 = 2.2955426280380868e-209f;
        bool r19922 = r19907 <= r19921;
        float r19923 = r19907 * r19907;
        float r19924 = r19923 + r19912;
        float r19925 = sqrt(r19924);
        float r19926 = r19925 - r19907;
        float r19927 = r19912 / r19926;
        float r19928 = r19913 * r19927;
        float r19929 = sqrt(r19928);
        float r19930 = r19910 * r19929;
        float r19931 = 1.3480729395074825e+78f;
        bool r19932 = r19907 <= r19931;
        float r19933 = r19907 + r19907;
        float r19934 = r19913 * r19933;
        float r19935 = sqrt(r19934);
        float r19936 = r19910 * r19935;
        float r19937 = 2.0f;
        float r19938 = r19937 * r19907;
        float r19939 = 0.5f;
        float r19940 = r19911 * r19939;
        float r19941 = r19907 / r19911;
        float r19942 = r19940 / r19941;
        float r19943 = r19938 + r19942;
        float r19944 = r19943 * r19913;
        float r19945 = sqrt(r19944);
        float r19946 = r19910 * r19945;
        float r19947 = r19932 ? r19936 : r19946;
        float r19948 = r19922 ? r19930 : r19947;
        float r19949 = r19909 ? r19920 : r19948;
        return r19949;
}

double f_od(double re, double im) {
        double r19950 = re;
        double r19951 = -3.824436836720318e+109;
        bool r19952 = r19950 <= r19951;
        double r19953 = 0.5;
        double r19954 = im;
        double r19955 = r19954 * r19954;
        double r19956 = 2.0;
        double r19957 = r19955 * r19956;
        double r19958 = sqrt(r19957);
        double r19959 = r19953 * r19958;
        double r19960 = -r19950;
        double r19961 = r19960 - r19950;
        double r19962 = sqrt(r19961);
        double r19963 = r19959 / r19962;
        double r19964 = 2.2955426280380868e-209;
        bool r19965 = r19950 <= r19964;
        double r19966 = r19950 * r19950;
        double r19967 = r19966 + r19955;
        double r19968 = sqrt(r19967);
        double r19969 = r19968 - r19950;
        double r19970 = r19955 / r19969;
        double r19971 = r19956 * r19970;
        double r19972 = sqrt(r19971);
        double r19973 = r19953 * r19972;
        double r19974 = 1.3480729395074825e+78;
        bool r19975 = r19950 <= r19974;
        double r19976 = r19950 + r19950;
        double r19977 = r19956 * r19976;
        double r19978 = sqrt(r19977);
        double r19979 = r19953 * r19978;
        double r19980 = 2.0;
        double r19981 = r19980 * r19950;
        double r19982 = 0.5;
        double r19983 = r19954 * r19982;
        double r19984 = r19950 / r19954;
        double r19985 = r19983 / r19984;
        double r19986 = r19981 + r19985;
        double r19987 = r19986 * r19956;
        double r19988 = sqrt(r19987);
        double r19989 = r19953 * r19988;
        double r19990 = r19975 ? r19979 : r19989;
        double r19991 = r19965 ? r19973 : r19990;
        double r19992 = r19952 ? r19963 : r19991;
        return r19992;
}

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 r19993, r19994, r19995, r19996, r19997, r19998, r19999, r20000, r20001, r20002, r20003, r20004;

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

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19995, re, MPFR_RNDN);
        mpfr_mul(r19996, r19995, r19995, MPFR_RNDN);
        mpfr_set_d(r19997, im, MPFR_RNDN);
        mpfr_mul(r19998, r19997, r19997, MPFR_RNDN);
        mpfr_add(r19999, r19996, r19998, MPFR_RNDN);
        mpfr_sqrt(r20000, r19999, MPFR_RNDN);
        mpfr_add(r20001, r20000, r19995, MPFR_RNDN);
        mpfr_mul(r20002, r19994, r20001, MPFR_RNDN);
        mpfr_sqrt(r20003, r20002, MPFR_RNDN);
        mpfr_mul(r20004, r19993, r20003, MPFR_RNDN);
        return mpfr_get_d(r20004, MPFR_RNDN);
}

static mpfr_t 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20005);
        mpfr_init_set_str(r20006, "-3.824436836720318e+109", 10, MPFR_RNDN);
        mpfr_init(r20007);
        mpfr_init_set_str(r20008, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20009);
        mpfr_init(r20010);
        mpfr_init_set_str(r20011, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20012);
        mpfr_init(r20013);
        mpfr_init(r20014);
        mpfr_init(r20015);
        mpfr_init(r20016);
        mpfr_init(r20017);
        mpfr_init(r20018);
        mpfr_init_set_str(r20019, "2.2955426280380868e-209", 10, MPFR_RNDN);
        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_set_str(r20029, "1.3480729395074825e+78", 10, MPFR_RNDN);
        mpfr_init(r20030);
        mpfr_init(r20031);
        mpfr_init(r20032);
        mpfr_init(r20033);
        mpfr_init(r20034);
        mpfr_init_set_str(r20035, "2", 10, MPFR_RNDN);
        mpfr_init(r20036);
        mpfr_init_set_str(r20037, "1/2", 10, MPFR_RNDN);
        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);
}

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

static mpfr_t r20048, r20049, r20050, r20051, r20052, r20053, r20054, r20055, r20056, r20057, r20058, r20059, r20060, r20061, r20062, r20063, r20064, r20065, r20066, r20067, r20068, r20069, r20070, r20071, r20072, r20073, r20074, r20075, r20076, r20077, r20078, r20079, r20080, r20081, r20082, r20083, r20084, r20085, r20086, r20087, r20088, r20089, r20090;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20048);
        mpfr_init_set_str(r20049, "-3.824436836720318e+109", 10, MPFR_RNDN);
        mpfr_init(r20050);
        mpfr_init_set_str(r20051, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20052);
        mpfr_init(r20053);
        mpfr_init_set_str(r20054, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20055);
        mpfr_init(r20056);
        mpfr_init(r20057);
        mpfr_init(r20058);
        mpfr_init(r20059);
        mpfr_init(r20060);
        mpfr_init(r20061);
        mpfr_init_set_str(r20062, "2.2955426280380868e-209", 10, MPFR_RNDN);
        mpfr_init(r20063);
        mpfr_init(r20064);
        mpfr_init(r20065);
        mpfr_init(r20066);
        mpfr_init(r20067);
        mpfr_init(r20068);
        mpfr_init(r20069);
        mpfr_init(r20070);
        mpfr_init(r20071);
        mpfr_init_set_str(r20072, "1.3480729395074825e+78", 10, MPFR_RNDN);
        mpfr_init(r20073);
        mpfr_init(r20074);
        mpfr_init(r20075);
        mpfr_init(r20076);
        mpfr_init(r20077);
        mpfr_init_set_str(r20078, "2", 10, MPFR_RNDN);
        mpfr_init(r20079);
        mpfr_init_set_str(r20080, "1/2", 10, MPFR_RNDN);
        mpfr_init(r20081);
        mpfr_init(r20082);
        mpfr_init(r20083);
        mpfr_init(r20084);
        mpfr_init(r20085);
        mpfr_init(r20086);
        mpfr_init(r20087);
        mpfr_init(r20088);
        mpfr_init(r20089);
        mpfr_init(r20090);
}

double f_dm(double re, double im) {
        mpfr_set_d(r20048, re, MPFR_RNDN);
        ;
        mpfr_set_si(r20050, mpfr_cmp(r20048, r20049) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20052, im, MPFR_RNDN);
        mpfr_mul(r20053, r20052, r20052, MPFR_RNDN);
        ;
        mpfr_mul(r20055, r20053, r20054, MPFR_RNDN);
        mpfr_sqrt(r20056, r20055, MPFR_RNDN);
        mpfr_mul(r20057, r20051, r20056, MPFR_RNDN);
        mpfr_neg(r20058, r20048, MPFR_RNDN);
        mpfr_sub(r20059, r20058, r20048, MPFR_RNDN);
        mpfr_sqrt(r20060, r20059, MPFR_RNDN);
        mpfr_div(r20061, r20057, r20060, MPFR_RNDN);
        ;
        mpfr_set_si(r20063, mpfr_cmp(r20048, r20062) <= 0, MPFR_RNDN);
        mpfr_sqr(r20064, r20048, MPFR_RNDN);
        mpfr_add(r20065, r20064, r20053, MPFR_RNDN);
        mpfr_sqrt(r20066, r20065, MPFR_RNDN);
        mpfr_sub(r20067, r20066, r20048, MPFR_RNDN);
        mpfr_div(r20068, r20053, r20067, MPFR_RNDN);
        mpfr_mul(r20069, r20054, r20068, MPFR_RNDN);
        mpfr_sqrt(r20070, r20069, MPFR_RNDN);
        mpfr_mul(r20071, r20051, r20070, MPFR_RNDN);
        ;
        mpfr_set_si(r20073, mpfr_cmp(r20048, r20072) <= 0, MPFR_RNDN);
        mpfr_add(r20074, r20048, r20048, MPFR_RNDN);
        mpfr_mul(r20075, r20054, r20074, MPFR_RNDN);
        mpfr_sqrt(r20076, r20075, MPFR_RNDN);
        mpfr_mul(r20077, r20051, r20076, MPFR_RNDN);
        ;
        mpfr_mul(r20079, r20078, r20048, MPFR_RNDN);
        ;
        mpfr_mul(r20081, r20052, r20080, MPFR_RNDN);
        mpfr_div(r20082, r20048, r20052, MPFR_RNDN);
        mpfr_div(r20083, r20081, r20082, MPFR_RNDN);
        mpfr_add(r20084, r20079, r20083, MPFR_RNDN);
        mpfr_mul(r20085, r20084, r20054, MPFR_RNDN);
        mpfr_sqrt(r20086, r20085, MPFR_RNDN);
        mpfr_mul(r20087, r20051, r20086, MPFR_RNDN);
        if (mpfr_get_si(r20073, MPFR_RNDN)) { mpfr_set(r20088, r20077, MPFR_RNDN); } else { mpfr_set(r20088, r20087, MPFR_RNDN); };
        if (mpfr_get_si(r20063, MPFR_RNDN)) { mpfr_set(r20089, r20071, MPFR_RNDN); } else { mpfr_set(r20089, r20088, MPFR_RNDN); };
        if (mpfr_get_si(r20050, MPFR_RNDN)) { mpfr_set(r20090, r20061, MPFR_RNDN); } else { mpfr_set(r20090, r20089, MPFR_RNDN); };
        return mpfr_get_d(r20090, MPFR_RNDN);
}

