#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 r38188 = 0.5;
        float r38189 = 2.0;
        float r38190 = re;
        float r38191 = r38190 * r38190;
        float r38192 = im;
        float r38193 = r38192 * r38192;
        float r38194 = r38191 + r38193;
        float r38195 = sqrt(r38194);
        float r38196 = r38195 + r38190;
        float r38197 = r38189 * r38196;
        float r38198 = sqrt(r38197);
        float r38199 = r38188 * r38198;
        return r38199;
}

double f_id(double re, double im) {
        double r38200 = 0.5;
        double r38201 = 2.0;
        double r38202 = re;
        double r38203 = r38202 * r38202;
        double r38204 = im;
        double r38205 = r38204 * r38204;
        double r38206 = r38203 + r38205;
        double r38207 = sqrt(r38206);
        double r38208 = r38207 + r38202;
        double r38209 = r38201 * r38208;
        double r38210 = sqrt(r38209);
        double r38211 = r38200 * r38210;
        return r38211;
}


double f_of(float re, float im) {
        float r38212 = re;
        float r38213 = -210317436169161.62;
        bool r38214 = r38212 <= r38213;
        float r38215 = 0.5;
        float r38216 = im;
        float r38217 = 2.0;
        float r38218 = r38216 * r38217;
        float r38219 = r38218 * r38216;
        float r38220 = sqrt(r38219);
        float r38221 = -r38212;
        float r38222 = r38221 - r38212;
        float r38223 = sqrt(r38222);
        float r38224 = r38220 / r38223;
        float r38225 = r38215 * r38224;
        float r38226 = -8.728468919162235e-72;
        bool r38227 = r38212 <= r38226;
        float r38228 = sqrt(r38217);
        float r38229 = -r38216;
        float r38230 = r38228 * r38229;
        float r38231 = r38215 * r38230;
        float r38232 = r38216 * r38216;
        float r38233 = r38212 * r38212;
        float r38234 = r38232 + r38233;
        float r38235 = sqrt(r38234);
        float r38236 = r38235 - r38212;
        float r38237 = sqrt(r38236);
        float r38238 = r38231 / r38237;
        float r38239 = 1.1415449837537338e-08;
        bool r38240 = r38212 <= r38239;
        float r38241 = r38233 + r38232;
        float r38242 = sqrt(r38241);
        float r38243 = sqrt(r38242);
        float r38244 = r38243 * r38243;
        float r38245 = r38244 + r38212;
        float r38246 = r38217 * r38245;
        float r38247 = sqrt(r38246);
        float r38248 = r38215 * r38247;
        float r38249 = r38212 + r38212;
        float r38250 = r38217 * r38249;
        float r38251 = sqrt(r38250);
        float r38252 = r38215 * r38251;
        float r38253 = r38240 ? r38248 : r38252;
        float r38254 = r38227 ? r38238 : r38253;
        float r38255 = r38214 ? r38225 : r38254;
        return r38255;
}

