#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 r34224 = 0.5f;
        float r34225 = 2.0f;
        float r34226 = re;
        float r34227 = r34226 * r34226;
        float r34228 = im;
        float r34229 = r34228 * r34228;
        float r34230 = r34227 + r34229;
        float r34231 = sqrt(r34230);
        float r34232 = r34231 + r34226;
        float r34233 = r34225 * r34232;
        float r34234 = sqrt(r34233);
        float r34235 = r34224 * r34234;
        return r34235;
}

double f_id(double re, double im) {
        double r34236 = 0.5;
        double r34237 = 2.0;
        double r34238 = re;
        double r34239 = r34238 * r34238;
        double r34240 = im;
        double r34241 = r34240 * r34240;
        double r34242 = r34239 + r34241;
        double r34243 = sqrt(r34242);
        double r34244 = r34243 + r34238;
        double r34245 = r34237 * r34244;
        double r34246 = sqrt(r34245);
        double r34247 = r34236 * r34246;
        return r34247;
}


double f_of(float re, float im) {
        float r34248 = im;
        float r34249 = -2.422222280270566e+26f;
        bool r34250 = r34248 <= r34249;
        float r34251 = 2.0f;
        float r34252 = re;
        float r34253 = r34252 - r34248;
        float r34254 = r34251 * r34253;
        float r34255 = sqrt(r34254);
        float r34256 = 0.5f;
        float r34257 = r34255 * r34256;
        float r34258 = -2.082287675352382e-145f;
        bool r34259 = r34248 <= r34258;
        float r34260 = r34248 * r34248;
        float r34261 = r34260 * r34251;
        float r34262 = sqrt(r34261);
        float r34263 = r34252 * r34252;
        float r34264 = r34263 + r34260;
        float r34265 = sqrt(r34264);
        float r34266 = r34265 - r34252;
        float r34267 = sqrt(r34266);
        float r34268 = r34262 / r34267;
        float r34269 = r34268 * r34256;
        float r34270 = 3.244880154522944e-152f;
        bool r34271 = r34248 <= r34270;
        float r34272 = 2.0f;
        float r34273 = r34272 * r34252;
        float r34274 = r34251 * r34273;
        float r34275 = sqrt(r34274);
        float r34276 = r34275 * r34256;
        float r34277 = 4.692828868299432e+91f;
        bool r34278 = r34248 <= r34277;
        float r34279 = r34248 * r34248;
        float r34280 = r34279 + r34263;
        float r34281 = sqrt(r34280);
        float r34282 = r34281 + r34252;
        float r34283 = r34251 * r34282;
        float r34284 = sqrt(r34283);
        float r34285 = r34284 * r34256;
        float r34286 = r34248 + r34252;
        float r34287 = r34251 * r34286;
        float r34288 = sqrt(r34287);
        float r34289 = r34288 * r34256;
        float r34290 = r34278 ? r34285 : r34289;
        float r34291 = r34271 ? r34276 : r34290;
        float r34292 = r34259 ? r34269 : r34291;
        float r34293 = r34250 ? r34257 : r34292;
        return r34293;
}

