#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 r20107 = 0.5f;
        float r20108 = 2.0f;
        float r20109 = re;
        float r20110 = r20109 * r20109;
        float r20111 = im;
        float r20112 = r20111 * r20111;
        float r20113 = r20110 + r20112;
        float r20114 = sqrt(r20113);
        float r20115 = r20114 + r20109;
        float r20116 = r20108 * r20115;
        float r20117 = sqrt(r20116);
        float r20118 = r20107 * r20117;
        return r20118;
}

double f_id(double re, double im) {
        double r20119 = 0.5;
        double r20120 = 2.0;
        double r20121 = re;
        double r20122 = r20121 * r20121;
        double r20123 = im;
        double r20124 = r20123 * r20123;
        double r20125 = r20122 + r20124;
        double r20126 = sqrt(r20125);
        double r20127 = r20126 + r20121;
        double r20128 = r20120 * r20127;
        double r20129 = sqrt(r20128);
        double r20130 = r20119 * r20129;
        return r20130;
}


double f_of(float re, float im) {
        float r20131 = re;
        float r20132 = -1.0070763208517064e+21f;
        bool r20133 = r20131 <= r20132;
        float r20134 = 0.5f;
        float r20135 = im;
        float r20136 = r20135 * r20135;
        float r20137 = 2.0f;
        float r20138 = r20136 * r20137;
        float r20139 = sqrt(r20138);
        float r20140 = r20134 * r20139;
        float r20141 = -r20131;
        float r20142 = r20141 - r20131;
        float r20143 = sqrt(r20142);
        float r20144 = r20140 / r20143;
        float r20145 = -3.953336011394025e-70f;
        bool r20146 = r20131 <= r20145;
        float r20147 = sqrt(r20137);
        float r20148 = r20134 * r20135;
        float r20149 = r20147 * r20148;
        float r20150 = r20131 * r20131;
        float r20151 = r20136 + r20150;
        float r20152 = sqrt(r20151);
        float r20153 = r20152 - r20131;
        float r20154 = sqrt(r20153);
        float r20155 = r20149 / r20154;
        float r20156 = 3.751610550051807e+91f;
        bool r20157 = r20131 <= r20156;
        float r20158 = r20131 * r20131;
        float r20159 = r20158 + r20136;
        float r20160 = cbrt(r20159);
        float r20161 = r20160 * (r20160 * r20160);
        float r20162 = sqrt(r20161);
        float r20163 = r20162 + r20131;
        float r20164 = r20137 * r20163;
        float r20165 = sqrt(r20164);
        float r20166 = r20134 * r20165;
        float r20167 = r20131 + r20131;
        float r20168 = r20137 * r20167;
        float r20169 = sqrt(r20168);
        float r20170 = r20134 * r20169;
        float r20171 = r20157 ? r20166 : r20170;
        float r20172 = r20146 ? r20155 : r20171;
        float r20173 = r20133 ? r20144 : r20172;
        return r20173;
}

