#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 r28128 = 0.5;
        float r28129 = 2.0;
        float r28130 = re;
        float r28131 = r28130 * r28130;
        float r28132 = im;
        float r28133 = r28132 * r28132;
        float r28134 = r28131 + r28133;
        float r28135 = sqrt(r28134);
        float r28136 = r28135 + r28130;
        float r28137 = r28129 * r28136;
        float r28138 = sqrt(r28137);
        float r28139 = r28128 * r28138;
        return r28139;
}

double f_id(double re, double im) {
        double r28140 = 0.5;
        double r28141 = 2.0;
        double r28142 = re;
        double r28143 = r28142 * r28142;
        double r28144 = im;
        double r28145 = r28144 * r28144;
        double r28146 = r28143 + r28145;
        double r28147 = sqrt(r28146);
        double r28148 = r28147 + r28142;
        double r28149 = r28141 * r28148;
        double r28150 = sqrt(r28149);
        double r28151 = r28140 * r28150;
        return r28151;
}


double f_of(float re, float im) {
        float r28152 = 2.0;
        float r28153 = im;
        float r28154 = re;
        float r28155 = r28153 + r28154;
        float r28156 = r28152 * r28155;
        float r28157 = -7.995196897578388e+158;
        bool r28158 = r28156 <= r28157;
        float r28159 = 0.5;
        float r28160 = r28153 * r28153;
        float r28161 = r28152 * r28160;
        float r28162 = sqrt(r28161);
        float r28163 = -2;
        float r28164 = r28163 * r28154;
        float r28165 = sqrt(r28164);
        float r28166 = r28162 / r28165;
        float r28167 = r28159 * r28166;
        float r28168 = 1.039506264253617e-256;
        bool r28169 = r28156 <= r28168;
        float r28170 = sqrt(r28152);
        float r28171 = r28154 * r28154;
        float r28172 = r28171 + r28160;
        float r28173 = sqrt(r28172);
        float r28174 = r28173 - r28154;
        float r28175 = sqrt(r28174);
        float r28176 = sqrt(r28175);
        float r28177 = r28170 / r28176;
        float r28178 = fabs(r28153);
        float r28179 = r28160 + r28171;
        float r28180 = sqrt(r28179);
        float r28181 = r28180 - r28154;
        float r28182 = sqrt(r28181);
        float r28183 = sqrt(r28182);
        float r28184 = r28178 / r28183;
        float r28185 = r28177 * r28184;
        float r28186 = r28159 * r28185;
        float r28187 = 1.1014827247221702e-160;
        bool r28188 = r28156 <= r28187;
        float r28189 = r28154 + r28154;
        float r28190 = r28152 * r28189;
        float r28191 = sqrt(r28190);
        float r28192 = r28159 * r28191;
        float r28193 = 5.777851359155679e+154;
        bool r28194 = r28156 <= r28193;
        float r28195 = sqrt(r28173);
        float r28196 = r28195 * r28195;
        float r28197 = r28196 + r28154;
        float r28198 = r28152 * r28197;
        float r28199 = sqrt(r28198);
        float r28200 = r28159 * r28199;
        float r28201 = 7.739821105146112e+232;
        bool r28202 = r28156 <= r28201;
        float r28203 = sqrt(r28156);
        float r28204 = r28159 * r28203;
        float r28205 = r28202 ? r28192 : r28204;
        float r28206 = r28194 ? r28200 : r28205;
        float r28207 = r28188 ? r28192 : r28206;
        float r28208 = r28169 ? r28186 : r28207;
        float r28209 = r28158 ? r28167 : r28208;
        return r28209;
}