double f_od(double re, double im) {
        double r34294 = im;
        double r34295 = -2.422222280270566e+26;
        bool r34296 = r34294 <= r34295;
        double r34297 = 2.0;
        double r34298 = re;
        double r34299 = r34298 - r34294;
        double r34300 = r34297 * r34299;
        double r34301 = sqrt(r34300);
        double r34302 = 0.5;
        double r34303 = r34301 * r34302;
        double r34304 = -2.082287675352382e-145;
        bool r34305 = r34294 <= r34304;
        double r34306 = r34294 * r34294;
        double r34307 = r34306 * r34297;
        double r34308 = sqrt(r34307);
        double r34309 = r34298 * r34298;
        double r34310 = r34309 + r34306;
        double r34311 = sqrt(r34310);
        double r34312 = r34311 - r34298;
        double r34313 = sqrt(r34312);
        double r34314 = r34308 / r34313;
        double r34315 = r34314 * r34302;
        double r34316 = 3.244880154522944e-152;
        bool r34317 = r34294 <= r34316;
        double r34318 = 2.0;
        double r34319 = r34318 * r34298;
        double r34320 = r34297 * r34319;
        double r34321 = sqrt(r34320);
        double r34322 = r34321 * r34302;
        double r34323 = 4.692828868299432e+91;
        bool r34324 = r34294 <= r34323;
        double r34325 = r34294 * r34294;
        double r34326 = r34325 + r34309;
        double r34327 = sqrt(r34326);
        double r34328 = r34327 + r34298;
        double r34329 = r34297 * r34328;
        double r34330 = sqrt(r34329);
        double r34331 = r34330 * r34302;
        double r34332 = r34294 + r34298;
        double r34333 = r34297 * r34332;
        double r34334 = sqrt(r34333);
        double r34335 = r34334 * r34302;
        double r34336 = r34324 ? r34331 : r34335;
        double r34337 = r34317 ? r34322 : r34336;
        double r34338 = r34305 ? r34315 : r34337;
        double r34339 = r34296 ? r34303 : r34338;
        return r34339;
}

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 r34340, r34341, r34342, r34343, r34344, r34345, r34346, r34347, r34348, r34349, r34350, r34351;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r34340, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r34341, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34342);
        mpfr_init(r34343);
        mpfr_init(r34344);
        mpfr_init(r34345);
        mpfr_init(r34346);
        mpfr_init(r34347);
        mpfr_init(r34348);
        mpfr_init(r34349);
        mpfr_init(r34350);
        mpfr_init(r34351);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r34342, re, MPFR_RNDN);
        mpfr_mul(r34343, r34342, r34342, MPFR_RNDN);
        mpfr_set_d(r34344, im, MPFR_RNDN);
        mpfr_mul(r34345, r34344, r34344, MPFR_RNDN);
        mpfr_add(r34346, r34343, r34345, MPFR_RNDN);
        mpfr_sqrt(r34347, r34346, MPFR_RNDN);
        mpfr_add(r34348, r34347, r34342, MPFR_RNDN);
        mpfr_mul(r34349, r34341, r34348, MPFR_RNDN);
        mpfr_sqrt(r34350, r34349, MPFR_RNDN);
        mpfr_mul(r34351, r34340, r34350, MPFR_RNDN);
        return mpfr_get_d(r34351, MPFR_RNDN);
}

static mpfr_t r34352, r34353, r34354, r34355, r34356, r34357, r34358, r34359, r34360, r34361, r34362, r34363, r34364, r34365, r34366, r34367, r34368, r34369, r34370, r34371, r34372, r34373, r34374, r34375, r34376, r34377, r34378, r34379, r34380, r34381, r34382, r34383, r34384, r34385, r34386, r34387, r34388, r34389, r34390, r34391, r34392, r34393, r34394, r34395, r34396, r34397;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r34352);
        mpfr_init_set_str(r34353, "-2.422222280270566e+26", 10, MPFR_RNDN);
        mpfr_init(r34354);
        mpfr_init_set_str(r34355, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34356);
        mpfr_init(r34357);
        mpfr_init(r34358);
        mpfr_init(r34359);
        mpfr_init_set_str(r34360, "0.5", 10, MPFR_RNDN);
        mpfr_init(r34361);
        mpfr_init_set_str(r34362, "-2.082287675352382e-145", 10, MPFR_RNDN);
        mpfr_init(r34363);
        mpfr_init(r34364);
        mpfr_init(r34365);
        mpfr_init(r34366);
        mpfr_init(r34367);
        mpfr_init(r34368);
        mpfr_init(r34369);
        mpfr_init(r34370);
        mpfr_init(r34371);
        mpfr_init(r34372);
        mpfr_init(r34373);
        mpfr_init_set_str(r34374, "3.244880154522944e-152", 10, MPFR_RNDN);
        mpfr_init(r34375);
        mpfr_init_set_str(r34376, "2", 10, MPFR_RNDN);
        mpfr_init(r34377);
        mpfr_init(r34378);
        mpfr_init(r34379);
        mpfr_init(r34380);
        mpfr_init_set_str(r34381, "4.692828868299432e+91", 10, MPFR_RNDN);
        mpfr_init(r34382);
        mpfr_init(r34383);
        mpfr_init(r34384);
        mpfr_init(r34385);
        mpfr_init(r34386);
        mpfr_init(r34387);
        mpfr_init(r34388);
        mpfr_init(r34389);
        mpfr_init(r34390);
        mpfr_init(r34391);
        mpfr_init(r34392);
        mpfr_init(r34393);
        mpfr_init(r34394);
        mpfr_init(r34395);
        mpfr_init(r34396);
        mpfr_init(r34397);
}

