#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 r20183 = 0.5f;
        float r20184 = 2.0f;
        float r20185 = re;
        float r20186 = r20185 * r20185;
        float r20187 = im;
        float r20188 = r20187 * r20187;
        float r20189 = r20186 + r20188;
        float r20190 = sqrt(r20189);
        float r20191 = r20190 + r20185;
        float r20192 = r20184 * r20191;
        float r20193 = sqrt(r20192);
        float r20194 = r20183 * r20193;
        return r20194;
}

double f_id(double re, double im) {
        double r20195 = 0.5;
        double r20196 = 2.0;
        double r20197 = re;
        double r20198 = r20197 * r20197;
        double r20199 = im;
        double r20200 = r20199 * r20199;
        double r20201 = r20198 + r20200;
        double r20202 = sqrt(r20201);
        double r20203 = r20202 + r20197;
        double r20204 = r20196 * r20203;
        double r20205 = sqrt(r20204);
        double r20206 = r20195 * r20205;
        return r20206;
}


double f_of(float re, float im) {
        float r20207 = re;
        float r20208 = -9.965948042809399e+153f;
        bool r20209 = r20207 <= r20208;
        float r20210 = 0.5f;
        float r20211 = im;
        float r20212 = r20211 * r20211;
        float r20213 = 2.0f;
        float r20214 = r20212 * r20213;
        float r20215 = sqrt(r20214);
        float r20216 = r20210 * r20215;
        float r20217 = -r20207;
        float r20218 = r20217 - r20207;
        float r20219 = sqrt(r20218);
        float r20220 = r20216 / r20219;
        float r20221 = -1.0527568012471275e-305f;
        bool r20222 = r20207 <= r20221;
        float r20223 = r20207 * r20207;
        float r20224 = r20223 + r20212;
        float r20225 = sqrt(r20224);
        float r20226 = r20225 - r20207;
        float r20227 = r20212 / r20226;
        float r20228 = r20213 * r20227;
        float r20229 = sqrt(r20228);
        float r20230 = r20210 * r20229;
        float r20231 = 2.743020608759423e-240f;
        bool r20232 = r20207 <= r20231;
        float r20233 = r20211 + r20207;
        float r20234 = r20213 * r20233;
        float r20235 = sqrt(r20234);
        float r20236 = r20210 * r20235;
        float r20237 = 7.720496126429738e+93f;
        bool r20238 = r20207 <= r20237;
        float r20239 = sqrt(r20225);
        float r20240 = r20239 * r20239;
        float r20241 = r20240 + r20207;
        float r20242 = r20213 * r20241;
        float r20243 = sqrt(r20242);
        float r20244 = r20210 * r20243;
        float r20245 = r20207 + r20207;
        float r20246 = r20213 * r20245;
        float r20247 = sqrt(r20246);
        float r20248 = r20210 * r20247;
        float r20249 = r20238 ? r20244 : r20248;
        float r20250 = r20232 ? r20236 : r20249;
        float r20251 = r20222 ? r20230 : r20250;
        float r20252 = r20209 ? r20220 : r20251;
        return r20252;
}

