#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 r28288 = 0.5;
        float r28289 = 2.0;
        float r28290 = re;
        float r28291 = r28290 * r28290;
        float r28292 = im;
        float r28293 = r28292 * r28292;
        float r28294 = r28291 + r28293;
        float r28295 = sqrt(r28294);
        float r28296 = r28295 + r28290;
        float r28297 = r28289 * r28296;
        float r28298 = sqrt(r28297);
        float r28299 = r28288 * r28298;
        return r28299;
}

double f_id(double re, double im) {
        double r28300 = 0.5;
        double r28301 = 2.0;
        double r28302 = re;
        double r28303 = r28302 * r28302;
        double r28304 = im;
        double r28305 = r28304 * r28304;
        double r28306 = r28303 + r28305;
        double r28307 = sqrt(r28306);
        double r28308 = r28307 + r28302;
        double r28309 = r28301 * r28308;
        double r28310 = sqrt(r28309);
        double r28311 = r28300 * r28310;
        return r28311;
}


double f_of(float re, float im) {
        float r28312 = 2.0;
        float r28313 = im;
        float r28314 = re;
        float r28315 = r28313 + r28314;
        float r28316 = r28312 * r28315;
        float r28317 = -4.5278661204861214e+154;
        bool r28318 = r28316 <= r28317;
        float r28319 = sqrt(r28312);
        float r28320 = fabs(r28313);
        float r28321 = r28319 * r28320;
        float r28322 = 0.5;
        float r28323 = r28321 * r28322;
        float r28324 = -r28314;
        float r28325 = r28324 - r28314;
        float r28326 = sqrt(r28325);
        float r28327 = r28323 / r28326;
        float r28328 = 2.1074456747018375e-261;
        bool r28329 = r28316 <= r28328;
        float r28330 = 1;
        float r28331 = r28314 * r28314;
        float r28332 = r28313 * r28313;
        float r28333 = r28331 + r28332;
        float r28334 = sqrt(r28333);
        float r28335 = r28334 - r28314;
        float r28336 = sqrt(r28335);
        float r28337 = r28330 / r28336;
        float r28338 = r28321 * r28337;
        float r28339 = r28322 * r28338;
        float r28340 = 4.622879207864321e-178;
        bool r28341 = r28316 <= r28340;
        float r28342 = sqrt(r28316);
        float r28343 = r28322 * r28342;
        float r28344 = 6.761216862074102e+155;
        bool r28345 = r28316 <= r28344;
        float r28346 = cbrt(r28334);
        float r28347 = r28346 * r28346;
        float r28348 = r28347 * r28346;
        float r28349 = r28348 + r28314;
        float r28350 = r28312 * r28349;
        float r28351 = sqrt(r28350);
        float r28352 = r28322 * r28351;
        float r28353 = 2.2123692519931332e+229;
        bool r28354 = r28316 <= r28353;
        float r28355 = r28314 + r28314;
        float r28356 = r28312 * r28355;
        float r28357 = sqrt(r28356);
        float r28358 = r28322 * r28357;
        float r28359 = r28354 ? r28343 : r28358;
        float r28360 = r28345 ? r28352 : r28359;
        float r28361 = r28341 ? r28343 : r28360;
        float r28362 = r28329 ? r28339 : r28361;
        float r28363 = r28318 ? r28327 : r28362;
        return r28363;
}