double f_fm(double re, double im) {
        mpfr_set_d(r34352, im, MPFR_RNDN);
        ;
        mpfr_set_si(r34354, mpfr_cmp(r34352, r34353) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r34356, re, MPFR_RNDN);
        mpfr_sub(r34357, r34356, r34352, MPFR_RNDN);
        mpfr_mul(r34358, r34355, r34357, MPFR_RNDN);
        mpfr_sqrt(r34359, r34358, MPFR_RNDN);
        ;
        mpfr_mul(r34361, r34359, r34360, MPFR_RNDN);
        ;
        mpfr_set_si(r34363, mpfr_cmp(r34352, r34362) <= 0, MPFR_RNDN);
        mpfr_sqr(r34364, r34352, MPFR_RNDN);
        mpfr_mul(r34365, r34364, r34355, MPFR_RNDN);
        mpfr_sqrt(r34366, r34365, MPFR_RNDN);
        mpfr_sqr(r34367, r34356, MPFR_RNDN);
        mpfr_add(r34368, r34367, r34364, MPFR_RNDN);
        mpfr_sqrt(r34369, r34368, MPFR_RNDN);
        mpfr_sub(r34370, r34369, r34356, MPFR_RNDN);
        mpfr_sqrt(r34371, r34370, MPFR_RNDN);
        mpfr_div(r34372, r34366, r34371, MPFR_RNDN);
        mpfr_mul(r34373, r34372, r34360, MPFR_RNDN);
        ;
        mpfr_set_si(r34375, mpfr_cmp(r34352, r34374) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r34377, r34376, r34356, MPFR_RNDN);
        mpfr_mul(r34378, r34355, r34377, MPFR_RNDN);
        mpfr_sqrt(r34379, r34378, MPFR_RNDN);
        mpfr_mul(r34380, r34379, r34360, MPFR_RNDN);
        ;
        mpfr_set_si(r34382, mpfr_cmp(r34352, r34381) <= 0, MPFR_RNDN);
        mpfr_mul(r34383, r34352, r34352, MPFR_RNDN);
        mpfr_add(r34384, r34383, r34367, MPFR_RNDN);
        mpfr_sqrt(r34385, r34384, MPFR_RNDN);
        mpfr_add(r34386, r34385, r34356, MPFR_RNDN);
        mpfr_mul(r34387, r34355, r34386, MPFR_RNDN);
        mpfr_sqrt(r34388, r34387, MPFR_RNDN);
        mpfr_mul(r34389, r34388, r34360, MPFR_RNDN);
        mpfr_add(r34390, r34352, r34356, MPFR_RNDN);
        mpfr_mul(r34391, r34355, r34390, MPFR_RNDN);
        mpfr_sqrt(r34392, r34391, MPFR_RNDN);
        mpfr_mul(r34393, r34392, r34360, MPFR_RNDN);
        if (mpfr_get_si(r34382, MPFR_RNDN)) { mpfr_set(r34394, r34389, MPFR_RNDN); } else { mpfr_set(r34394, r34393, MPFR_RNDN); };
        if (mpfr_get_si(r34375, MPFR_RNDN)) { mpfr_set(r34395, r34380, MPFR_RNDN); } else { mpfr_set(r34395, r34394, MPFR_RNDN); };
        if (mpfr_get_si(r34363, MPFR_RNDN)) { mpfr_set(r34396, r34373, MPFR_RNDN); } else { mpfr_set(r34396, r34395, MPFR_RNDN); };
        if (mpfr_get_si(r34354, MPFR_RNDN)) { mpfr_set(r34397, r34361, MPFR_RNDN); } else { mpfr_set(r34397, r34396, MPFR_RNDN); };
        return mpfr_get_d(r34397, MPFR_RNDN);
}

static mpfr_t r34398, r34399, r34400, r34401, r34402, r34403, r34404, r34405, r34406, r34407, r34408, r34409, r34410, r34411, r34412, r34413, r34414, r34415, r34416, r34417, r34418, r34419, r34420, r34421, r34422, r34423, r34424, r34425, r34426, r34427, r34428, r34429, r34430, r34431, r34432, r34433, r34434, r34435, r34436, r34437, r34438, r34439, r34440, r34441, r34442, r34443;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r34398);
        mpfr_init_set_str(r34399, "-2.422222280270566e+26", 10, MPFR_RNDN);
        mpfr_init(r34400);
        mpfr_init_set_str(r34401, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34402);
        mpfr_init(r34403);
        mpfr_init(r34404);
        mpfr_init(r34405);
        mpfr_init_set_str(r34406, "0.5", 10, MPFR_RNDN);
        mpfr_init(r34407);
        mpfr_init_set_str(r34408, "-2.082287675352382e-145", 10, MPFR_RNDN);
        mpfr_init(r34409);
        mpfr_init(r34410);
        mpfr_init(r34411);
        mpfr_init(r34412);
        mpfr_init(r34413);
        mpfr_init(r34414);
        mpfr_init(r34415);
        mpfr_init(r34416);
        mpfr_init(r34417);
        mpfr_init(r34418);
        mpfr_init(r34419);
        mpfr_init_set_str(r34420, "3.244880154522944e-152", 10, MPFR_RNDN);
        mpfr_init(r34421);
        mpfr_init_set_str(r34422, "2", 10, MPFR_RNDN);
        mpfr_init(r34423);
        mpfr_init(r34424);
        mpfr_init(r34425);
        mpfr_init(r34426);
        mpfr_init_set_str(r34427, "4.692828868299432e+91", 10, MPFR_RNDN);
        mpfr_init(r34428);
        mpfr_init(r34429);
        mpfr_init(r34430);
        mpfr_init(r34431);
        mpfr_init(r34432);
        mpfr_init(r34433);
        mpfr_init(r34434);
        mpfr_init(r34435);
        mpfr_init(r34436);
        mpfr_init(r34437);
        mpfr_init(r34438);
        mpfr_init(r34439);
        mpfr_init(r34440);
        mpfr_init(r34441);
        mpfr_init(r34442);
        mpfr_init(r34443);
}