double f_od(double re, double im) {
        double r20253 = re;
        double r20254 = -9.965948042809399e+153;
        bool r20255 = r20253 <= r20254;
        double r20256 = 0.5;
        double r20257 = im;
        double r20258 = r20257 * r20257;
        double r20259 = 2.0;
        double r20260 = r20258 * r20259;
        double r20261 = sqrt(r20260);
        double r20262 = r20256 * r20261;
        double r20263 = -r20253;
        double r20264 = r20263 - r20253;
        double r20265 = sqrt(r20264);
        double r20266 = r20262 / r20265;
        double r20267 = -1.0527568012471275e-305;
        bool r20268 = r20253 <= r20267;
        double r20269 = r20253 * r20253;
        double r20270 = r20269 + r20258;
        double r20271 = sqrt(r20270);
        double r20272 = r20271 - r20253;
        double r20273 = r20258 / r20272;
        double r20274 = r20259 * r20273;
        double r20275 = sqrt(r20274);
        double r20276 = r20256 * r20275;
        double r20277 = 2.743020608759423e-240;
        bool r20278 = r20253 <= r20277;
        double r20279 = r20257 + r20253;
        double r20280 = r20259 * r20279;
        double r20281 = sqrt(r20280);
        double r20282 = r20256 * r20281;
        double r20283 = 7.720496126429738e+93;
        bool r20284 = r20253 <= r20283;
        double r20285 = sqrt(r20271);
        double r20286 = r20285 * r20285;
        double r20287 = r20286 + r20253;
        double r20288 = r20259 * r20287;
        double r20289 = sqrt(r20288);
        double r20290 = r20256 * r20289;
        double r20291 = r20253 + r20253;
        double r20292 = r20259 * r20291;
        double r20293 = sqrt(r20292);
        double r20294 = r20256 * r20293;
        double r20295 = r20284 ? r20290 : r20294;
        double r20296 = r20278 ? r20282 : r20295;
        double r20297 = r20268 ? r20276 : r20296;
        double r20298 = r20255 ? r20266 : r20297;
        return r20298;
}

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 r20299, r20300, r20301, r20302, r20303, r20304, r20305, r20306, r20307, r20308, r20309, r20310;

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

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r20301, re, MPFR_RNDN);
        mpfr_mul(r20302, r20301, r20301, MPFR_RNDN);
        mpfr_set_d(r20303, im, MPFR_RNDN);
        mpfr_mul(r20304, r20303, r20303, MPFR_RNDN);
        mpfr_add(r20305, r20302, r20304, MPFR_RNDN);
        mpfr_sqrt(r20306, r20305, MPFR_RNDN);
        mpfr_add(r20307, r20306, r20301, MPFR_RNDN);
        mpfr_mul(r20308, r20300, r20307, MPFR_RNDN);
        mpfr_sqrt(r20309, r20308, MPFR_RNDN);
        mpfr_mul(r20310, r20299, r20309, MPFR_RNDN);
        return mpfr_get_d(r20310, MPFR_RNDN);
}

static mpfr_t r20311, r20312, r20313, r20314, r20315, r20316, r20317, r20318, r20319, r20320, r20321, r20322, r20323, r20324, r20325, r20326, r20327, r20328, r20329, r20330, r20331, r20332, r20333, r20334, r20335, r20336, r20337, r20338, r20339, r20340, r20341, r20342, r20343, r20344, r20345, r20346, r20347, r20348, r20349, r20350, r20351, r20352, r20353, r20354, r20355, r20356;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20311);
        mpfr_init_set_str(r20312, "-9.965948042809399e+153", 10, MPFR_RNDN);
        mpfr_init(r20313);
        mpfr_init_set_str(r20314, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20315);
        mpfr_init(r20316);
        mpfr_init_set_str(r20317, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20318);
        mpfr_init(r20319);
        mpfr_init(r20320);
        mpfr_init(r20321);
        mpfr_init(r20322);
        mpfr_init(r20323);
        mpfr_init(r20324);
        mpfr_init_set_str(r20325, "-1.0527568012471275e-305", 10, MPFR_RNDN);
        mpfr_init(r20326);
        mpfr_init(r20327);
        mpfr_init(r20328);
        mpfr_init(r20329);
        mpfr_init(r20330);
        mpfr_init(r20331);
        mpfr_init(r20332);
        mpfr_init(r20333);
        mpfr_init(r20334);
        mpfr_init_set_str(r20335, "2.743020608759423e-240", 10, MPFR_RNDN);
        mpfr_init(r20336);
        mpfr_init(r20337);
        mpfr_init(r20338);
        mpfr_init(r20339);
        mpfr_init(r20340);
        mpfr_init_set_str(r20341, "7.720496126429738e+93", 10, MPFR_RNDN);
        mpfr_init(r20342);
        mpfr_init(r20343);
        mpfr_init(r20344);
        mpfr_init(r20345);
        mpfr_init(r20346);
        mpfr_init(r20347);
        mpfr_init(r20348);
        mpfr_init(r20349);
        mpfr_init(r20350);
        mpfr_init(r20351);
        mpfr_init(r20352);
        mpfr_init(r20353);
        mpfr_init(r20354);
        mpfr_init(r20355);
        mpfr_init(r20356);
}

