#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 r19280 = 0.5f;
        float r19281 = 2.0f;
        float r19282 = re;
        float r19283 = r19282 * r19282;
        float r19284 = im;
        float r19285 = r19284 * r19284;
        float r19286 = r19283 + r19285;
        float r19287 = sqrt(r19286);
        float r19288 = r19287 + r19282;
        float r19289 = r19281 * r19288;
        float r19290 = sqrt(r19289);
        float r19291 = r19280 * r19290;
        return r19291;
}

double f_id(double re, double im) {
        double r19292 = 0.5;
        double r19293 = 2.0;
        double r19294 = re;
        double r19295 = r19294 * r19294;
        double r19296 = im;
        double r19297 = r19296 * r19296;
        double r19298 = r19295 + r19297;
        double r19299 = sqrt(r19298);
        double r19300 = r19299 + r19294;
        double r19301 = r19293 * r19300;
        double r19302 = sqrt(r19301);
        double r19303 = r19292 * r19302;
        return r19303;
}


double f_of(float re, float im) {
        float r19304 = re;
        float r19305 = r19304 * r19304;
        float r19306 = im;
        float r19307 = r19306 * r19306;
        float r19308 = r19305 + r19307;
        float r19309 = sqrt(r19308);
        float r19310 = r19309 + r19304;
        float r19311 = 6.915811658529258e-23f;
        bool r19312 = r19310 <= r19311;
        float r19313 = 2.0f;
        float r19314 = sqrt(r19313);
        float r19315 = 0.5f;
        float r19316 = r19315 * r19306;
        float r19317 = r19314 * r19316;
        float r19318 = -2.0f;
        float r19319 = r19304 * r19318;
        float r19320 = sqrt(r19319);
        float r19321 = r19317 / r19320;
        float r19322 = 8.603455066584436e+19f;
        bool r19323 = r19310 <= r19322;
        float r19324 = r19304 * r19304;
        float r19325 = r19324 + r19307;
        float r19326 = sqrt(r19325);
        float r19327 = r19304 + r19326;
        float r19328 = cbrt(r19327);
        float r19329 = r19328 * (r19328 * r19328);
        float r19330 = r19313 * r19329;
        float r19331 = sqrt(r19330);
        float r19332 = r19315 * r19331;
        float r19333 = r19316 * r19314;
        float r19334 = r19306 - r19304;
        float r19335 = sqrt(r19334);
        float r19336 = r19333 / r19335;
        float r19337 = r19323 ? r19332 : r19336;
        float r19338 = r19312 ? r19321 : r19337;
        return r19338;
}

double f_od(double re, double im) {
        double r19339 = re;
        double r19340 = r19339 * r19339;
        double r19341 = im;
        double r19342 = r19341 * r19341;
        double r19343 = r19340 + r19342;
        double r19344 = sqrt(r19343);
        double r19345 = r19344 + r19339;
        double r19346 = 6.915811658529258e-23;
        bool r19347 = r19345 <= r19346;
        double r19348 = 2.0;
        double r19349 = sqrt(r19348);
        double r19350 = 0.5;
        double r19351 = r19350 * r19341;
        double r19352 = r19349 * r19351;
        double r19353 = -2.0;
        double r19354 = r19339 * r19353;
        double r19355 = sqrt(r19354);
        double r19356 = r19352 / r19355;
        double r19357 = 8.603455066584436e+19;
        bool r19358 = r19345 <= r19357;
        double r19359 = r19339 * r19339;
        double r19360 = r19359 + r19342;
        double r19361 = sqrt(r19360);
        double r19362 = r19339 + r19361;
        double r19363 = cbrt(r19362);
        double r19364 = r19363 * (r19363 * r19363);
        double r19365 = r19348 * r19364;
        double r19366 = sqrt(r19365);
        double r19367 = r19350 * r19366;
        double r19368 = r19351 * r19349;
        double r19369 = r19341 - r19339;
        double r19370 = sqrt(r19369);
        double r19371 = r19368 / r19370;
        double r19372 = r19358 ? r19367 : r19371;
        double r19373 = r19347 ? r19356 : r19372;
        return r19373;
}

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 r19374, r19375, r19376, r19377, r19378, r19379, r19380, r19381, r19382, r19383, r19384, r19385;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19374, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19375, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19376);
        mpfr_init(r19377);
        mpfr_init(r19378);
        mpfr_init(r19379);
        mpfr_init(r19380);
        mpfr_init(r19381);
        mpfr_init(r19382);
        mpfr_init(r19383);
        mpfr_init(r19384);
        mpfr_init(r19385);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19376, re, MPFR_RNDN);
        mpfr_mul(r19377, r19376, r19376, MPFR_RNDN);
        mpfr_set_d(r19378, im, MPFR_RNDN);
        mpfr_mul(r19379, r19378, r19378, MPFR_RNDN);
        mpfr_add(r19380, r19377, r19379, MPFR_RNDN);
        mpfr_sqrt(r19381, r19380, MPFR_RNDN);
        mpfr_add(r19382, r19381, r19376, MPFR_RNDN);
        mpfr_mul(r19383, r19375, r19382, MPFR_RNDN);
        mpfr_sqrt(r19384, r19383, MPFR_RNDN);
        mpfr_mul(r19385, r19374, r19384, MPFR_RNDN);
        return mpfr_get_d(r19385, MPFR_RNDN);
}

