#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 r19979 = 0.5f;
        float r19980 = 2.0f;
        float r19981 = re;
        float r19982 = r19981 * r19981;
        float r19983 = im;
        float r19984 = r19983 * r19983;
        float r19985 = r19982 + r19984;
        float r19986 = sqrt(r19985);
        float r19987 = r19986 + r19981;
        float r19988 = r19980 * r19987;
        float r19989 = sqrt(r19988);
        float r19990 = r19979 * r19989;
        return r19990;
}

double f_id(double re, double im) {
        double r19991 = 0.5;
        double r19992 = 2.0;
        double r19993 = re;
        double r19994 = r19993 * r19993;
        double r19995 = im;
        double r19996 = r19995 * r19995;
        double r19997 = r19994 + r19996;
        double r19998 = sqrt(r19997);
        double r19999 = r19998 + r19993;
        double r20000 = r19992 * r19999;
        double r20001 = sqrt(r20000);
        double r20002 = r19991 * r20001;
        return r20002;
}


double f_of(float re, float im) {
        float r20003 = re;
        float r20004 = -9.387150454639085e+120f;
        bool r20005 = r20003 <= r20004;
        float r20006 = 0.5f;
        float r20007 = 2.0f;
        float r20008 = im;
        float r20009 = r20007 * r20008;
        float r20010 = r20009 * r20008;
        float r20011 = sqrt(r20010);
        float r20012 = -2.0f;
        float r20013 = r20012 * r20003;
        float r20014 = sqrt(r20013);
        float r20015 = r20011 / r20014;
        float r20016 = r20006 * r20015;
        float r20017 = 9.995586505648043e-300f;
        bool r20018 = r20003 <= r20017;
        float r20019 = r20003 * r20003;
        float r20020 = r20008 * r20008;
        float r20021 = r20019 + r20020;
        float r20022 = sqrt(r20021);
        float r20023 = r20022 - r20003;
        float r20024 = r20010 / r20023;
        float r20025 = sqrt(r20024);
        float r20026 = r20006 * r20025;
        float r20027 = 1.4185225113380942e-111f;
        bool r20028 = r20003 <= r20027;
        float r20029 = r20008 + r20003;
        float r20030 = r20007 * r20029;
        float r20031 = sqrt(r20030);
        float r20032 = r20006 * r20031;
        float r20033 = 2.853275221328354e-97f;
        bool r20034 = r20003 <= r20033;
        float r20035 = 1.5261071406778172e+112f;
        bool r20036 = r20003 <= r20035;
        float r20037 = r20003 * r20003;
        float r20038 = r20037 + r20020;
        float r20039 = sqrt(r20038);
        float r20040 = cbrt(r20039);
        float r20041 = r20040 * (r20040 * r20040);
        float r20042 = r20041 * (r20041 * r20041);
        float r20043 = cbrt(r20042);
        float r20044 = r20043 + r20003;
        float r20045 = r20007 * r20044;
        float r20046 = sqrt(r20045);
        float r20047 = r20006 * r20046;
        float r20048 = r20003 + r20003;
        float r20049 = r20007 * r20048;
        float r20050 = sqrt(r20049);
        float r20051 = r20006 * r20050;
        float r20052 = r20036 ? r20047 : r20051;
        float r20053 = r20034 ? r20026 : r20052;
        float r20054 = r20028 ? r20032 : r20053;
        float r20055 = r20018 ? r20026 : r20054;
        float r20056 = r20005 ? r20016 : r20055;
        return r20056;
}