double f_od(double re, double im) {
        double r28210 = 2.0;
        double r28211 = im;
        double r28212 = re;
        double r28213 = r28211 + r28212;
        double r28214 = r28210 * r28213;
        double r28215 = -7.995196897578388e+158;
        bool r28216 = r28214 <= r28215;
        double r28217 = 0.5;
        double r28218 = r28211 * r28211;
        double r28219 = r28210 * r28218;
        double r28220 = sqrt(r28219);
        double r28221 = -2;
        double r28222 = r28221 * r28212;
        double r28223 = sqrt(r28222);
        double r28224 = r28220 / r28223;
        double r28225 = r28217 * r28224;
        double r28226 = 1.039506264253617e-256;
        bool r28227 = r28214 <= r28226;
        double r28228 = sqrt(r28210);
        double r28229 = r28212 * r28212;
        double r28230 = r28229 + r28218;
        double r28231 = sqrt(r28230);
        double r28232 = r28231 - r28212;
        double r28233 = sqrt(r28232);
        double r28234 = sqrt(r28233);
        double r28235 = r28228 / r28234;
        double r28236 = fabs(r28211);
        double r28237 = r28218 + r28229;
        double r28238 = sqrt(r28237);
        double r28239 = r28238 - r28212;
        double r28240 = sqrt(r28239);
        double r28241 = sqrt(r28240);
        double r28242 = r28236 / r28241;
        double r28243 = r28235 * r28242;
        double r28244 = r28217 * r28243;
        double r28245 = 1.1014827247221702e-160;
        bool r28246 = r28214 <= r28245;
        double r28247 = r28212 + r28212;
        double r28248 = r28210 * r28247;
        double r28249 = sqrt(r28248);
        double r28250 = r28217 * r28249;
        double r28251 = 5.777851359155679e+154;
        bool r28252 = r28214 <= r28251;
        double r28253 = sqrt(r28231);
        double r28254 = r28253 * r28253;
        double r28255 = r28254 + r28212;
        double r28256 = r28210 * r28255;
        double r28257 = sqrt(r28256);
        double r28258 = r28217 * r28257;
        double r28259 = 7.739821105146112e+232;
        bool r28260 = r28214 <= r28259;
        double r28261 = sqrt(r28214);
        double r28262 = r28217 * r28261;
        double r28263 = r28260 ? r28250 : r28262;
        double r28264 = r28252 ? r28258 : r28263;
        double r28265 = r28246 ? r28250 : r28264;
        double r28266 = r28227 ? r28244 : r28265;
        double r28267 = r28216 ? r28225 : r28266;
        return r28267;
}

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 r28268, r28269, r28270, r28271, r28272, r28273, r28274, r28275, r28276, r28277, r28278, r28279;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28268, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r28269, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28270);
        mpfr_init(r28271);
        mpfr_init(r28272);
        mpfr_init(r28273);
        mpfr_init(r28274);
        mpfr_init(r28275);
        mpfr_init(r28276);
        mpfr_init(r28277);
        mpfr_init(r28278);
        mpfr_init(r28279);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r28270, re, MPFR_RNDN);
        mpfr_mul(r28271, r28270, r28270, MPFR_RNDN);
        mpfr_set_d(r28272, im, MPFR_RNDN);
        mpfr_mul(r28273, r28272, r28272, MPFR_RNDN);
        mpfr_add(r28274, r28271, r28273, MPFR_RNDN);
        mpfr_sqrt(r28275, r28274, MPFR_RNDN);
        mpfr_add(r28276, r28275, r28270, MPFR_RNDN);
        mpfr_mul(r28277, r28269, r28276, MPFR_RNDN);
        mpfr_sqrt(r28278, r28277, MPFR_RNDN);
        mpfr_mul(r28279, r28268, r28278, MPFR_RNDN);
        return mpfr_get_d(r28279, MPFR_RNDN);
}