double f_od(double re, double im) {
        double r28364 = 2.0;
        double r28365 = im;
        double r28366 = re;
        double r28367 = r28365 + r28366;
        double r28368 = r28364 * r28367;
        double r28369 = -4.5278661204861214e+154;
        bool r28370 = r28368 <= r28369;
        double r28371 = sqrt(r28364);
        double r28372 = fabs(r28365);
        double r28373 = r28371 * r28372;
        double r28374 = 0.5;
        double r28375 = r28373 * r28374;
        double r28376 = -r28366;
        double r28377 = r28376 - r28366;
        double r28378 = sqrt(r28377);
        double r28379 = r28375 / r28378;
        double r28380 = 2.1074456747018375e-261;
        bool r28381 = r28368 <= r28380;
        double r28382 = 1;
        double r28383 = r28366 * r28366;
        double r28384 = r28365 * r28365;
        double r28385 = r28383 + r28384;
        double r28386 = sqrt(r28385);
        double r28387 = r28386 - r28366;
        double r28388 = sqrt(r28387);
        double r28389 = r28382 / r28388;
        double r28390 = r28373 * r28389;
        double r28391 = r28374 * r28390;
        double r28392 = 4.622879207864321e-178;
        bool r28393 = r28368 <= r28392;
        double r28394 = sqrt(r28368);
        double r28395 = r28374 * r28394;
        double r28396 = 6.761216862074102e+155;
        bool r28397 = r28368 <= r28396;
        double r28398 = cbrt(r28386);
        double r28399 = r28398 * r28398;
        double r28400 = r28399 * r28398;
        double r28401 = r28400 + r28366;
        double r28402 = r28364 * r28401;
        double r28403 = sqrt(r28402);
        double r28404 = r28374 * r28403;
        double r28405 = 2.2123692519931332e+229;
        bool r28406 = r28368 <= r28405;
        double r28407 = r28366 + r28366;
        double r28408 = r28364 * r28407;
        double r28409 = sqrt(r28408);
        double r28410 = r28374 * r28409;
        double r28411 = r28406 ? r28395 : r28410;
        double r28412 = r28397 ? r28404 : r28411;
        double r28413 = r28393 ? r28395 : r28412;
        double r28414 = r28381 ? r28391 : r28413;
        double r28415 = r28370 ? r28379 : r28414;
        return r28415;
}

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 r28416, r28417, r28418, r28419, r28420, r28421, r28422, r28423, r28424, r28425, r28426, r28427;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28416, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r28417, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28418);
        mpfr_init(r28419);
        mpfr_init(r28420);
        mpfr_init(r28421);
        mpfr_init(r28422);
        mpfr_init(r28423);
        mpfr_init(r28424);
        mpfr_init(r28425);
        mpfr_init(r28426);
        mpfr_init(r28427);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r28418, re, MPFR_RNDN);
        mpfr_mul(r28419, r28418, r28418, MPFR_RNDN);
        mpfr_set_d(r28420, im, MPFR_RNDN);
        mpfr_mul(r28421, r28420, r28420, MPFR_RNDN);
        mpfr_add(r28422, r28419, r28421, MPFR_RNDN);
        mpfr_sqrt(r28423, r28422, MPFR_RNDN);
        mpfr_add(r28424, r28423, r28418, MPFR_RNDN);
        mpfr_mul(r28425, r28417, r28424, MPFR_RNDN);
        mpfr_sqrt(r28426, r28425, MPFR_RNDN);
        mpfr_mul(r28427, r28416, r28426, MPFR_RNDN);
        return mpfr_get_d(r28427, MPFR_RNDN);
}