static mpfr_t r19386, r19387, r19388, r19389, r19390, r19391, r19392, r19393, r19394, r19395, r19396, r19397, r19398, r19399, r19400, r19401, r19402, r19403, r19404, r19405, r19406, r19407, r19408, r19409, r19410, r19411, r19412, r19413, r19414, r19415, r19416, r19417, r19418, r19419, r19420;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19386);
        mpfr_init(r19387);
        mpfr_init(r19388);
        mpfr_init(r19389);
        mpfr_init(r19390);
        mpfr_init(r19391);
        mpfr_init(r19392);
        mpfr_init_set_str(r19393, "6.9158117f-23", 10, MPFR_RNDN);
        mpfr_init(r19394);
        mpfr_init_set_str(r19395, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19396);
        mpfr_init_set_str(r19397, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19398);
        mpfr_init(r19399);
        mpfr_init_set_str(r19400, "-2", 10, MPFR_RNDN);
        mpfr_init(r19401);
        mpfr_init(r19402);
        mpfr_init(r19403);
        mpfr_init_set_str(r19404, "8.603455f+19", 10, MPFR_RNDN);
        mpfr_init(r19405);
        mpfr_init(r19406);
        mpfr_init(r19407);
        mpfr_init(r19408);
        mpfr_init(r19409);
        mpfr_init(r19410);
        mpfr_init(r19411);
        mpfr_init(r19412);
        mpfr_init(r19413);
        mpfr_init(r19414);
        mpfr_init(r19415);
        mpfr_init(r19416);
        mpfr_init(r19417);
        mpfr_init(r19418);
        mpfr_init(r19419);
        mpfr_init(r19420);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19386, re, MPFR_RNDN);
        mpfr_mul(r19387, r19386, r19386, MPFR_RNDN);
        mpfr_set_d(r19388, im, MPFR_RNDN);
        mpfr_mul(r19389, r19388, r19388, MPFR_RNDN);
        mpfr_add(r19390, r19387, r19389, MPFR_RNDN);
        mpfr_sqrt(r19391, r19390, MPFR_RNDN);
        mpfr_add(r19392, r19391, r19386, MPFR_RNDN);
        ;
        mpfr_set_si(r19394, mpfr_cmp(r19392, r19393) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r19396, r19395, MPFR_RNDN);
        ;
        mpfr_mul(r19398, r19397, r19388, MPFR_RNDN);
        mpfr_mul(r19399, r19396, r19398, MPFR_RNDN);
        ;
        mpfr_mul(r19401, r19386, r19400, MPFR_RNDN);
        mpfr_sqrt(r19402, r19401, MPFR_RNDN);
        mpfr_div(r19403, r19399, r19402, MPFR_RNDN);
        ;
        mpfr_set_si(r19405, mpfr_cmp(r19392, r19404) <= 0, MPFR_RNDN);
        mpfr_sqr(r19406, r19386, MPFR_RNDN);
        mpfr_add(r19407, r19406, r19389, MPFR_RNDN);
        mpfr_sqrt(r19408, r19407, MPFR_RNDN);
        mpfr_add(r19409, r19386, r19408, MPFR_RNDN);
        mpfr_cbrt(r19410, r19409, MPFR_RNDN);
        mpfr_mul(r19411, r19410, r19410, MPFR_RNDN); mpfr_mul(r19411, r19411, r19410, MPFR_RNDN);
        mpfr_mul(r19412, r19395, r19411, MPFR_RNDN);
        mpfr_sqrt(r19413, r19412, MPFR_RNDN);
        mpfr_mul(r19414, r19397, r19413, MPFR_RNDN);
        mpfr_mul(r19415, r19398, r19396, MPFR_RNDN);
        mpfr_sub(r19416, r19388, r19386, MPFR_RNDN);
        mpfr_sqrt(r19417, r19416, MPFR_RNDN);
        mpfr_div(r19418, r19415, r19417, MPFR_RNDN);
        if (mpfr_get_si(r19405, MPFR_RNDN)) { mpfr_set(r19419, r19414, MPFR_RNDN); } else { mpfr_set(r19419, r19418, MPFR_RNDN); };
        if (mpfr_get_si(r19394, MPFR_RNDN)) { mpfr_set(r19420, r19403, MPFR_RNDN); } else { mpfr_set(r19420, r19419, MPFR_RNDN); };
        return mpfr_get_d(r19420, MPFR_RNDN);
}