static mpfr_t r28280, r28281, r28282, r28283, r28284, r28285, r28286, r28287, r28288, r28289, r28290, r28291, r28292, r28293, r28294, r28295, r28296, r28297, r28298, r28299, r28300, r28301, r28302, r28303, r28304, r28305, r28306, r28307, r28308, r28309, r28310, r28311, r28312, r28313, r28314, r28315, r28316, r28317, r28318, r28319, r28320, r28321, r28322, r28323, r28324, r28325, r28326, r28327, r28328, r28329, r28330, r28331, r28332, r28333, r28334, r28335, r28336, r28337;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28280, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28281);
        mpfr_init(r28282);
        mpfr_init(r28283);
        mpfr_init(r28284);
        mpfr_init_set_str(r28285, "-7.995196897578388e+158", 10, MPFR_RNDN);
        mpfr_init(r28286);
        mpfr_init_set_str(r28287, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28288);
        mpfr_init(r28289);
        mpfr_init(r28290);
        mpfr_init_set_str(r28291, "-2", 10, MPFR_RNDN);
        mpfr_init(r28292);
        mpfr_init(r28293);
        mpfr_init(r28294);
        mpfr_init(r28295);
        mpfr_init_set_str(r28296, "1.039506264253617e-256", 10, MPFR_RNDN);
        mpfr_init(r28297);
        mpfr_init(r28298);
        mpfr_init(r28299);
        mpfr_init(r28300);
        mpfr_init(r28301);
        mpfr_init(r28302);
        mpfr_init(r28303);
        mpfr_init(r28304);
        mpfr_init(r28305);
        mpfr_init(r28306);
        mpfr_init(r28307);
        mpfr_init(r28308);
        mpfr_init(r28309);
        mpfr_init(r28310);
        mpfr_init(r28311);
        mpfr_init(r28312);
        mpfr_init(r28313);
        mpfr_init(r28314);
        mpfr_init_set_str(r28315, "1.1014827247221702e-160", 10, MPFR_RNDN);
        mpfr_init(r28316);
        mpfr_init(r28317);
        mpfr_init(r28318);
        mpfr_init(r28319);
        mpfr_init(r28320);
        mpfr_init_set_str(r28321, "5.777851359155679e+154", 10, MPFR_RNDN);
        mpfr_init(r28322);
        mpfr_init(r28323);
        mpfr_init(r28324);
        mpfr_init(r28325);
        mpfr_init(r28326);
        mpfr_init(r28327);
        mpfr_init(r28328);
        mpfr_init_set_str(r28329, "7.739821105146112e+232", 10, MPFR_RNDN);
        mpfr_init(r28330);
        mpfr_init(r28331);
        mpfr_init(r28332);
        mpfr_init(r28333);
        mpfr_init(r28334);
        mpfr_init(r28335);
        mpfr_init(r28336);
        mpfr_init(r28337);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r28281, im, MPFR_RNDN);
        mpfr_set_d(r28282, re, MPFR_RNDN);
        mpfr_add(r28283, r28281, r28282, MPFR_RNDN);
        mpfr_mul(r28284, r28280, r28283, MPFR_RNDN);
        ;
        mpfr_set_si(r28286, mpfr_cmp(r28284, r28285) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r28288, r28281, r28281, MPFR_RNDN);
        mpfr_mul(r28289, r28280, r28288, MPFR_RNDN);
        mpfr_sqrt(r28290, r28289, MPFR_RNDN);
        ;
        mpfr_mul(r28292, r28291, r28282, MPFR_RNDN);
        mpfr_sqrt(r28293, r28292, MPFR_RNDN);
        mpfr_div(r28294, r28290, r28293, MPFR_RNDN);
        mpfr_mul(r28295, r28287, r28294, MPFR_RNDN);
        ;
        mpfr_set_si(r28297, mpfr_cmp(r28284, r28296) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28298, r28280, MPFR_RNDN);
        mpfr_mul(r28299, r28282, r28282, MPFR_RNDN);
        mpfr_add(r28300, r28299, r28288, MPFR_RNDN);
        mpfr_sqrt(r28301, r28300, MPFR_RNDN);
        mpfr_sub(r28302, r28301, r28282, MPFR_RNDN);
        mpfr_sqrt(r28303, r28302, MPFR_RNDN);
        mpfr_sqrt(r28304, r28303, MPFR_RNDN);
        mpfr_div(r28305, r28298, r28304, MPFR_RNDN);
        mpfr_abs(r28306, r28281, MPFR_RNDN);
        mpfr_add(r28307, r28288, r28299, MPFR_RNDN);
        mpfr_sqrt(r28308, r28307, MPFR_RNDN);
        mpfr_sub(r28309, r28308, r28282, MPFR_RNDN);
        mpfr_sqrt(r28310, r28309, MPFR_RNDN);
        mpfr_sqrt(r28311, r28310, MPFR_RNDN);
        mpfr_div(r28312, r28306, r28311, MPFR_RNDN);
        mpfr_mul(r28313, r28305, r28312, MPFR_RNDN);
        mpfr_mul(r28314, r28287, r28313, MPFR_RNDN);
        ;
        mpfr_set_si(r28316, mpfr_cmp(r28284, r28315) <= 0, MPFR_RNDN);
        mpfr_add(r28317, r28282, r28282, MPFR_RNDN);
        mpfr_mul(r28318, r28280, r28317, MPFR_RNDN);
        mpfr_sqrt(r28319, r28318, MPFR_RNDN);
        mpfr_mul(r28320, r28287, r28319, MPFR_RNDN);
        ;
        mpfr_set_si(r28322, mpfr_cmp(r28284, r28321) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28323, r28301, MPFR_RNDN);
        mpfr_mul(r28324, r28323, r28323, MPFR_RNDN);
        mpfr_add(r28325, r28324, r28282, MPFR_RNDN);
        mpfr_mul(r28326, r28280, r28325, MPFR_RNDN);
        mpfr_sqrt(r28327, r28326, MPFR_RNDN);
        mpfr_mul(r28328, r28287, r28327, MPFR_RNDN);
        ;
        mpfr_set_si(r28330, mpfr_cmp(r28284, r28329) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28331, r28284, MPFR_RNDN);
        mpfr_mul(r28332, r28287, r28331, MPFR_RNDN);
        if (mpfr_get_si(r28330, MPFR_RNDN)) { mpfr_set(r28333, r28320, MPFR_RNDN); } else { mpfr_set(r28333, r28332, MPFR_RNDN); };
        if (mpfr_get_si(r28322, MPFR_RNDN)) { mpfr_set(r28334, r28328, MPFR_RNDN); } else { mpfr_set(r28334, r28333, MPFR_RNDN); };
        if (mpfr_get_si(r28316, MPFR_RNDN)) { mpfr_set(r28335, r28320, MPFR_RNDN); } else { mpfr_set(r28335, r28334, MPFR_RNDN); };
        if (mpfr_get_si(r28297, MPFR_RNDN)) { mpfr_set(r28336, r28314, MPFR_RNDN); } else { mpfr_set(r28336, r28335, MPFR_RNDN); };
        if (mpfr_get_si(r28286, MPFR_RNDN)) { mpfr_set(r28337, r28295, MPFR_RNDN); } else { mpfr_set(r28337, r28336, MPFR_RNDN); };
        return mpfr_get_d(r28337, MPFR_RNDN);
}