static mpfr_t r28428, r28429, r28430, r28431, r28432, r28433, r28434, r28435, r28436, r28437, r28438, r28439, r28440, r28441, r28442, r28443, r28444, r28445, r28446, r28447, r28448, r28449, r28450, r28451, r28452, r28453, r28454, r28455, r28456, r28457, r28458, r28459, r28460, r28461, r28462, r28463, r28464, r28465, r28466, r28467, r28468, r28469, r28470, r28471, r28472, r28473, r28474, r28475, r28476, r28477, r28478, r28479;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28428, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28429);
        mpfr_init(r28430);
        mpfr_init(r28431);
        mpfr_init(r28432);
        mpfr_init_set_str(r28433, "-4.5278661204861214e+154", 10, MPFR_RNDN);
        mpfr_init(r28434);
        mpfr_init(r28435);
        mpfr_init(r28436);
        mpfr_init(r28437);
        mpfr_init_set_str(r28438, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28439);
        mpfr_init(r28440);
        mpfr_init(r28441);
        mpfr_init(r28442);
        mpfr_init(r28443);
        mpfr_init_set_str(r28444, "2.1074456747018375e-261", 10, MPFR_RNDN);
        mpfr_init(r28445);
        mpfr_init_set_str(r28446, "1", 10, MPFR_RNDN);
        mpfr_init(r28447);
        mpfr_init(r28448);
        mpfr_init(r28449);
        mpfr_init(r28450);
        mpfr_init(r28451);
        mpfr_init(r28452);
        mpfr_init(r28453);
        mpfr_init(r28454);
        mpfr_init(r28455);
        mpfr_init_set_str(r28456, "4.622879207864321e-178", 10, MPFR_RNDN);
        mpfr_init(r28457);
        mpfr_init(r28458);
        mpfr_init(r28459);
        mpfr_init_set_str(r28460, "6.761216862074102e+155", 10, MPFR_RNDN);
        mpfr_init(r28461);
        mpfr_init(r28462);
        mpfr_init(r28463);
        mpfr_init(r28464);
        mpfr_init(r28465);
        mpfr_init(r28466);
        mpfr_init(r28467);
        mpfr_init(r28468);
        mpfr_init_set_str(r28469, "2.2123692519931332e+229", 10, MPFR_RNDN);
        mpfr_init(r28470);
        mpfr_init(r28471);
        mpfr_init(r28472);
        mpfr_init(r28473);
        mpfr_init(r28474);
        mpfr_init(r28475);
        mpfr_init(r28476);
        mpfr_init(r28477);
        mpfr_init(r28478);
        mpfr_init(r28479);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r28429, im, MPFR_RNDN);
        mpfr_set_d(r28430, re, MPFR_RNDN);
        mpfr_add(r28431, r28429, r28430, MPFR_RNDN);
        mpfr_mul(r28432, r28428, r28431, MPFR_RNDN);
        ;
        mpfr_set_si(r28434, mpfr_cmp(r28432, r28433) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28435, r28428, MPFR_RNDN);
        mpfr_abs(r28436, r28429, MPFR_RNDN);
        mpfr_mul(r28437, r28435, r28436, MPFR_RNDN);
        ;
        mpfr_mul(r28439, r28437, r28438, MPFR_RNDN);
        mpfr_neg(r28440, r28430, MPFR_RNDN);
        mpfr_sub(r28441, r28440, r28430, MPFR_RNDN);
        mpfr_sqrt(r28442, r28441, MPFR_RNDN);
        mpfr_div(r28443, r28439, r28442, MPFR_RNDN);
        ;
        mpfr_set_si(r28445, mpfr_cmp(r28432, r28444) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r28447, r28430, r28430, MPFR_RNDN);
        mpfr_mul(r28448, r28429, r28429, MPFR_RNDN);
        mpfr_add(r28449, r28447, r28448, MPFR_RNDN);
        mpfr_sqrt(r28450, r28449, MPFR_RNDN);
        mpfr_sub(r28451, r28450, r28430, MPFR_RNDN);
        mpfr_sqrt(r28452, r28451, MPFR_RNDN);
        mpfr_div(r28453, r28446, r28452, MPFR_RNDN);
        mpfr_mul(r28454, r28437, r28453, MPFR_RNDN);
        mpfr_mul(r28455, r28438, r28454, MPFR_RNDN);
        ;
        mpfr_set_si(r28457, mpfr_cmp(r28432, r28456) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28458, r28432, MPFR_RNDN);
        mpfr_mul(r28459, r28438, r28458, MPFR_RNDN);
        ;
        mpfr_set_si(r28461, mpfr_cmp(r28432, r28460) <= 0, MPFR_RNDN);
        mpfr_cbrt(r28462, r28450, MPFR_RNDN);
        mpfr_mul(r28463, r28462, r28462, MPFR_RNDN);
        mpfr_mul(r28464, r28463, r28462, MPFR_RNDN);
        mpfr_add(r28465, r28464, r28430, MPFR_RNDN);
        mpfr_mul(r28466, r28428, r28465, MPFR_RNDN);
        mpfr_sqrt(r28467, r28466, MPFR_RNDN);
        mpfr_mul(r28468, r28438, r28467, MPFR_RNDN);
        ;
        mpfr_set_si(r28470, mpfr_cmp(r28432, r28469) <= 0, MPFR_RNDN);
        mpfr_add(r28471, r28430, r28430, MPFR_RNDN);
        mpfr_mul(r28472, r28428, r28471, MPFR_RNDN);
        mpfr_sqrt(r28473, r28472, MPFR_RNDN);
        mpfr_mul(r28474, r28438, r28473, MPFR_RNDN);
        if (mpfr_get_si(r28470, MPFR_RNDN)) { mpfr_set(r28475, r28459, MPFR_RNDN); } else { mpfr_set(r28475, r28474, MPFR_RNDN); };
        if (mpfr_get_si(r28461, MPFR_RNDN)) { mpfr_set(r28476, r28468, MPFR_RNDN); } else { mpfr_set(r28476, r28475, MPFR_RNDN); };
        if (mpfr_get_si(r28457, MPFR_RNDN)) { mpfr_set(r28477, r28459, MPFR_RNDN); } else { mpfr_set(r28477, r28476, MPFR_RNDN); };
        if (mpfr_get_si(r28445, MPFR_RNDN)) { mpfr_set(r28478, r28455, MPFR_RNDN); } else { mpfr_set(r28478, r28477, MPFR_RNDN); };
        if (mpfr_get_si(r28434, MPFR_RNDN)) { mpfr_set(r28479, r28443, MPFR_RNDN); } else { mpfr_set(r28479, r28478, MPFR_RNDN); };
        return mpfr_get_d(r28479, MPFR_RNDN);
}