double f_od(double re, double im) {
        double r20174 = re;
        double r20175 = -1.0070763208517064e+21;
        bool r20176 = r20174 <= r20175;
        double r20177 = 0.5;
        double r20178 = im;
        double r20179 = r20178 * r20178;
        double r20180 = 2.0;
        double r20181 = r20179 * r20180;
        double r20182 = sqrt(r20181);
        double r20183 = r20177 * r20182;
        double r20184 = -r20174;
        double r20185 = r20184 - r20174;
        double r20186 = sqrt(r20185);
        double r20187 = r20183 / r20186;
        double r20188 = -3.953336011394025e-70;
        bool r20189 = r20174 <= r20188;
        double r20190 = sqrt(r20180);
        double r20191 = r20177 * r20178;
        double r20192 = r20190 * r20191;
        double r20193 = r20174 * r20174;
        double r20194 = r20179 + r20193;
        double r20195 = sqrt(r20194);
        double r20196 = r20195 - r20174;
        double r20197 = sqrt(r20196);
        double r20198 = r20192 / r20197;
        double r20199 = 3.751610550051807e+91;
        bool r20200 = r20174 <= r20199;
        double r20201 = r20174 * r20174;
        double r20202 = r20201 + r20179;
        double r20203 = cbrt(r20202);
        double r20204 = r20203 * (r20203 * r20203);
        double r20205 = sqrt(r20204);
        double r20206 = r20205 + r20174;
        double r20207 = r20180 * r20206;
        double r20208 = sqrt(r20207);
        double r20209 = r20177 * r20208;
        double r20210 = r20174 + r20174;
        double r20211 = r20180 * r20210;
        double r20212 = sqrt(r20211);
        double r20213 = r20177 * r20212;
        double r20214 = r20200 ? r20209 : r20213;
        double r20215 = r20189 ? r20198 : r20214;
        double r20216 = r20176 ? r20187 : r20215;
        return r20216;
}

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 r20217, r20218, r20219, r20220, r20221, r20222, r20223, r20224, r20225, r20226, r20227, r20228;

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

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r20219, re, MPFR_RNDN);
        mpfr_mul(r20220, r20219, r20219, MPFR_RNDN);
        mpfr_set_d(r20221, im, MPFR_RNDN);
        mpfr_mul(r20222, r20221, r20221, MPFR_RNDN);
        mpfr_add(r20223, r20220, r20222, MPFR_RNDN);
        mpfr_sqrt(r20224, r20223, MPFR_RNDN);
        mpfr_add(r20225, r20224, r20219, MPFR_RNDN);
        mpfr_mul(r20226, r20218, r20225, MPFR_RNDN);
        mpfr_sqrt(r20227, r20226, MPFR_RNDN);
        mpfr_mul(r20228, r20217, r20227, MPFR_RNDN);
        return mpfr_get_d(r20228, MPFR_RNDN);
}

static mpfr_t r20229, r20230, r20231, r20232, r20233, r20234, r20235, r20236, r20237, r20238, r20239, r20240, r20241, r20242, r20243, r20244, r20245, r20246, r20247, r20248, r20249, r20250, r20251, r20252, r20253, r20254, r20255, r20256, r20257, r20258, r20259, r20260, r20261, r20262, r20263, r20264, r20265, r20266, r20267, r20268, r20269, r20270, r20271;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20229);
        mpfr_init_set_str(r20230, "-1.0070763208517064e+21", 10, MPFR_RNDN);
        mpfr_init(r20231);
        mpfr_init_set_str(r20232, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20233);
        mpfr_init(r20234);
        mpfr_init_set_str(r20235, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20236);
        mpfr_init(r20237);
        mpfr_init(r20238);
        mpfr_init(r20239);
        mpfr_init(r20240);
        mpfr_init(r20241);
        mpfr_init(r20242);
        mpfr_init_set_str(r20243, "-3.953336011394025e-70", 10, MPFR_RNDN);
        mpfr_init(r20244);
        mpfr_init(r20245);
        mpfr_init(r20246);
        mpfr_init(r20247);
        mpfr_init(r20248);
        mpfr_init(r20249);
        mpfr_init(r20250);
        mpfr_init(r20251);
        mpfr_init(r20252);
        mpfr_init(r20253);
        mpfr_init_set_str(r20254, "3.751610550051807e+91", 10, MPFR_RNDN);
        mpfr_init(r20255);
        mpfr_init(r20256);
        mpfr_init(r20257);
        mpfr_init(r20258);
        mpfr_init(r20259);
        mpfr_init(r20260);
        mpfr_init(r20261);
        mpfr_init(r20262);
        mpfr_init(r20263);
        mpfr_init(r20264);
        mpfr_init(r20265);
        mpfr_init(r20266);
        mpfr_init(r20267);
        mpfr_init(r20268);
        mpfr_init(r20269);
        mpfr_init(r20270);
        mpfr_init(r20271);
}

