#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 r19239 = 0.5f;
        float r19240 = 2.0f;
        float r19241 = re;
        float r19242 = r19241 * r19241;
        float r19243 = im;
        float r19244 = r19243 * r19243;
        float r19245 = r19242 + r19244;
        float r19246 = sqrt(r19245);
        float r19247 = r19246 + r19241;
        float r19248 = r19240 * r19247;
        float r19249 = sqrt(r19248);
        float r19250 = r19239 * r19249;
        return r19250;
}

double f_id(double re, double im) {
        double r19251 = 0.5;
        double r19252 = 2.0;
        double r19253 = re;
        double r19254 = r19253 * r19253;
        double r19255 = im;
        double r19256 = r19255 * r19255;
        double r19257 = r19254 + r19256;
        double r19258 = sqrt(r19257);
        double r19259 = r19258 + r19253;
        double r19260 = r19252 * r19259;
        double r19261 = sqrt(r19260);
        double r19262 = r19251 * r19261;
        return r19262;
}


double f_of(float re, float im) {
        float r19263 = re;
        float r19264 = -1.3335603869833236e-24f;
        bool r19265 = r19263 <= r19264;
        float r19266 = 0.5f;
        float r19267 = 2.0f;
        float r19268 = im;
        float r19269 = r19267 * r19268;
        float r19270 = r19269 * r19268;
        float r19271 = sqrt(r19270);
        float r19272 = r19263 * r19263;
        float r19273 = r19268 * r19268;
        float r19274 = r19272 + r19273;
        float r19275 = sqrt(r19274);
        float r19276 = r19275 - r19263;
        float r19277 = sqrt(r19276);
        float r19278 = r19271 / r19277;
        float r19279 = r19266 * r19278;
        float r19280 = 6463312673898496.0f;
        bool r19281 = r19263 <= r19280;
        float r19282 = cbrt(r19275);
        float r19283 = r19282 * (r19282 * r19282);
        float r19284 = r19283 + r19263;
        float r19285 = r19267 * r19284;
        float r19286 = sqrt(r19285);
        float r19287 = r19266 * r19286;
        float r19288 = r19263 + r19263;
        float r19289 = r19267 * r19288;
        float r19290 = sqrt(r19289);
        float r19291 = r19266 * r19290;
        float r19292 = r19281 ? r19287 : r19291;
        float r19293 = r19265 ? r19279 : r19292;
        return r19293;
}

double f_od(double re, double im) {
        double r19294 = re;
        double r19295 = -1.3335603869833236e-24;
        bool r19296 = r19294 <= r19295;
        double r19297 = 0.5;
        double r19298 = 2.0;
        double r19299 = im;
        double r19300 = r19298 * r19299;
        double r19301 = r19300 * r19299;
        double r19302 = sqrt(r19301);
        double r19303 = r19294 * r19294;
        double r19304 = r19299 * r19299;
        double r19305 = r19303 + r19304;
        double r19306 = sqrt(r19305);
        double r19307 = r19306 - r19294;
        double r19308 = sqrt(r19307);
        double r19309 = r19302 / r19308;
        double r19310 = r19297 * r19309;
        double r19311 = 6463312673898496.0;
        bool r19312 = r19294 <= r19311;
        double r19313 = cbrt(r19306);
        double r19314 = r19313 * (r19313 * r19313);
        double r19315 = r19314 + r19294;
        double r19316 = r19298 * r19315;
        double r19317 = sqrt(r19316);
        double r19318 = r19297 * r19317;
        double r19319 = r19294 + r19294;
        double r19320 = r19298 * r19319;
        double r19321 = sqrt(r19320);
        double r19322 = r19297 * r19321;
        double r19323 = r19312 ? r19318 : r19322;
        double r19324 = r19296 ? r19310 : r19323;
        return r19324;
}

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 r19325, r19326, r19327, r19328, r19329, r19330, r19331, r19332, r19333, r19334, r19335, r19336;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19325, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19326, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19327);
        mpfr_init(r19328);
        mpfr_init(r19329);
        mpfr_init(r19330);
        mpfr_init(r19331);
        mpfr_init(r19332);
        mpfr_init(r19333);
        mpfr_init(r19334);
        mpfr_init(r19335);
        mpfr_init(r19336);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19327, re, MPFR_RNDN);
        mpfr_mul(r19328, r19327, r19327, MPFR_RNDN);
        mpfr_set_d(r19329, im, MPFR_RNDN);
        mpfr_mul(r19330, r19329, r19329, MPFR_RNDN);
        mpfr_add(r19331, r19328, r19330, MPFR_RNDN);
        mpfr_sqrt(r19332, r19331, MPFR_RNDN);
        mpfr_add(r19333, r19332, r19327, MPFR_RNDN);
        mpfr_mul(r19334, r19326, r19333, MPFR_RNDN);
        mpfr_sqrt(r19335, r19334, MPFR_RNDN);
        mpfr_mul(r19336, r19325, r19335, MPFR_RNDN);
        return mpfr_get_d(r19336, MPFR_RNDN);
}