static mpfr_t r28480, r28481, r28482, r28483, r28484, r28485, r28486, r28487, r28488, r28489, r28490, r28491, r28492, r28493, r28494, r28495, r28496, r28497, r28498, r28499, r28500, r28501, r28502, r28503, r28504, r28505, r28506, r28507, r28508, r28509, r28510, r28511, r28512, r28513, r28514, r28515, r28516, r28517, r28518, r28519, r28520, r28521, r28522, r28523, r28524, r28525, r28526, r28527, r28528, r28529, r28530, r28531;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28480, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28481);
        mpfr_init(r28482);
        mpfr_init(r28483);
        mpfr_init(r28484);
        mpfr_init_set_str(r28485, "-4.5278661204861214e+154", 10, MPFR_RNDN);
        mpfr_init(r28486);
        mpfr_init(r28487);
        mpfr_init(r28488);
        mpfr_init(r28489);
        mpfr_init_set_str(r28490, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28491);
        mpfr_init(r28492);
        mpfr_init(r28493);
        mpfr_init(r28494);
        mpfr_init(r28495);
        mpfr_init_set_str(r28496, "2.1074456747018375e-261", 10, MPFR_RNDN);
        mpfr_init(r28497);
        mpfr_init_set_str(r28498, "1", 10, MPFR_RNDN);
        mpfr_init(r28499);
        mpfr_init(r28500);
        mpfr_init(r28501);
        mpfr_init(r28502);
        mpfr_init(r28503);
        mpfr_init(r28504);
        mpfr_init(r28505);
        mpfr_init(r28506);
        mpfr_init(r28507);
        mpfr_init_set_str(r28508, "4.622879207864321e-178", 10, MPFR_RNDN);
        mpfr_init(r28509);
        mpfr_init(r28510);
        mpfr_init(r28511);
        mpfr_init_set_str(r28512, "6.761216862074102e+155", 10, MPFR_RNDN);
        mpfr_init(r28513);
        mpfr_init(r28514);
        mpfr_init(r28515);
        mpfr_init(r28516);
        mpfr_init(r28517);
        mpfr_init(r28518);
        mpfr_init(r28519);
        mpfr_init(r28520);
        mpfr_init_set_str(r28521, "2.2123692519931332e+229", 10, MPFR_RNDN);
        mpfr_init(r28522);
        mpfr_init(r28523);
        mpfr_init(r28524);
        mpfr_init(r28525);
        mpfr_init(r28526);
        mpfr_init(r28527);
        mpfr_init(r28528);
        mpfr_init(r28529);
        mpfr_init(r28530);
        mpfr_init(r28531);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r28481, im, MPFR_RNDN);
        mpfr_set_d(r28482, re, MPFR_RNDN);
        mpfr_add(r28483, r28481, r28482, MPFR_RNDN);
        mpfr_mul(r28484, r28480, r28483, MPFR_RNDN);
        ;
        mpfr_set_si(r28486, mpfr_cmp(r28484, r28485) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28487, r28480, MPFR_RNDN);
        mpfr_abs(r28488, r28481, MPFR_RNDN);
        mpfr_mul(r28489, r28487, r28488, MPFR_RNDN);
        ;
        mpfr_mul(r28491, r28489, r28490, MPFR_RNDN);
        mpfr_neg(r28492, r28482, MPFR_RNDN);
        mpfr_sub(r28493, r28492, r28482, MPFR_RNDN);
        mpfr_sqrt(r28494, r28493, MPFR_RNDN);
        mpfr_div(r28495, r28491, r28494, MPFR_RNDN);
        ;
        mpfr_set_si(r28497, mpfr_cmp(r28484, r28496) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r28499, r28482, r28482, MPFR_RNDN);
        mpfr_mul(r28500, r28481, r28481, MPFR_RNDN);
        mpfr_add(r28501, r28499, r28500, MPFR_RNDN);
        mpfr_sqrt(r28502, r28501, MPFR_RNDN);
        mpfr_sub(r28503, r28502, r28482, MPFR_RNDN);
        mpfr_sqrt(r28504, r28503, MPFR_RNDN);
        mpfr_div(r28505, r28498, r28504, MPFR_RNDN);
        mpfr_mul(r28506, r28489, r28505, MPFR_RNDN);
        mpfr_mul(r28507, r28490, r28506, MPFR_RNDN);
        ;
        mpfr_set_si(r28509, mpfr_cmp(r28484, r28508) <= 0, MPFR_RNDN);
        mpfr_sqrt(r28510, r28484, MPFR_RNDN);
        mpfr_mul(r28511, r28490, r28510, MPFR_RNDN);
        ;
        mpfr_set_si(r28513, mpfr_cmp(r28484, r28512) <= 0, MPFR_RNDN);
        mpfr_cbrt(r28514, r28502, MPFR_RNDN);
        mpfr_mul(r28515, r28514, r28514, MPFR_RNDN);
        mpfr_mul(r28516, r28515, r28514, MPFR_RNDN);
        mpfr_add(r28517, r28516, r28482, MPFR_RNDN);
        mpfr_mul(r28518, r28480, r28517, MPFR_RNDN);
        mpfr_sqrt(r28519, r28518, MPFR_RNDN);
        mpfr_mul(r28520, r28490, r28519, MPFR_RNDN);
        ;
        mpfr_set_si(r28522, mpfr_cmp(r28484, r28521) <= 0, MPFR_RNDN);
        mpfr_add(r28523, r28482, r28482, MPFR_RNDN);
        mpfr_mul(r28524, r28480, r28523, MPFR_RNDN);
        mpfr_sqrt(r28525, r28524, MPFR_RNDN);
        mpfr_mul(r28526, r28490, r28525, MPFR_RNDN);
        if (mpfr_get_si(r28522, MPFR_RNDN)) { mpfr_set(r28527, r28511, MPFR_RNDN); } else { mpfr_set(r28527, r28526, MPFR_RNDN); };
        if (mpfr_get_si(r28513, MPFR_RNDN)) { mpfr_set(r28528, r28520, MPFR_RNDN); } else { mpfr_set(r28528, r28527, MPFR_RNDN); };
        if (mpfr_get_si(r28509, MPFR_RNDN)) { mpfr_set(r28529, r28511, MPFR_RNDN); } else { mpfr_set(r28529, r28528, MPFR_RNDN); };
        if (mpfr_get_si(r28497, MPFR_RNDN)) { mpfr_set(r28530, r28507, MPFR_RNDN); } else { mpfr_set(r28530, r28529, MPFR_RNDN); };
        if (mpfr_get_si(r28486, MPFR_RNDN)) { mpfr_set(r28531, r28495, MPFR_RNDN); } else { mpfr_set(r28531, r28530, MPFR_RNDN); };
        return mpfr_get_d(r28531, MPFR_RNDN);
}