double f_od(double re, double im) {
        double r20057 = re;
        double r20058 = -9.387150454639085e+120;
        bool r20059 = r20057 <= r20058;
        double r20060 = 0.5;
        double r20061 = 2.0;
        double r20062 = im;
        double r20063 = r20061 * r20062;
        double r20064 = r20063 * r20062;
        double r20065 = sqrt(r20064);
        double r20066 = -2.0;
        double r20067 = r20066 * r20057;
        double r20068 = sqrt(r20067);
        double r20069 = r20065 / r20068;
        double r20070 = r20060 * r20069;
        double r20071 = 9.995586505648043e-300;
        bool r20072 = r20057 <= r20071;
        double r20073 = r20057 * r20057;
        double r20074 = r20062 * r20062;
        double r20075 = r20073 + r20074;
        double r20076 = sqrt(r20075);
        double r20077 = r20076 - r20057;
        double r20078 = r20064 / r20077;
        double r20079 = sqrt(r20078);
        double r20080 = r20060 * r20079;
        double r20081 = 1.4185225113380942e-111;
        bool r20082 = r20057 <= r20081;
        double r20083 = r20062 + r20057;
        double r20084 = r20061 * r20083;
        double r20085 = sqrt(r20084);
        double r20086 = r20060 * r20085;
        double r20087 = 2.853275221328354e-97;
        bool r20088 = r20057 <= r20087;
        double r20089 = 1.5261071406778172e+112;
        bool r20090 = r20057 <= r20089;
        double r20091 = r20057 * r20057;
        double r20092 = r20091 + r20074;
        double r20093 = sqrt(r20092);
        double r20094 = cbrt(r20093);
        double r20095 = r20094 * (r20094 * r20094);
        double r20096 = r20095 * (r20095 * r20095);
        double r20097 = cbrt(r20096);
        double r20098 = r20097 + r20057;
        double r20099 = r20061 * r20098;
        double r20100 = sqrt(r20099);
        double r20101 = r20060 * r20100;
        double r20102 = r20057 + r20057;
        double r20103 = r20061 * r20102;
        double r20104 = sqrt(r20103);
        double r20105 = r20060 * r20104;
        double r20106 = r20090 ? r20101 : r20105;
        double r20107 = r20088 ? r20080 : r20106;
        double r20108 = r20082 ? r20086 : r20107;
        double r20109 = r20072 ? r20080 : r20108;
        double r20110 = r20059 ? r20070 : r20109;
        return r20110;
}

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 r20111, r20112, r20113, r20114, r20115, r20116, r20117, r20118, r20119, r20120, r20121, r20122;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20111, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r20112, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20113);
        mpfr_init(r20114);
        mpfr_init(r20115);
        mpfr_init(r20116);
        mpfr_init(r20117);
        mpfr_init(r20118);
        mpfr_init(r20119);
        mpfr_init(r20120);
        mpfr_init(r20121);
        mpfr_init(r20122);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r20113, re, MPFR_RNDN);
        mpfr_mul(r20114, r20113, r20113, MPFR_RNDN);
        mpfr_set_d(r20115, im, MPFR_RNDN);
        mpfr_mul(r20116, r20115, r20115, MPFR_RNDN);
        mpfr_add(r20117, r20114, r20116, MPFR_RNDN);
        mpfr_sqrt(r20118, r20117, MPFR_RNDN);
        mpfr_add(r20119, r20118, r20113, MPFR_RNDN);
        mpfr_mul(r20120, r20112, r20119, MPFR_RNDN);
        mpfr_sqrt(r20121, r20120, MPFR_RNDN);
        mpfr_mul(r20122, r20111, r20121, MPFR_RNDN);
        return mpfr_get_d(r20122, MPFR_RNDN);
}

static mpfr_t r20123, r20124, r20125, r20126, r20127, r20128, r20129, r20130, r20131, r20132, r20133, r20134, r20135, r20136, r20137, r20138, r20139, r20140, r20141, r20142, r20143, r20144, r20145, r20146, r20147, r20148, r20149, r20150, r20151, r20152, r20153, r20154, r20155, r20156, r20157, r20158, r20159, r20160, r20161, r20162, r20163, r20164, r20165, r20166, r20167, r20168, r20169, r20170, r20171, r20172, r20173, r20174, r20175, r20176;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20123);
        mpfr_init_set_str(r20124, "-9.387150454639085e+120", 10, MPFR_RNDN);
        mpfr_init(r20125);
        mpfr_init_set_str(r20126, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r20127, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20128);
        mpfr_init(r20129);
        mpfr_init(r20130);
        mpfr_init(r20131);
        mpfr_init_set_str(r20132, "-2", 10, MPFR_RNDN);
        mpfr_init(r20133);
        mpfr_init(r20134);
        mpfr_init(r20135);
        mpfr_init(r20136);
        mpfr_init_set_str(r20137, "9.995586505648043e-300", 10, MPFR_RNDN);
        mpfr_init(r20138);
        mpfr_init(r20139);
        mpfr_init(r20140);
        mpfr_init(r20141);
        mpfr_init(r20142);
        mpfr_init(r20143);
        mpfr_init(r20144);
        mpfr_init(r20145);
        mpfr_init(r20146);
        mpfr_init_set_str(r20147, "1.4185225113380942e-111", 10, MPFR_RNDN);
        mpfr_init(r20148);
        mpfr_init(r20149);
        mpfr_init(r20150);
        mpfr_init(r20151);
        mpfr_init(r20152);
        mpfr_init_set_str(r20153, "2.853275221328354e-97", 10, MPFR_RNDN);
        mpfr_init(r20154);
        mpfr_init_set_str(r20155, "1.5261071406778172e+112", 10, MPFR_RNDN);
        mpfr_init(r20156);
        mpfr_init(r20157);
        mpfr_init(r20158);
        mpfr_init(r20159);
        mpfr_init(r20160);
        mpfr_init(r20161);
        mpfr_init(r20162);
        mpfr_init(r20163);
        mpfr_init(r20164);
        mpfr_init(r20165);
        mpfr_init(r20166);
        mpfr_init(r20167);
        mpfr_init(r20168);
        mpfr_init(r20169);
        mpfr_init(r20170);
        mpfr_init(r20171);
        mpfr_init(r20172);
        mpfr_init(r20173);
        mpfr_init(r20174);
        mpfr_init(r20175);
        mpfr_init(r20176);
}