static mpfr_t r19337, r19338, r19339, r19340, r19341, r19342, r19343, r19344, r19345, r19346, r19347, r19348, r19349, r19350, r19351, r19352, r19353, r19354, r19355, r19356, r19357, r19358, r19359, r19360, r19361, r19362, r19363, r19364, r19365, r19366, r19367;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19337);
        mpfr_init_set_str(r19338, "-1.3335604f-24", 10, MPFR_RNDN);
        mpfr_init(r19339);
        mpfr_init_set_str(r19340, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19341, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19342);
        mpfr_init(r19343);
        mpfr_init(r19344);
        mpfr_init(r19345);
        mpfr_init(r19346);
        mpfr_init(r19347);
        mpfr_init(r19348);
        mpfr_init(r19349);
        mpfr_init(r19350);
        mpfr_init(r19351);
        mpfr_init(r19352);
        mpfr_init(r19353);
        mpfr_init_set_str(r19354, "6.4633127f+15", 10, MPFR_RNDN);
        mpfr_init(r19355);
        mpfr_init(r19356);
        mpfr_init(r19357);
        mpfr_init(r19358);
        mpfr_init(r19359);
        mpfr_init(r19360);
        mpfr_init(r19361);
        mpfr_init(r19362);
        mpfr_init(r19363);
        mpfr_init(r19364);
        mpfr_init(r19365);
        mpfr_init(r19366);
        mpfr_init(r19367);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19337, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19339, mpfr_cmp(r19337, r19338) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19342, im, MPFR_RNDN);
        mpfr_mul(r19343, r19341, r19342, MPFR_RNDN);
        mpfr_mul(r19344, r19343, r19342, MPFR_RNDN);
        mpfr_sqrt(r19345, r19344, MPFR_RNDN);
        mpfr_sqr(r19346, r19337, MPFR_RNDN);
        mpfr_mul(r19347, r19342, r19342, MPFR_RNDN);
        mpfr_add(r19348, r19346, r19347, MPFR_RNDN);
        mpfr_sqrt(r19349, r19348, MPFR_RNDN);
        mpfr_sub(r19350, r19349, r19337, MPFR_RNDN);
        mpfr_sqrt(r19351, r19350, MPFR_RNDN);
        mpfr_div(r19352, r19345, r19351, MPFR_RNDN);
        mpfr_mul(r19353, r19340, r19352, MPFR_RNDN);
        ;
        mpfr_set_si(r19355, mpfr_cmp(r19337, r19354) <= 0, MPFR_RNDN);
        mpfr_cbrt(r19356, r19349, MPFR_RNDN);
        mpfr_mul(r19357, r19356, r19356, MPFR_RNDN); mpfr_mul(r19357, r19357, r19356, MPFR_RNDN);
        mpfr_add(r19358, r19357, r19337, MPFR_RNDN);
        mpfr_mul(r19359, r19341, r19358, MPFR_RNDN);
        mpfr_sqrt(r19360, r19359, MPFR_RNDN);
        mpfr_mul(r19361, r19340, r19360, MPFR_RNDN);
        mpfr_add(r19362, r19337, r19337, MPFR_RNDN);
        mpfr_mul(r19363, r19341, r19362, MPFR_RNDN);
        mpfr_sqrt(r19364, r19363, MPFR_RNDN);
        mpfr_mul(r19365, r19340, r19364, MPFR_RNDN);
        if (mpfr_get_si(r19355, MPFR_RNDN)) { mpfr_set(r19366, r19361, MPFR_RNDN); } else { mpfr_set(r19366, r19365, MPFR_RNDN); };
        if (mpfr_get_si(r19339, MPFR_RNDN)) { mpfr_set(r19367, r19353, MPFR_RNDN); } else { mpfr_set(r19367, r19366, MPFR_RNDN); };
        return mpfr_get_d(r19367, MPFR_RNDN);
}