double f_fm(double re, double im) {
        mpfr_set_d(r20311, re, MPFR_RNDN);
        ;
        mpfr_set_si(r20313, mpfr_cmp(r20311, r20312) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20315, im, MPFR_RNDN);
        mpfr_mul(r20316, r20315, r20315, MPFR_RNDN);
        ;
        mpfr_mul(r20318, r20316, r20317, MPFR_RNDN);
        mpfr_sqrt(r20319, r20318, MPFR_RNDN);
        mpfr_mul(r20320, r20314, r20319, MPFR_RNDN);
        mpfr_neg(r20321, r20311, MPFR_RNDN);
        mpfr_sub(r20322, r20321, r20311, MPFR_RNDN);
        mpfr_sqrt(r20323, r20322, MPFR_RNDN);
        mpfr_div(r20324, r20320, r20323, MPFR_RNDN);
        ;
        mpfr_set_si(r20326, mpfr_cmp(r20311, r20325) <= 0, MPFR_RNDN);
        mpfr_sqr(r20327, r20311, MPFR_RNDN);
        mpfr_add(r20328, r20327, r20316, MPFR_RNDN);
        mpfr_sqrt(r20329, r20328, MPFR_RNDN);
        mpfr_sub(r20330, r20329, r20311, MPFR_RNDN);
        mpfr_div(r20331, r20316, r20330, MPFR_RNDN);
        mpfr_mul(r20332, r20317, r20331, MPFR_RNDN);
        mpfr_sqrt(r20333, r20332, MPFR_RNDN);
        mpfr_mul(r20334, r20314, r20333, MPFR_RNDN);
        ;
        mpfr_set_si(r20336, mpfr_cmp(r20311, r20335) <= 0, MPFR_RNDN);
        mpfr_add(r20337, r20315, r20311, MPFR_RNDN);
        mpfr_mul(r20338, r20317, r20337, MPFR_RNDN);
        mpfr_sqrt(r20339, r20338, MPFR_RNDN);
        mpfr_mul(r20340, r20314, r20339, MPFR_RNDN);
        ;
        mpfr_set_si(r20342, mpfr_cmp(r20311, r20341) <= 0, MPFR_RNDN);
        mpfr_sqrt(r20343, r20329, MPFR_RNDN);
        mpfr_sqr(r20344, r20343, MPFR_RNDN);
        mpfr_add(r20345, r20344, r20311, MPFR_RNDN);
        mpfr_mul(r20346, r20317, r20345, MPFR_RNDN);
        mpfr_sqrt(r20347, r20346, MPFR_RNDN);
        mpfr_mul(r20348, r20314, r20347, MPFR_RNDN);
        mpfr_add(r20349, r20311, r20311, MPFR_RNDN);
        mpfr_mul(r20350, r20317, r20349, MPFR_RNDN);
        mpfr_sqrt(r20351, r20350, MPFR_RNDN);
        mpfr_mul(r20352, r20314, r20351, MPFR_RNDN);
        if (mpfr_get_si(r20342, MPFR_RNDN)) { mpfr_set(r20353, r20348, MPFR_RNDN); } else { mpfr_set(r20353, r20352, MPFR_RNDN); };
        if (mpfr_get_si(r20336, MPFR_RNDN)) { mpfr_set(r20354, r20340, MPFR_RNDN); } else { mpfr_set(r20354, r20353, MPFR_RNDN); };
        if (mpfr_get_si(r20326, MPFR_RNDN)) { mpfr_set(r20355, r20334, MPFR_RNDN); } else { mpfr_set(r20355, r20354, MPFR_RNDN); };
        if (mpfr_get_si(r20313, MPFR_RNDN)) { mpfr_set(r20356, r20324, MPFR_RNDN); } else { mpfr_set(r20356, r20355, MPFR_RNDN); };
        return mpfr_get_d(r20356, MPFR_RNDN);
}

static mpfr_t r20357, r20358, r20359, r20360, r20361, r20362, r20363, r20364, r20365, r20366, r20367, r20368, r20369, r20370, r20371, r20372, r20373, r20374, r20375, r20376, r20377, r20378, r20379, r20380, r20381, r20382, r20383, r20384, r20385, r20386, r20387, r20388, r20389, r20390, r20391, r20392, r20393, r20394, r20395, r20396, r20397, r20398, r20399, r20400, r20401, r20402;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20357);
        mpfr_init_set_str(r20358, "-9.965948042809399e+153", 10, MPFR_RNDN);
        mpfr_init(r20359);
        mpfr_init_set_str(r20360, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20361);
        mpfr_init(r20362);
        mpfr_init_set_str(r20363, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20364);
        mpfr_init(r20365);
        mpfr_init(r20366);
        mpfr_init(r20367);
        mpfr_init(r20368);
        mpfr_init(r20369);
        mpfr_init(r20370);
        mpfr_init_set_str(r20371, "-1.0527568012471275e-305", 10, MPFR_RNDN);
        mpfr_init(r20372);
        mpfr_init(r20373);
        mpfr_init(r20374);
        mpfr_init(r20375);
        mpfr_init(r20376);
        mpfr_init(r20377);
        mpfr_init(r20378);
        mpfr_init(r20379);
        mpfr_init(r20380);
        mpfr_init_set_str(r20381, "2.743020608759423e-240", 10, MPFR_RNDN);
        mpfr_init(r20382);
        mpfr_init(r20383);
        mpfr_init(r20384);
        mpfr_init(r20385);
        mpfr_init(r20386);
        mpfr_init_set_str(r20387, "7.720496126429738e+93", 10, MPFR_RNDN);
        mpfr_init(r20388);
        mpfr_init(r20389);
        mpfr_init(r20390);
        mpfr_init(r20391);
        mpfr_init(r20392);
        mpfr_init(r20393);
        mpfr_init(r20394);
        mpfr_init(r20395);
        mpfr_init(r20396);
        mpfr_init(r20397);
        mpfr_init(r20398);
        mpfr_init(r20399);
        mpfr_init(r20400);
        mpfr_init(r20401);
        mpfr_init(r20402);
}