double f_fm(double re, double im) {
        mpfr_set_d(r20123, re, MPFR_RNDN);
        ;
        mpfr_set_si(r20125, mpfr_cmp(r20123, r20124) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r20128, im, MPFR_RNDN);
        mpfr_mul(r20129, r20127, r20128, MPFR_RNDN);
        mpfr_mul(r20130, r20129, r20128, MPFR_RNDN);
        mpfr_sqrt(r20131, r20130, MPFR_RNDN);
        ;
        mpfr_mul(r20133, r20132, r20123, MPFR_RNDN);
        mpfr_sqrt(r20134, r20133, MPFR_RNDN);
        mpfr_div(r20135, r20131, r20134, MPFR_RNDN);
        mpfr_mul(r20136, r20126, r20135, MPFR_RNDN);
        ;
        mpfr_set_si(r20138, mpfr_cmp(r20123, r20137) <= 0, MPFR_RNDN);
        mpfr_mul(r20139, r20123, r20123, MPFR_RNDN);
        mpfr_mul(r20140, r20128, r20128, MPFR_RNDN);
        mpfr_add(r20141, r20139, r20140, MPFR_RNDN);
        mpfr_sqrt(r20142, r20141, MPFR_RNDN);
        mpfr_sub(r20143, r20142, r20123, MPFR_RNDN);
        mpfr_div(r20144, r20130, r20143, MPFR_RNDN);
        mpfr_sqrt(r20145, r20144, MPFR_RNDN);
        mpfr_mul(r20146, r20126, r20145, MPFR_RNDN);
        ;
        mpfr_set_si(r20148, mpfr_cmp(r20123, r20147) <= 0, MPFR_RNDN);
        mpfr_add(r20149, r20128, r20123, MPFR_RNDN);
        mpfr_mul(r20150, r20127, r20149, MPFR_RNDN);
        mpfr_sqrt(r20151, r20150, MPFR_RNDN);
        mpfr_mul(r20152, r20126, r20151, MPFR_RNDN);
        ;
        mpfr_set_si(r20154, mpfr_cmp(r20123, r20153) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20156, mpfr_cmp(r20123, r20155) <= 0, MPFR_RNDN);
        mpfr_sqr(r20157, r20123, MPFR_RNDN);
        mpfr_add(r20158, r20157, r20140, MPFR_RNDN);
        mpfr_sqrt(r20159, r20158, MPFR_RNDN);
        mpfr_cbrt(r20160, r20159, MPFR_RNDN);
        mpfr_mul(r20161, r20160, r20160, MPFR_RNDN); mpfr_mul(r20161, r20161, r20160, MPFR_RNDN);
        mpfr_mul(r20162, r20161, r20161, MPFR_RNDN); mpfr_mul(r20162, r20162, r20161, MPFR_RNDN);
        mpfr_cbrt(r20163, r20162, MPFR_RNDN);
        mpfr_add(r20164, r20163, r20123, MPFR_RNDN);
        mpfr_mul(r20165, r20127, r20164, MPFR_RNDN);
        mpfr_sqrt(r20166, r20165, MPFR_RNDN);
        mpfr_mul(r20167, r20126, r20166, MPFR_RNDN);
        mpfr_add(r20168, r20123, r20123, MPFR_RNDN);
        mpfr_mul(r20169, r20127, r20168, MPFR_RNDN);
        mpfr_sqrt(r20170, r20169, MPFR_RNDN);
        mpfr_mul(r20171, r20126, r20170, MPFR_RNDN);
        if (mpfr_get_si(r20156, MPFR_RNDN)) { mpfr_set(r20172, r20167, MPFR_RNDN); } else { mpfr_set(r20172, r20171, MPFR_RNDN); };
        if (mpfr_get_si(r20154, MPFR_RNDN)) { mpfr_set(r20173, r20146, MPFR_RNDN); } else { mpfr_set(r20173, r20172, MPFR_RNDN); };
        if (mpfr_get_si(r20148, MPFR_RNDN)) { mpfr_set(r20174, r20152, MPFR_RNDN); } else { mpfr_set(r20174, r20173, MPFR_RNDN); };
        if (mpfr_get_si(r20138, MPFR_RNDN)) { mpfr_set(r20175, r20146, MPFR_RNDN); } else { mpfr_set(r20175, r20174, MPFR_RNDN); };
        if (mpfr_get_si(r20125, MPFR_RNDN)) { mpfr_set(r20176, r20136, MPFR_RNDN); } else { mpfr_set(r20176, r20175, MPFR_RNDN); };
        return mpfr_get_d(r20176, MPFR_RNDN);
}