static mpfr_t r19368, r19369, r19370, r19371, r19372, r19373, r19374, r19375, r19376, r19377, r19378, r19379, r19380, r19381, r19382, r19383, r19384, r19385, r19386, r19387, r19388, r19389, r19390, r19391, r19392, r19393, r19394, r19395, r19396, r19397, r19398;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19368);
        mpfr_init_set_str(r19369, "-1.3335604f-24", 10, MPFR_RNDN);
        mpfr_init(r19370);
        mpfr_init_set_str(r19371, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19372, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19373);
        mpfr_init(r19374);
        mpfr_init(r19375);
        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_set_str(r19385, "6.4633127f+15", 10, MPFR_RNDN);
        mpfr_init(r19386);
        mpfr_init(r19387);
        mpfr_init(r19388);
        mpfr_init(r19389);
        mpfr_init(r19390);
        mpfr_init(r19391);
        mpfr_init(r19392);
        mpfr_init(r19393);
        mpfr_init(r19394);
        mpfr_init(r19395);
        mpfr_init(r19396);
        mpfr_init(r19397);
        mpfr_init(r19398);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19368, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19370, mpfr_cmp(r19368, r19369) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19373, im, MPFR_RNDN);
        mpfr_mul(r19374, r19372, r19373, MPFR_RNDN);
        mpfr_mul(r19375, r19374, r19373, MPFR_RNDN);
        mpfr_sqrt(r19376, r19375, MPFR_RNDN);
        mpfr_sqr(r19377, r19368, MPFR_RNDN);
        mpfr_mul(r19378, r19373, r19373, MPFR_RNDN);
        mpfr_add(r19379, r19377, r19378, MPFR_RNDN);
        mpfr_sqrt(r19380, r19379, MPFR_RNDN);
        mpfr_sub(r19381, r19380, r19368, MPFR_RNDN);
        mpfr_sqrt(r19382, r19381, MPFR_RNDN);
        mpfr_div(r19383, r19376, r19382, MPFR_RNDN);
        mpfr_mul(r19384, r19371, r19383, MPFR_RNDN);
        ;
        mpfr_set_si(r19386, mpfr_cmp(r19368, r19385) <= 0, MPFR_RNDN);
        mpfr_cbrt(r19387, r19380, MPFR_RNDN);
        mpfr_mul(r19388, r19387, r19387, MPFR_RNDN); mpfr_mul(r19388, r19388, r19387, MPFR_RNDN);
        mpfr_add(r19389, r19388, r19368, MPFR_RNDN);
        mpfr_mul(r19390, r19372, r19389, MPFR_RNDN);
        mpfr_sqrt(r19391, r19390, MPFR_RNDN);
        mpfr_mul(r19392, r19371, r19391, MPFR_RNDN);
        mpfr_add(r19393, r19368, r19368, MPFR_RNDN);
        mpfr_mul(r19394, r19372, r19393, MPFR_RNDN);
        mpfr_sqrt(r19395, r19394, MPFR_RNDN);
        mpfr_mul(r19396, r19371, r19395, MPFR_RNDN);
        if (mpfr_get_si(r19386, MPFR_RNDN)) { mpfr_set(r19397, r19392, MPFR_RNDN); } else { mpfr_set(r19397, r19396, MPFR_RNDN); };
        if (mpfr_get_si(r19370, MPFR_RNDN)) { mpfr_set(r19398, r19384, MPFR_RNDN); } else { mpfr_set(r19398, r19397, MPFR_RNDN); };
        return mpfr_get_d(r19398, MPFR_RNDN);
}