double f_dm(double re, double im) {
        mpfr_set_d(r20357, re, MPFR_RNDN);
        ;
        mpfr_set_si(r20359, mpfr_cmp(r20357, r20358) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20361, im, MPFR_RNDN);
        mpfr_mul(r20362, r20361, r20361, MPFR_RNDN);
        ;
        mpfr_mul(r20364, r20362, r20363, MPFR_RNDN);
        mpfr_sqrt(r20365, r20364, MPFR_RNDN);
        mpfr_mul(r20366, r20360, r20365, MPFR_RNDN);
        mpfr_neg(r20367, r20357, MPFR_RNDN);
        mpfr_sub(r20368, r20367, r20357, MPFR_RNDN);
        mpfr_sqrt(r20369, r20368, MPFR_RNDN);
        mpfr_div(r20370, r20366, r20369, MPFR_RNDN);
        ;
        mpfr_set_si(r20372, mpfr_cmp(r20357, r20371) <= 0, MPFR_RNDN);
        mpfr_sqr(r20373, r20357, MPFR_RNDN);
        mpfr_add(r20374, r20373, r20362, MPFR_RNDN);
        mpfr_sqrt(r20375, r20374, MPFR_RNDN);
        mpfr_sub(r20376, r20375, r20357, MPFR_RNDN);
        mpfr_div(r20377, r20362, r20376, MPFR_RNDN);
        mpfr_mul(r20378, r20363, r20377, MPFR_RNDN);
        mpfr_sqrt(r20379, r20378, MPFR_RNDN);
        mpfr_mul(r20380, r20360, r20379, MPFR_RNDN);
        ;
        mpfr_set_si(r20382, mpfr_cmp(r20357, r20381) <= 0, MPFR_RNDN);
        mpfr_add(r20383, r20361, r20357, MPFR_RNDN);
        mpfr_mul(r20384, r20363, r20383, MPFR_RNDN);
        mpfr_sqrt(r20385, r20384, MPFR_RNDN);
        mpfr_mul(r20386, r20360, r20385, MPFR_RNDN);
        ;
        mpfr_set_si(r20388, mpfr_cmp(r20357, r20387) <= 0, MPFR_RNDN);
        mpfr_sqrt(r20389, r20375, MPFR_RNDN);
        mpfr_sqr(r20390, r20389, MPFR_RNDN);
        mpfr_add(r20391, r20390, r20357, MPFR_RNDN);
        mpfr_mul(r20392, r20363, r20391, MPFR_RNDN);
        mpfr_sqrt(r20393, r20392, MPFR_RNDN);
        mpfr_mul(r20394, r20360, r20393, MPFR_RNDN);
        mpfr_add(r20395, r20357, r20357, MPFR_RNDN);
        mpfr_mul(r20396, r20363, r20395, MPFR_RNDN);
        mpfr_sqrt(r20397, r20396, MPFR_RNDN);
        mpfr_mul(r20398, r20360, r20397, MPFR_RNDN);
        if (mpfr_get_si(r20388, MPFR_RNDN)) { mpfr_set(r20399, r20394, MPFR_RNDN); } else { mpfr_set(r20399, r20398, MPFR_RNDN); };
        if (mpfr_get_si(r20382, MPFR_RNDN)) { mpfr_set(r20400, r20386, MPFR_RNDN); } else { mpfr_set(r20400, r20399, MPFR_RNDN); };
        if (mpfr_get_si(r20372, MPFR_RNDN)) { mpfr_set(r20401, r20380, MPFR_RNDN); } else { mpfr_set(r20401, r20400, MPFR_RNDN); };
        if (mpfr_get_si(r20359, MPFR_RNDN)) { mpfr_set(r20402, r20370, MPFR_RNDN); } else { mpfr_set(r20402, r20401, MPFR_RNDN); };
        return mpfr_get_d(r20402, MPFR_RNDN);
}