double f_od(double re, double im) {
        double r38256 = re;
        double r38257 = -210317436169161.62;
        bool r38258 = r38256 <= r38257;
        double r38259 = 0.5;
        double r38260 = im;
        double r38261 = 2.0;
        double r38262 = r38260 * r38261;
        double r38263 = r38262 * r38260;
        double r38264 = sqrt(r38263);
        double r38265 = -r38256;
        double r38266 = r38265 - r38256;
        double r38267 = sqrt(r38266);
        double r38268 = r38264 / r38267;
        double r38269 = r38259 * r38268;
        double r38270 = -8.728468919162235e-72;
        bool r38271 = r38256 <= r38270;
        double r38272 = sqrt(r38261);
        double r38273 = -r38260;
        double r38274 = r38272 * r38273;
        double r38275 = r38259 * r38274;
        double r38276 = r38260 * r38260;
        double r38277 = r38256 * r38256;
        double r38278 = r38276 + r38277;
        double r38279 = sqrt(r38278);
        double r38280 = r38279 - r38256;
        double r38281 = sqrt(r38280);
        double r38282 = r38275 / r38281;
        double r38283 = 1.1415449837537338e-08;
        bool r38284 = r38256 <= r38283;
        double r38285 = r38277 + r38276;
        double r38286 = sqrt(r38285);
        double r38287 = sqrt(r38286);
        double r38288 = r38287 * r38287;
        double r38289 = r38288 + r38256;
        double r38290 = r38261 * r38289;
        double r38291 = sqrt(r38290);
        double r38292 = r38259 * r38291;
        double r38293 = r38256 + r38256;
        double r38294 = r38261 * r38293;
        double r38295 = sqrt(r38294);
        double r38296 = r38259 * r38295;
        double r38297 = r38284 ? r38292 : r38296;
        double r38298 = r38271 ? r38282 : r38297;
        double r38299 = r38258 ? r38269 : r38298;
        return r38299;
}

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 r38300, r38301, r38302, r38303, r38304, r38305, r38306, r38307, r38308, r38309, r38310, r38311;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init_set_str(r38300, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r38301, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38302);
        mpfr_init(r38303);
        mpfr_init(r38304);
        mpfr_init(r38305);
        mpfr_init(r38306);
        mpfr_init(r38307);
        mpfr_init(r38308);
        mpfr_init(r38309);
        mpfr_init(r38310);
        mpfr_init(r38311);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r38302, re, MPFR_RNDN);
        mpfr_mul(r38303, r38302, r38302, MPFR_RNDN);
        mpfr_set_d(r38304, im, MPFR_RNDN);
        mpfr_mul(r38305, r38304, r38304, MPFR_RNDN);
        mpfr_add(r38306, r38303, r38305, MPFR_RNDN);
        mpfr_sqrt(r38307, r38306, MPFR_RNDN);
        mpfr_add(r38308, r38307, r38302, MPFR_RNDN);
        mpfr_mul(r38309, r38301, r38308, MPFR_RNDN);
        mpfr_sqrt(r38310, r38309, MPFR_RNDN);
        mpfr_mul(r38311, r38300, r38310, MPFR_RNDN);
        return mpfr_get_d(r38311, MPFR_RNDN);
}

static mpfr_t r38312, r38313, r38314, r38315, r38316, r38317, r38318, r38319, r38320, r38321, r38322, r38323, r38324, r38325, r38326, r38327, r38328, r38329, r38330, r38331, r38332, r38333, r38334, r38335, r38336, r38337, r38338, r38339, r38340, r38341, r38342, r38343, r38344, r38345, r38346, r38347, r38348, r38349, r38350, r38351, r38352, r38353, r38354, r38355;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r38312);
        mpfr_init_set_str(r38313, "-210317436169161.62", 10, MPFR_RNDN);
        mpfr_init(r38314);
        mpfr_init_set_str(r38315, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38316);
        mpfr_init_set_str(r38317, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38318);
        mpfr_init(r38319);
        mpfr_init(r38320);
        mpfr_init(r38321);
        mpfr_init(r38322);
        mpfr_init(r38323);
        mpfr_init(r38324);
        mpfr_init(r38325);
        mpfr_init_set_str(r38326, "-8.728468919162235e-72", 10, MPFR_RNDN);
        mpfr_init(r38327);
        mpfr_init(r38328);
        mpfr_init(r38329);
        mpfr_init(r38330);
        mpfr_init(r38331);
        mpfr_init(r38332);
        mpfr_init(r38333);
        mpfr_init(r38334);
        mpfr_init(r38335);
        mpfr_init(r38336);
        mpfr_init(r38337);
        mpfr_init(r38338);
        mpfr_init_set_str(r38339, "1.1415449837537338e-08", 10, MPFR_RNDN);
        mpfr_init(r38340);
        mpfr_init(r38341);
        mpfr_init(r38342);
        mpfr_init(r38343);
        mpfr_init(r38344);
        mpfr_init(r38345);
        mpfr_init(r38346);
        mpfr_init(r38347);
        mpfr_init(r38348);
        mpfr_init(r38349);
        mpfr_init(r38350);
        mpfr_init(r38351);
        mpfr_init(r38352);
        mpfr_init(r38353);
        mpfr_init(r38354);
        mpfr_init(r38355);
}