double f_fm(double re, double im) {
        mpfr_set_d(r20229, re, MPFR_RNDN);
        ;
        mpfr_set_si(r20231, mpfr_cmp(r20229, r20230) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20233, im, MPFR_RNDN);
        mpfr_mul(r20234, r20233, r20233, MPFR_RNDN);
        ;
        mpfr_mul(r20236, r20234, r20235, MPFR_RNDN);
        mpfr_sqrt(r20237, r20236, MPFR_RNDN);
        mpfr_mul(r20238, r20232, r20237, MPFR_RNDN);
        mpfr_neg(r20239, r20229, MPFR_RNDN);
        mpfr_sub(r20240, r20239, r20229, MPFR_RNDN);
        mpfr_sqrt(r20241, r20240, MPFR_RNDN);
        mpfr_div(r20242, r20238, r20241, MPFR_RNDN);
        ;
        mpfr_set_si(r20244, mpfr_cmp(r20229, r20243) <= 0, MPFR_RNDN);
        mpfr_sqrt(r20245, r20235, MPFR_RNDN);
        mpfr_mul(r20246, r20232, r20233, MPFR_RNDN);
        mpfr_mul(r20247, r20245, r20246, MPFR_RNDN);
        mpfr_mul(r20248, r20229, r20229, MPFR_RNDN);
        mpfr_add(r20249, r20234, r20248, MPFR_RNDN);
        mpfr_sqrt(r20250, r20249, MPFR_RNDN);
        mpfr_sub(r20251, r20250, r20229, MPFR_RNDN);
        mpfr_sqrt(r20252, r20251, MPFR_RNDN);
        mpfr_div(r20253, r20247, r20252, MPFR_RNDN);
        ;
        mpfr_set_si(r20255, mpfr_cmp(r20229, r20254) <= 0, MPFR_RNDN);
        mpfr_sqr(r20256, r20229, MPFR_RNDN);
        mpfr_add(r20257, r20256, r20234, MPFR_RNDN);
        mpfr_cbrt(r20258, r20257, MPFR_RNDN);
        mpfr_mul(r20259, r20258, r20258, MPFR_RNDN); mpfr_mul(r20259, r20259, r20258, MPFR_RNDN);
        mpfr_sqrt(r20260, r20259, MPFR_RNDN);
        mpfr_add(r20261, r20260, r20229, MPFR_RNDN);
        mpfr_mul(r20262, r20235, r20261, MPFR_RNDN);
        mpfr_sqrt(r20263, r20262, MPFR_RNDN);
        mpfr_mul(r20264, r20232, r20263, MPFR_RNDN);
        mpfr_add(r20265, r20229, r20229, MPFR_RNDN);
        mpfr_mul(r20266, r20235, r20265, MPFR_RNDN);
        mpfr_sqrt(r20267, r20266, MPFR_RNDN);
        mpfr_mul(r20268, r20232, r20267, MPFR_RNDN);
        if (mpfr_get_si(r20255, MPFR_RNDN)) { mpfr_set(r20269, r20264, MPFR_RNDN); } else { mpfr_set(r20269, r20268, MPFR_RNDN); };
        if (mpfr_get_si(r20244, MPFR_RNDN)) { mpfr_set(r20270, r20253, MPFR_RNDN); } else { mpfr_set(r20270, r20269, MPFR_RNDN); };
        if (mpfr_get_si(r20231, MPFR_RNDN)) { mpfr_set(r20271, r20242, MPFR_RNDN); } else { mpfr_set(r20271, r20270, MPFR_RNDN); };
        return mpfr_get_d(r20271, MPFR_RNDN);
}

static mpfr_t r20272, r20273, r20274, r20275, r20276, r20277, r20278, r20279, r20280, r20281, r20282, r20283, r20284, r20285, r20286, r20287, r20288, r20289, r20290, r20291, r20292, r20293, r20294, r20295, r20296, r20297, r20298, r20299, r20300, r20301, r20302, r20303, r20304, r20305, r20306, r20307, r20308, r20309, r20310, r20311, r20312, r20313, r20314;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20272);
        mpfr_init_set_str(r20273, "-1.0070763208517064e+21", 10, MPFR_RNDN);
        mpfr_init(r20274);
        mpfr_init_set_str(r20275, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20276);
        mpfr_init(r20277);
        mpfr_init_set_str(r20278, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20279);
        mpfr_init(r20280);
        mpfr_init(r20281);
        mpfr_init(r20282);
        mpfr_init(r20283);
        mpfr_init(r20284);
        mpfr_init(r20285);
        mpfr_init_set_str(r20286, "-3.953336011394025e-70", 10, MPFR_RNDN);
        mpfr_init(r20287);
        mpfr_init(r20288);
        mpfr_init(r20289);
        mpfr_init(r20290);
        mpfr_init(r20291);
        mpfr_init(r20292);
        mpfr_init(r20293);
        mpfr_init(r20294);
        mpfr_init(r20295);
        mpfr_init(r20296);
        mpfr_init_set_str(r20297, "3.751610550051807e+91", 10, MPFR_RNDN);
        mpfr_init(r20298);
        mpfr_init(r20299);
        mpfr_init(r20300);
        mpfr_init(r20301);
        mpfr_init(r20302);
        mpfr_init(r20303);
        mpfr_init(r20304);
        mpfr_init(r20305);
        mpfr_init(r20306);
        mpfr_init(r20307);
        mpfr_init(r20308);
        mpfr_init(r20309);
        mpfr_init(r20310);
        mpfr_init(r20311);
        mpfr_init(r20312);
        mpfr_init(r20313);
        mpfr_init(r20314);
}