double f_dm(double re, double im) {
        mpfr_set_d(r34398, im, MPFR_RNDN);
        ;
        mpfr_set_si(r34400, mpfr_cmp(r34398, r34399) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r34402, re, MPFR_RNDN);
        mpfr_sub(r34403, r34402, r34398, MPFR_RNDN);
        mpfr_mul(r34404, r34401, r34403, MPFR_RNDN);
        mpfr_sqrt(r34405, r34404, MPFR_RNDN);
        ;
        mpfr_mul(r34407, r34405, r34406, MPFR_RNDN);
        ;
        mpfr_set_si(r34409, mpfr_cmp(r34398, r34408) <= 0, MPFR_RNDN);
        mpfr_sqr(r34410, r34398, MPFR_RNDN);
        mpfr_mul(r34411, r34410, r34401, MPFR_RNDN);
        mpfr_sqrt(r34412, r34411, MPFR_RNDN);
        mpfr_sqr(r34413, r34402, MPFR_RNDN);
        mpfr_add(r34414, r34413, r34410, MPFR_RNDN);
        mpfr_sqrt(r34415, r34414, MPFR_RNDN);
        mpfr_sub(r34416, r34415, r34402, MPFR_RNDN);
        mpfr_sqrt(r34417, r34416, MPFR_RNDN);
        mpfr_div(r34418, r34412, r34417, MPFR_RNDN);
        mpfr_mul(r34419, r34418, r34406, MPFR_RNDN);
        ;
        mpfr_set_si(r34421, mpfr_cmp(r34398, r34420) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r34423, r34422, r34402, MPFR_RNDN);
        mpfr_mul(r34424, r34401, r34423, MPFR_RNDN);
        mpfr_sqrt(r34425, r34424, MPFR_RNDN);
        mpfr_mul(r34426, r34425, r34406, MPFR_RNDN);
        ;
        mpfr_set_si(r34428, mpfr_cmp(r34398, r34427) <= 0, MPFR_RNDN);
        mpfr_mul(r34429, r34398, r34398, MPFR_RNDN);
        mpfr_add(r34430, r34429, r34413, MPFR_RNDN);
        mpfr_sqrt(r34431, r34430, MPFR_RNDN);
        mpfr_add(r34432, r34431, r34402, MPFR_RNDN);
        mpfr_mul(r34433, r34401, r34432, MPFR_RNDN);
        mpfr_sqrt(r34434, r34433, MPFR_RNDN);
        mpfr_mul(r34435, r34434, r34406, MPFR_RNDN);
        mpfr_add(r34436, r34398, r34402, MPFR_RNDN);
        mpfr_mul(r34437, r34401, r34436, MPFR_RNDN);
        mpfr_sqrt(r34438, r34437, MPFR_RNDN);
        mpfr_mul(r34439, r34438, r34406, MPFR_RNDN);
        if (mpfr_get_si(r34428, MPFR_RNDN)) { mpfr_set(r34440, r34435, MPFR_RNDN); } else { mpfr_set(r34440, r34439, MPFR_RNDN); };
        if (mpfr_get_si(r34421, MPFR_RNDN)) { mpfr_set(r34441, r34426, MPFR_RNDN); } else { mpfr_set(r34441, r34440, MPFR_RNDN); };
        if (mpfr_get_si(r34409, MPFR_RNDN)) { mpfr_set(r34442, r34419, MPFR_RNDN); } else { mpfr_set(r34442, r34441, MPFR_RNDN); };
        if (mpfr_get_si(r34400, MPFR_RNDN)) { mpfr_set(r34443, r34407, MPFR_RNDN); } else { mpfr_set(r34443, r34442, MPFR_RNDN); };
        return mpfr_get_d(r34443, MPFR_RNDN);
}