static mpfr_t r20177, r20178, r20179, r20180, r20181, r20182, r20183, r20184, r20185, r20186, r20187, r20188, r20189, r20190, r20191, r20192, r20193, r20194, r20195, r20196, r20197, r20198, r20199, r20200, r20201, r20202, r20203, r20204, r20205, r20206, r20207, r20208, r20209, r20210, r20211, r20212, r20213, r20214, r20215, r20216, r20217, r20218, r20219, r20220, r20221, r20222, r20223, r20224, r20225, r20226, r20227, r20228, r20229, r20230;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20177);
        mpfr_init_set_str(r20178, "-9.387150454639085e+120", 10, MPFR_RNDN);
        mpfr_init(r20179);
        mpfr_init_set_str(r20180, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r20181, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20182);
        mpfr_init(r20183);
        mpfr_init(r20184);
        mpfr_init(r20185);
        mpfr_init_set_str(r20186, "-2", 10, MPFR_RNDN);
        mpfr_init(r20187);
        mpfr_init(r20188);
        mpfr_init(r20189);
        mpfr_init(r20190);
        mpfr_init_set_str(r20191, "9.995586505648043e-300", 10, MPFR_RNDN);
        mpfr_init(r20192);
        mpfr_init(r20193);
        mpfr_init(r20194);
        mpfr_init(r20195);
        mpfr_init(r20196);
        mpfr_init(r20197);
        mpfr_init(r20198);
        mpfr_init(r20199);
        mpfr_init(r20200);
        mpfr_init_set_str(r20201, "1.4185225113380942e-111", 10, MPFR_RNDN);
        mpfr_init(r20202);
        mpfr_init(r20203);
        mpfr_init(r20204);
        mpfr_init(r20205);
        mpfr_init(r20206);
        mpfr_init_set_str(r20207, "2.853275221328354e-97", 10, MPFR_RNDN);
        mpfr_init(r20208);
        mpfr_init_set_str(r20209, "1.5261071406778172e+112", 10, MPFR_RNDN);
        mpfr_init(r20210);
        mpfr_init(r20211);
        mpfr_init(r20212);
        mpfr_init(r20213);
        mpfr_init(r20214);
        mpfr_init(r20215);
        mpfr_init(r20216);
        mpfr_init(r20217);
        mpfr_init(r20218);
        mpfr_init(r20219);
        mpfr_init(r20220);
        mpfr_init(r20221);
        mpfr_init(r20222);
        mpfr_init(r20223);
        mpfr_init(r20224);
        mpfr_init(r20225);
        mpfr_init(r20226);
        mpfr_init(r20227);
        mpfr_init(r20228);
        mpfr_init(r20229);
        mpfr_init(r20230);
}