double f_dm(double re, double im) {
        mpfr_set_d(r20272, re, MPFR_RNDN);
        ;
        mpfr_set_si(r20274, mpfr_cmp(r20272, r20273) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20276, im, MPFR_RNDN);
        mpfr_mul(r20277, r20276, r20276, MPFR_RNDN);
        ;
        mpfr_mul(r20279, r20277, r20278, MPFR_RNDN);
        mpfr_sqrt(r20280, r20279, MPFR_RNDN);
        mpfr_mul(r20281, r20275, r20280, MPFR_RNDN);
        mpfr_neg(r20282, r20272, MPFR_RNDN);
        mpfr_sub(r20283, r20282, r20272, MPFR_RNDN);
        mpfr_sqrt(r20284, r20283, MPFR_RNDN);
        mpfr_div(r20285, r20281, r20284, MPFR_RNDN);
        ;
        mpfr_set_si(r20287, mpfr_cmp(r20272, r20286) <= 0, MPFR_RNDN);
        mpfr_sqrt(r20288, r20278, MPFR_RNDN);
        mpfr_mul(r20289, r20275, r20276, MPFR_RNDN);
        mpfr_mul(r20290, r20288, r20289, MPFR_RNDN);
        mpfr_mul(r20291, r20272, r20272, MPFR_RNDN);
        mpfr_add(r20292, r20277, r20291, MPFR_RNDN);
        mpfr_sqrt(r20293, r20292, MPFR_RNDN);
        mpfr_sub(r20294, r20293, r20272, MPFR_RNDN);
        mpfr_sqrt(r20295, r20294, MPFR_RNDN);
        mpfr_div(r20296, r20290, r20295, MPFR_RNDN);
        ;
        mpfr_set_si(r20298, mpfr_cmp(r20272, r20297) <= 0, MPFR_RNDN);
        mpfr_sqr(r20299, r20272, MPFR_RNDN);
        mpfr_add(r20300, r20299, r20277, MPFR_RNDN);
        mpfr_cbrt(r20301, r20300, MPFR_RNDN);
        mpfr_mul(r20302, r20301, r20301, MPFR_RNDN); mpfr_mul(r20302, r20302, r20301, MPFR_RNDN);
        mpfr_sqrt(r20303, r20302, MPFR_RNDN);
        mpfr_add(r20304, r20303, r20272, MPFR_RNDN);
        mpfr_mul(r20305, r20278, r20304, MPFR_RNDN);
        mpfr_sqrt(r20306, r20305, MPFR_RNDN);
        mpfr_mul(r20307, r20275, r20306, MPFR_RNDN);
        mpfr_add(r20308, r20272, r20272, MPFR_RNDN);
        mpfr_mul(r20309, r20278, r20308, MPFR_RNDN);
        mpfr_sqrt(r20310, r20309, MPFR_RNDN);
        mpfr_mul(r20311, r20275, r20310, MPFR_RNDN);
        if (mpfr_get_si(r20298, MPFR_RNDN)) { mpfr_set(r20312, r20307, MPFR_RNDN); } else { mpfr_set(r20312, r20311, MPFR_RNDN); };
        if (mpfr_get_si(r20287, MPFR_RNDN)) { mpfr_set(r20313, r20296, MPFR_RNDN); } else { mpfr_set(r20313, r20312, MPFR_RNDN); };
        if (mpfr_get_si(r20274, MPFR_RNDN)) { mpfr_set(r20314, r20285, MPFR_RNDN); } else { mpfr_set(r20314, r20313, MPFR_RNDN); };
        return mpfr_get_d(r20314, MPFR_RNDN);
}