static mpfr_t r28338, r28339, r28340, r28341, r28342, r28343, r28344, r28345, r28346, r28347, r28348, r28349, r28350, r28351, r28352, r28353, r28354, r28355, r28356, r28357, r28358, r28359, r28360, r28361, r28362, r28363, r28364, r28365, r28366, r28367, r28368, r28369, r28370, r28371, r28372, r28373, r28374, r28375, r28376, r28377, r28378, r28379, r28380, r28381, r28382, r28383, r28384, r28385, r28386, r28387, r28388, r28389, r28390, r28391, r28392, r28393, r28394, r28395;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28338, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28339);
        mpfr_init(r28340);
        mpfr_init(r28341);
        mpfr_init(r28342);
        mpfr_init_set_str(r28343, "-7.995196897578388e+158", 10, MPFR_RNDN);
        mpfr_init(r28344);
        mpfr_init_set_str(r28345, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28346);
        mpfr_init(r28347);
        mpfr_init(r28348);
        mpfr_init_set_str(r28349, "-2", 10, MPFR_RNDN);
        mpfr_init(r28350);
        mpfr_init(r28351);
        mpfr_init(r28352);
        mpfr_init(r28353);
        mpfr_init_set_str(r28354, "1.039506264253617e-256", 10, MPFR_RNDN);
        mpfr_init(r28355);
        mpfr_init(r28356);
        mpfr_init(r28357);
        mpfr_init(r28358);
        mpfr_init(r28359);
        mpfr_init(r28360);
        mpfr_init(r28361);
        mpfr_init(r28362);
        mpfr_init(r28363);
        mpfr_init(r28364);
        mpfr_init(r28365);
        mpfr_init(r28366);
        mpfr_init(r28367);
        mpfr_init(r28368);
        mpfr_init(r28369);
        mpfr_init(r28370);
        mpfr_init(r28371);
        mpfr_init(r28372);
        mpfr_init_set_str(r28373, "1.1014827247221702e-160", 10, MPFR_RNDN);
        mpfr_init(r28374);
        mpfr_init(r28375);
        mpfr_init(r28376);
        mpfr_init(r28377);
        mpfr_init(r28378);
        mpfr_init_set_str(r28379, "5.777851359155679e+154", 10, MPFR_RNDN);
        mpfr_init(r28380);
        mpfr_init(r28381);
        mpfr_init(r28382);
        mpfr_init(r28383);
        mpfr_init(r28384);
        mpfr_init(r28385);
        mpfr_init(r28386);
        mpfr_init_set_str(r28387, "7.739821105146112e+232", 10, MPFR_RNDN);
        mpfr_init(r28388);
        mpfr_init(r28389);
        mpfr_init(r28390);
        mpfr_init(r28391);
        mpfr_init(r28392);
        mpfr_init(r28393);
        mpfr_init(r28394);
        mpfr_init(r28395);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r28339, im, MPFR_RNDN);
        mpfr_set_d(r28340, re, MPFR_RNDN);
        mpfr_add(r28341, r28339, r28340, MPFR_RNDN);
        mpfr_mul(r28342, r28338, r28341, MPFR_RNDN);
        ;
        mpfr_set_si(r28344, mpfr_cmp(r28342, r28343) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r28346, r28339, r28339, MPFR_RNDN);
        mpfr_mul(r28347, r28338, r28346, MPFR_RNDN);
        mpfr_sqrt(r28348, r28347, MPFR_RNDN);
        ;
        mpfr_mul(r28350, r28349, r28340, MPFR_RNDN);
        mpfr_sqrt(r28351, r28350, MPFR_RNDN);
        mpfr_div(r28352, r28348, r28351, MPFR_RNDN);
        mpfr_mul(r28353, r28345, r28352, MPFR_RNDN);
        ;
        mpfr_set_si(r28355, mpfr_cmp(r28342, r28354) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28356, r28338, MPFR_RNDN);
        mpfr_mul(r28357, r28340, r28340, MPFR_RNDN);
        mpfr_add(r28358, r28357, r28346, MPFR_RNDN);
        mpfr_sqrt(r28359, r28358, MPFR_RNDN);
        mpfr_sub(r28360, r28359, r28340, MPFR_RNDN);
        mpfr_sqrt(r28361, r28360, MPFR_RNDN);
        mpfr_sqrt(r28362, r28361, MPFR_RNDN);
        mpfr_div(r28363, r28356, r28362, MPFR_RNDN);
        mpfr_abs(r28364, r28339, MPFR_RNDN);
        mpfr_add(r28365, r28346, r28357, MPFR_RNDN);
        mpfr_sqrt(r28366, r28365, MPFR_RNDN);
        mpfr_sub(r28367, r28366, r28340, MPFR_RNDN);
        mpfr_sqrt(r28368, r28367, MPFR_RNDN);
        mpfr_sqrt(r28369, r28368, MPFR_RNDN);
        mpfr_div(r28370, r28364, r28369, MPFR_RNDN);
        mpfr_mul(r28371, r28363, r28370, MPFR_RNDN);
        mpfr_mul(r28372, r28345, r28371, MPFR_RNDN);
        ;
        mpfr_set_si(r28374, mpfr_cmp(r28342, r28373) <= 0, MPFR_RNDN);
        mpfr_add(r28375, r28340, r28340, MPFR_RNDN);
        mpfr_mul(r28376, r28338, r28375, MPFR_RNDN);
        mpfr_sqrt(r28377, r28376, MPFR_RNDN);
        mpfr_mul(r28378, r28345, r28377, MPFR_RNDN);
        ;
        mpfr_set_si(r28380, mpfr_cmp(r28342, r28379) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28381, r28359, MPFR_RNDN);
        mpfr_mul(r28382, r28381, r28381, MPFR_RNDN);
        mpfr_add(r28383, r28382, r28340, MPFR_RNDN);
        mpfr_mul(r28384, r28338, r28383, MPFR_RNDN);
        mpfr_sqrt(r28385, r28384, MPFR_RNDN);
        mpfr_mul(r28386, r28345, r28385, MPFR_RNDN);
        ;
        mpfr_set_si(r28388, mpfr_cmp(r28342, r28387) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28389, r28342, MPFR_RNDN);
        mpfr_mul(r28390, r28345, r28389, MPFR_RNDN);
        if (mpfr_get_si(r28388, MPFR_RNDN)) { mpfr_set(r28391, r28378, MPFR_RNDN); } else { mpfr_set(r28391, r28390, MPFR_RNDN); };
        if (mpfr_get_si(r28380, MPFR_RNDN)) { mpfr_set(r28392, r28386, MPFR_RNDN); } else { mpfr_set(r28392, r28391, MPFR_RNDN); };
        if (mpfr_get_si(r28374, MPFR_RNDN)) { mpfr_set(r28393, r28378, MPFR_RNDN); } else { mpfr_set(r28393, r28392, MPFR_RNDN); };
        if (mpfr_get_si(r28355, MPFR_RNDN)) { mpfr_set(r28394, r28372, MPFR_RNDN); } else { mpfr_set(r28394, r28393, MPFR_RNDN); };
        if (mpfr_get_si(r28344, MPFR_RNDN)) { mpfr_set(r28395, r28353, MPFR_RNDN); } else { mpfr_set(r28395, r28394, MPFR_RNDN); };
        return mpfr_get_d(r28395, MPFR_RNDN);
}