double f_fm(double re, double im) {
        mpfr_set_d(r38312, re, MPFR_RNDN);
        ;
        mpfr_set_si(r38314, mpfr_cmp(r38312, r38313) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r38316, im, MPFR_RNDN);
        ;
        mpfr_mul(r38318, r38316, r38317, MPFR_RNDN);
        mpfr_mul(r38319, r38318, r38316, MPFR_RNDN);
        mpfr_sqrt(r38320, r38319, MPFR_RNDN);
        mpfr_neg(r38321, r38312, MPFR_RNDN);
        mpfr_sub(r38322, r38321, r38312, MPFR_RNDN);
        mpfr_sqrt(r38323, r38322, MPFR_RNDN);
        mpfr_div(r38324, r38320, r38323, MPFR_RNDN);
        mpfr_mul(r38325, r38315, r38324, MPFR_RNDN);
        ;
        mpfr_set_si(r38327, mpfr_cmp(r38312, r38326) <= 0, MPFR_RNDN);
        mpfr_sqrt(r38328, r38317, MPFR_RNDN);
        mpfr_neg(r38329, r38316, MPFR_RNDN);
        mpfr_mul(r38330, r38328, r38329, MPFR_RNDN);
        mpfr_mul(r38331, r38315, r38330, MPFR_RNDN);
        mpfr_mul(r38332, r38316, r38316, MPFR_RNDN);
        mpfr_mul(r38333, r38312, r38312, MPFR_RNDN);
        mpfr_add(r38334, r38332, r38333, MPFR_RNDN);
        mpfr_sqrt(r38335, r38334, MPFR_RNDN);
        mpfr_sub(r38336, r38335, r38312, MPFR_RNDN);
        mpfr_sqrt(r38337, r38336, MPFR_RNDN);
        mpfr_div(r38338, r38331, r38337, MPFR_RNDN);
        ;
        mpfr_set_si(r38340, mpfr_cmp(r38312, r38339) <= 0, MPFR_RNDN);
        mpfr_add(r38341, r38333, r38332, MPFR_RNDN);
        mpfr_sqrt(r38342, r38341, MPFR_RNDN);
        mpfr_sqrt(r38343, r38342, MPFR_RNDN);
        mpfr_mul(r38344, r38343, r38343, MPFR_RNDN);
        mpfr_add(r38345, r38344, r38312, MPFR_RNDN);
        mpfr_mul(r38346, r38317, r38345, MPFR_RNDN);
        mpfr_sqrt(r38347, r38346, MPFR_RNDN);
        mpfr_mul(r38348, r38315, r38347, MPFR_RNDN);
        mpfr_add(r38349, r38312, r38312, MPFR_RNDN);
        mpfr_mul(r38350, r38317, r38349, MPFR_RNDN);
        mpfr_sqrt(r38351, r38350, MPFR_RNDN);
        mpfr_mul(r38352, r38315, r38351, MPFR_RNDN);
        if (mpfr_get_si(r38340, MPFR_RNDN)) { mpfr_set(r38353, r38348, MPFR_RNDN); } else { mpfr_set(r38353, r38352, MPFR_RNDN); };
        if (mpfr_get_si(r38327, MPFR_RNDN)) { mpfr_set(r38354, r38338, MPFR_RNDN); } else { mpfr_set(r38354, r38353, MPFR_RNDN); };
        if (mpfr_get_si(r38314, MPFR_RNDN)) { mpfr_set(r38355, r38325, MPFR_RNDN); } else { mpfr_set(r38355, r38354, MPFR_RNDN); };
        return mpfr_get_d(r38355, MPFR_RNDN);
}

static mpfr_t r38356, r38357, r38358, r38359, r38360, r38361, r38362, r38363, r38364, r38365, r38366, r38367, r38368, r38369, r38370, r38371, r38372, r38373, r38374, r38375, r38376, r38377, r38378, r38379, r38380, r38381, r38382, r38383, r38384, r38385, r38386, r38387, r38388, r38389, r38390, r38391, r38392, r38393, r38394, r38395, r38396, r38397, r38398, r38399;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r38356);
        mpfr_init_set_str(r38357, "-210317436169161.62", 10, MPFR_RNDN);
        mpfr_init(r38358);
        mpfr_init_set_str(r38359, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38360);
        mpfr_init_set_str(r38361, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38362);
        mpfr_init(r38363);
        mpfr_init(r38364);
        mpfr_init(r38365);
        mpfr_init(r38366);
        mpfr_init(r38367);
        mpfr_init(r38368);
        mpfr_init(r38369);
        mpfr_init_set_str(r38370, "-8.728468919162235e-72", 10, MPFR_RNDN);
        mpfr_init(r38371);
        mpfr_init(r38372);
        mpfr_init(r38373);
        mpfr_init(r38374);
        mpfr_init(r38375);
        mpfr_init(r38376);
        mpfr_init(r38377);
        mpfr_init(r38378);
        mpfr_init(r38379);
        mpfr_init(r38380);
        mpfr_init(r38381);
        mpfr_init(r38382);
        mpfr_init_set_str(r38383, "1.1415449837537338e-08", 10, MPFR_RNDN);
        mpfr_init(r38384);
        mpfr_init(r38385);
        mpfr_init(r38386);
        mpfr_init(r38387);
        mpfr_init(r38388);
        mpfr_init(r38389);
        mpfr_init(r38390);
        mpfr_init(r38391);
        mpfr_init(r38392);
        mpfr_init(r38393);
        mpfr_init(r38394);
        mpfr_init(r38395);
        mpfr_init(r38396);
        mpfr_init(r38397);
        mpfr_init(r38398);
        mpfr_init(r38399);
}