double f_dm(double re, double im) {
        mpfr_set_d(r20177, re, MPFR_RNDN);
        ;
        mpfr_set_si(r20179, mpfr_cmp(r20177, r20178) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r20182, im, MPFR_RNDN);
        mpfr_mul(r20183, r20181, r20182, MPFR_RNDN);
        mpfr_mul(r20184, r20183, r20182, MPFR_RNDN);
        mpfr_sqrt(r20185, r20184, MPFR_RNDN);
        ;
        mpfr_mul(r20187, r20186, r20177, MPFR_RNDN);
        mpfr_sqrt(r20188, r20187, MPFR_RNDN);
        mpfr_div(r20189, r20185, r20188, MPFR_RNDN);
        mpfr_mul(r20190, r20180, r20189, MPFR_RNDN);
        ;
        mpfr_set_si(r20192, mpfr_cmp(r20177, r20191) <= 0, MPFR_RNDN);
        mpfr_mul(r20193, r20177, r20177, MPFR_RNDN);
        mpfr_mul(r20194, r20182, r20182, MPFR_RNDN);
        mpfr_add(r20195, r20193, r20194, MPFR_RNDN);
        mpfr_sqrt(r20196, r20195, MPFR_RNDN);
        mpfr_sub(r20197, r20196, r20177, MPFR_RNDN);
        mpfr_div(r20198, r20184, r20197, MPFR_RNDN);
        mpfr_sqrt(r20199, r20198, MPFR_RNDN);
        mpfr_mul(r20200, r20180, r20199, MPFR_RNDN);
        ;
        mpfr_set_si(r20202, mpfr_cmp(r20177, r20201) <= 0, MPFR_RNDN);
        mpfr_add(r20203, r20182, r20177, MPFR_RNDN);
        mpfr_mul(r20204, r20181, r20203, MPFR_RNDN);
        mpfr_sqrt(r20205, r20204, MPFR_RNDN);
        mpfr_mul(r20206, r20180, r20205, MPFR_RNDN);
        ;
        mpfr_set_si(r20208, mpfr_cmp(r20177, r20207) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20210, mpfr_cmp(r20177, r20209) <= 0, MPFR_RNDN);
        mpfr_sqr(r20211, r20177, MPFR_RNDN);
        mpfr_add(r20212, r20211, r20194, MPFR_RNDN);
        mpfr_sqrt(r20213, r20212, MPFR_RNDN);
        mpfr_cbrt(r20214, r20213, MPFR_RNDN);
        mpfr_mul(r20215, r20214, r20214, MPFR_RNDN); mpfr_mul(r20215, r20215, r20214, MPFR_RNDN);
        mpfr_mul(r20216, r20215, r20215, MPFR_RNDN); mpfr_mul(r20216, r20216, r20215, MPFR_RNDN);
        mpfr_cbrt(r20217, r20216, MPFR_RNDN);
        mpfr_add(r20218, r20217, r20177, MPFR_RNDN);
        mpfr_mul(r20219, r20181, r20218, MPFR_RNDN);
        mpfr_sqrt(r20220, r20219, MPFR_RNDN);
        mpfr_mul(r20221, r20180, r20220, MPFR_RNDN);
        mpfr_add(r20222, r20177, r20177, MPFR_RNDN);
        mpfr_mul(r20223, r20181, r20222, MPFR_RNDN);
        mpfr_sqrt(r20224, r20223, MPFR_RNDN);
        mpfr_mul(r20225, r20180, r20224, MPFR_RNDN);
        if (mpfr_get_si(r20210, MPFR_RNDN)) { mpfr_set(r20226, r20221, MPFR_RNDN); } else { mpfr_set(r20226, r20225, MPFR_RNDN); };
        if (mpfr_get_si(r20208, MPFR_RNDN)) { mpfr_set(r20227, r20200, MPFR_RNDN); } else { mpfr_set(r20227, r20226, MPFR_RNDN); };
        if (mpfr_get_si(r20202, MPFR_RNDN)) { mpfr_set(r20228, r20206, MPFR_RNDN); } else { mpfr_set(r20228, r20227, MPFR_RNDN); };
        if (mpfr_get_si(r20192, MPFR_RNDN)) { mpfr_set(r20229, r20200, MPFR_RNDN); } else { mpfr_set(r20229, r20228, MPFR_RNDN); };
        if (mpfr_get_si(r20179, MPFR_RNDN)) { mpfr_set(r20230, r20190, MPFR_RNDN); } else { mpfr_set(r20230, r20229, MPFR_RNDN); };
        return mpfr_get_d(r20230, MPFR_RNDN);
}