static mpfr_t r19421, r19422, r19423, r19424, r19425, r19426, r19427, r19428, r19429, r19430, r19431, r19432, r19433, r19434, r19435, r19436, r19437, r19438, r19439, r19440, r19441, r19442, r19443, r19444, r19445, r19446, r19447, r19448, r19449, r19450, r19451, r19452, r19453, r19454, r19455;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19421);
        mpfr_init(r19422);
        mpfr_init(r19423);
        mpfr_init(r19424);
        mpfr_init(r19425);
        mpfr_init(r19426);
        mpfr_init(r19427);
        mpfr_init_set_str(r19428, "6.9158117f-23", 10, MPFR_RNDN);
        mpfr_init(r19429);
        mpfr_init_set_str(r19430, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19431);
        mpfr_init_set_str(r19432, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19433);
        mpfr_init(r19434);
        mpfr_init_set_str(r19435, "-2", 10, MPFR_RNDN);
        mpfr_init(r19436);
        mpfr_init(r19437);
        mpfr_init(r19438);
        mpfr_init_set_str(r19439, "8.603455f+19", 10, MPFR_RNDN);
        mpfr_init(r19440);
        mpfr_init(r19441);
        mpfr_init(r19442);
        mpfr_init(r19443);
        mpfr_init(r19444);
        mpfr_init(r19445);
        mpfr_init(r19446);
        mpfr_init(r19447);
        mpfr_init(r19448);
        mpfr_init(r19449);
        mpfr_init(r19450);
        mpfr_init(r19451);
        mpfr_init(r19452);
        mpfr_init(r19453);
        mpfr_init(r19454);
        mpfr_init(r19455);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19421, re, MPFR_RNDN);
        mpfr_mul(r19422, r19421, r19421, MPFR_RNDN);
        mpfr_set_d(r19423, im, MPFR_RNDN);
        mpfr_mul(r19424, r19423, r19423, MPFR_RNDN);
        mpfr_add(r19425, r19422, r19424, MPFR_RNDN);
        mpfr_sqrt(r19426, r19425, MPFR_RNDN);
        mpfr_add(r19427, r19426, r19421, MPFR_RNDN);
        ;
        mpfr_set_si(r19429, mpfr_cmp(r19427, r19428) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r19431, r19430, MPFR_RNDN);
        ;
        mpfr_mul(r19433, r19432, r19423, MPFR_RNDN);
        mpfr_mul(r19434, r19431, r19433, MPFR_RNDN);
        ;
        mpfr_mul(r19436, r19421, r19435, MPFR_RNDN);
        mpfr_sqrt(r19437, r19436, MPFR_RNDN);
        mpfr_div(r19438, r19434, r19437, MPFR_RNDN);
        ;
        mpfr_set_si(r19440, mpfr_cmp(r19427, r19439) <= 0, MPFR_RNDN);
        mpfr_sqr(r19441, r19421, MPFR_RNDN);
        mpfr_add(r19442, r19441, r19424, MPFR_RNDN);
        mpfr_sqrt(r19443, r19442, MPFR_RNDN);
        mpfr_add(r19444, r19421, r19443, MPFR_RNDN);
        mpfr_cbrt(r19445, r19444, MPFR_RNDN);
        mpfr_mul(r19446, r19445, r19445, MPFR_RNDN); mpfr_mul(r19446, r19446, r19445, MPFR_RNDN);
        mpfr_mul(r19447, r19430, r19446, MPFR_RNDN);
        mpfr_sqrt(r19448, r19447, MPFR_RNDN);
        mpfr_mul(r19449, r19432, r19448, MPFR_RNDN);
        mpfr_mul(r19450, r19433, r19431, MPFR_RNDN);
        mpfr_sub(r19451, r19423, r19421, MPFR_RNDN);
        mpfr_sqrt(r19452, r19451, MPFR_RNDN);
        mpfr_div(r19453, r19450, r19452, MPFR_RNDN);
        if (mpfr_get_si(r19440, MPFR_RNDN)) { mpfr_set(r19454, r19449, MPFR_RNDN); } else { mpfr_set(r19454, r19453, MPFR_RNDN); };
        if (mpfr_get_si(r19429, MPFR_RNDN)) { mpfr_set(r19455, r19438, MPFR_RNDN); } else { mpfr_set(r19455, r19454, MPFR_RNDN); };
        return mpfr_get_d(r19455, MPFR_RNDN);
}