double f_dm(double re, double im) {
        mpfr_set_d(r38356, re, MPFR_RNDN);
        ;
        mpfr_set_si(r38358, mpfr_cmp(r38356, r38357) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r38360, im, MPFR_RNDN);
        ;
        mpfr_mul(r38362, r38360, r38361, MPFR_RNDN);
        mpfr_mul(r38363, r38362, r38360, MPFR_RNDN);
        mpfr_sqrt(r38364, r38363, MPFR_RNDN);
        mpfr_neg(r38365, r38356, MPFR_RNDN);
        mpfr_sub(r38366, r38365, r38356, MPFR_RNDN);
        mpfr_sqrt(r38367, r38366, MPFR_RNDN);
        mpfr_div(r38368, r38364, r38367, MPFR_RNDN);
        mpfr_mul(r38369, r38359, r38368, MPFR_RNDN);
        ;
        mpfr_set_si(r38371, mpfr_cmp(r38356, r38370) <= 0, MPFR_RNDN);
        mpfr_sqrt(r38372, r38361, MPFR_RNDN);
        mpfr_neg(r38373, r38360, MPFR_RNDN);
        mpfr_mul(r38374, r38372, r38373, MPFR_RNDN);
        mpfr_mul(r38375, r38359, r38374, MPFR_RNDN);
        mpfr_mul(r38376, r38360, r38360, MPFR_RNDN);
        mpfr_mul(r38377, r38356, r38356, MPFR_RNDN);
        mpfr_add(r38378, r38376, r38377, MPFR_RNDN);
        mpfr_sqrt(r38379, r38378, MPFR_RNDN);
        mpfr_sub(r38380, r38379, r38356, MPFR_RNDN);
        mpfr_sqrt(r38381, r38380, MPFR_RNDN);
        mpfr_div(r38382, r38375, r38381, MPFR_RNDN);
        ;
        mpfr_set_si(r38384, mpfr_cmp(r38356, r38383) <= 0, MPFR_RNDN);
        mpfr_add(r38385, r38377, r38376, MPFR_RNDN);
        mpfr_sqrt(r38386, r38385, MPFR_RNDN);
        mpfr_sqrt(r38387, r38386, MPFR_RNDN);
        mpfr_mul(r38388, r38387, r38387, MPFR_RNDN);
        mpfr_add(r38389, r38388, r38356, MPFR_RNDN);
        mpfr_mul(r38390, r38361, r38389, MPFR_RNDN);
        mpfr_sqrt(r38391, r38390, MPFR_RNDN);
        mpfr_mul(r38392, r38359, r38391, MPFR_RNDN);
        mpfr_add(r38393, r38356, r38356, MPFR_RNDN);
        mpfr_mul(r38394, r38361, r38393, MPFR_RNDN);
        mpfr_sqrt(r38395, r38394, MPFR_RNDN);
        mpfr_mul(r38396, r38359, r38395, MPFR_RNDN);
        if (mpfr_get_si(r38384, MPFR_RNDN)) { mpfr_set(r38397, r38392, MPFR_RNDN); } else { mpfr_set(r38397, r38396, MPFR_RNDN); };
        if (mpfr_get_si(r38371, MPFR_RNDN)) { mpfr_set(r38398, r38382, MPFR_RNDN); } else { mpfr_set(r38398, r38397, MPFR_RNDN); };
        if (mpfr_get_si(r38358, MPFR_RNDN)) { mpfr_set(r38399, r38369, MPFR_RNDN); } else { mpfr_set(r38399, r38398, MPFR_RNDN); };
        return mpfr_get_d(r38399, MPFR_RNDN);
}

