#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 r19204 = 0.5f;
        float r19205 = 2.0f;
        float r19206 = re;
        float r19207 = r19206 * r19206;
        float r19208 = im;
        float r19209 = r19208 * r19208;
        float r19210 = r19207 + r19209;
        float r19211 = sqrt(r19210);
        float r19212 = r19211 + r19206;
        float r19213 = r19205 * r19212;
        float r19214 = sqrt(r19213);
        float r19215 = r19204 * r19214;
        return r19215;
}

double f_id(double re, double im) {
        double r19216 = 0.5;
        double r19217 = 2.0;
        double r19218 = re;
        double r19219 = r19218 * r19218;
        double r19220 = im;
        double r19221 = r19220 * r19220;
        double r19222 = r19219 + r19221;
        double r19223 = sqrt(r19222);
        double r19224 = r19223 + r19218;
        double r19225 = r19217 * r19224;
        double r19226 = sqrt(r19225);
        double r19227 = r19216 * r19226;
        return r19227;
}


double f_of(float re, float im) {
        float r19228 = re;
        float r19229 = -6.6386501330895076e-12f;
        bool r19230 = r19228 <= r19229;
        float r19231 = im;
        float r19232 = r19231 * r19231;
        float r19233 = 2.0f;
        float r19234 = r19232 * r19233;
        float r19235 = sqrt(r19234);
        float r19236 = 0.5f;
        float r19237 = -2.0f;
        float r19238 = r19228 * r19237;
        float r19239 = sqrt(r19238);
        float r19240 = r19236 / r19239;
        float r19241 = r19235 * r19240;
        float r19242 = 43888257531904.0f;
        bool r19243 = r19228 <= r19242;
        float r19244 = r19228 * r19228;
        float r19245 = r19231 * r19231;
        float r19246 = r19244 + r19245;
        float r19247 = sqrt(r19246);
        float r19248 = r19247 + r19228;
        float r19249 = r19233 * r19248;
        float r19250 = sqrt(r19249);
        float r19251 = r19236 * r19250;
        float r19252 = 2.0f;
        float r19253 = r19252 * r19228;
        float r19254 = 0.5f;
        float r19255 = r19231 * r19254;
        float r19256 = r19228 / r19231;
        float r19257 = r19255 / r19256;
        float r19258 = r19253 + r19257;
        float r19259 = r19258 * r19233;
        float r19260 = sqrt(r19259);
        float r19261 = r19236 * r19260;
        float r19262 = r19243 ? r19251 : r19261;
        float r19263 = r19230 ? r19241 : r19262;
        return r19263;
}

double f_od(double re, double im) {
        double r19264 = re;
        double r19265 = -6.6386501330895076e-12;
        bool r19266 = r19264 <= r19265;
        double r19267 = im;
        double r19268 = r19267 * r19267;
        double r19269 = 2.0;
        double r19270 = r19268 * r19269;
        double r19271 = sqrt(r19270);
        double r19272 = 0.5;
        double r19273 = -2.0;
        double r19274 = r19264 * r19273;
        double r19275 = sqrt(r19274);
        double r19276 = r19272 / r19275;
        double r19277 = r19271 * r19276;
        double r19278 = 43888257531904.0;
        bool r19279 = r19264 <= r19278;
        double r19280 = r19264 * r19264;
        double r19281 = r19267 * r19267;
        double r19282 = r19280 + r19281;
        double r19283 = sqrt(r19282);
        double r19284 = r19283 + r19264;
        double r19285 = r19269 * r19284;
        double r19286 = sqrt(r19285);
        double r19287 = r19272 * r19286;
        double r19288 = 2.0;
        double r19289 = r19288 * r19264;
        double r19290 = 0.5;
        double r19291 = r19267 * r19290;
        double r19292 = r19264 / r19267;
        double r19293 = r19291 / r19292;
        double r19294 = r19289 + r19293;
        double r19295 = r19294 * r19269;
        double r19296 = sqrt(r19295);
        double r19297 = r19272 * r19296;
        double r19298 = r19279 ? r19287 : r19297;
        double r19299 = r19266 ? r19277 : r19298;
        return r19299;
}

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 r19300, r19301, r19302, r19303, r19304, r19305, r19306, r19307, r19308, r19309, r19310, r19311;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19300, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19301, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19302);
        mpfr_init(r19303);
        mpfr_init(r19304);
        mpfr_init(r19305);
        mpfr_init(r19306);
        mpfr_init(r19307);
        mpfr_init(r19308);
        mpfr_init(r19309);
        mpfr_init(r19310);
        mpfr_init(r19311);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19302, re, MPFR_RNDN);
        mpfr_mul(r19303, r19302, r19302, MPFR_RNDN);
        mpfr_set_d(r19304, im, MPFR_RNDN);
        mpfr_mul(r19305, r19304, r19304, MPFR_RNDN);
        mpfr_add(r19306, r19303, r19305, MPFR_RNDN);
        mpfr_sqrt(r19307, r19306, MPFR_RNDN);
        mpfr_add(r19308, r19307, r19302, MPFR_RNDN);
        mpfr_mul(r19309, r19301, r19308, MPFR_RNDN);
        mpfr_sqrt(r19310, r19309, MPFR_RNDN);
        mpfr_mul(r19311, r19300, r19310, MPFR_RNDN);
        return mpfr_get_d(r19311, MPFR_RNDN);
}

static mpfr_t r19312, r19313, r19314, r19315, r19316, r19317, r19318, r19319, r19320, r19321, r19322, r19323, r19324, r19325, r19326, r19327, r19328, r19329, r19330, r19331, r19332, r19333, r19334, r19335, r19336, r19337, r19338, r19339, r19340, r19341, r19342, r19343, r19344, r19345, r19346, r19347;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19312);
        mpfr_init_set_str(r19313, "-6.63865f-12", 10, MPFR_RNDN);
        mpfr_init(r19314);
        mpfr_init(r19315);
        mpfr_init(r19316);
        mpfr_init_set_str(r19317, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19318);
        mpfr_init(r19319);
        mpfr_init_set_str(r19320, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19321, "-2", 10, MPFR_RNDN);
        mpfr_init(r19322);
        mpfr_init(r19323);
        mpfr_init(r19324);
        mpfr_init(r19325);
        mpfr_init_set_str(r19326, "4.3888258f+13", 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_set_str(r19336, "2", 10, MPFR_RNDN);
        mpfr_init(r19337);
        mpfr_init_set_str(r19338, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19339);
        mpfr_init(r19340);
        mpfr_init(r19341);
        mpfr_init(r19342);
        mpfr_init(r19343);
        mpfr_init(r19344);
        mpfr_init(r19345);
        mpfr_init(r19346);
        mpfr_init(r19347);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19312, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19314, mpfr_cmp(r19312, r19313) <= 0, MPFR_RNDN);
        mpfr_set_d(r19315, im, MPFR_RNDN);
        mpfr_sqr(r19316, r19315, MPFR_RNDN);
        ;
        mpfr_mul(r19318, r19316, r19317, MPFR_RNDN);
        mpfr_sqrt(r19319, r19318, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r19322, r19312, r19321, MPFR_RNDN);
        mpfr_sqrt(r19323, r19322, MPFR_RNDN);
        mpfr_div(r19324, r19320, r19323, MPFR_RNDN);
        mpfr_mul(r19325, r19319, r19324, MPFR_RNDN);
        ;
        mpfr_set_si(r19327, mpfr_cmp(r19312, r19326) <= 0, MPFR_RNDN);
        mpfr_mul(r19328, r19312, r19312, MPFR_RNDN);
        mpfr_mul(r19329, r19315, r19315, MPFR_RNDN);
        mpfr_add(r19330, r19328, r19329, MPFR_RNDN);
        mpfr_sqrt(r19331, r19330, MPFR_RNDN);
        mpfr_add(r19332, r19331, r19312, MPFR_RNDN);
        mpfr_mul(r19333, r19317, r19332, MPFR_RNDN);
        mpfr_sqrt(r19334, r19333, MPFR_RNDN);
        mpfr_mul(r19335, r19320, r19334, MPFR_RNDN);
        ;
        mpfr_mul(r19337, r19336, r19312, MPFR_RNDN);
        ;
        mpfr_mul(r19339, r19315, r19338, MPFR_RNDN);
        mpfr_div(r19340, r19312, r19315, MPFR_RNDN);
        mpfr_div(r19341, r19339, r19340, MPFR_RNDN);
        mpfr_add(r19342, r19337, r19341, MPFR_RNDN);
        mpfr_mul(r19343, r19342, r19317, MPFR_RNDN);
        mpfr_sqrt(r19344, r19343, MPFR_RNDN);
        mpfr_mul(r19345, r19320, r19344, MPFR_RNDN);
        if (mpfr_get_si(r19327, MPFR_RNDN)) { mpfr_set(r19346, r19335, MPFR_RNDN); } else { mpfr_set(r19346, r19345, MPFR_RNDN); };
        if (mpfr_get_si(r19314, MPFR_RNDN)) { mpfr_set(r19347, r19325, MPFR_RNDN); } else { mpfr_set(r19347, r19346, MPFR_RNDN); };
        return mpfr_get_d(r19347, MPFR_RNDN);
}

static mpfr_t r19348, r19349, r19350, r19351, r19352, r19353, r19354, r19355, r19356, r19357, r19358, r19359, r19360, r19361, r19362, r19363, r19364, r19365, r19366, r19367, r19368, r19369, r19370, r19371, r19372, r19373, r19374, r19375, r19376, r19377, r19378, r19379, r19380, r19381, r19382, r19383;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19348);
        mpfr_init_set_str(r19349, "-6.63865f-12", 10, MPFR_RNDN);
        mpfr_init(r19350);
        mpfr_init(r19351);
        mpfr_init(r19352);
        mpfr_init_set_str(r19353, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19354);
        mpfr_init(r19355);
        mpfr_init_set_str(r19356, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19357, "-2", 10, MPFR_RNDN);
        mpfr_init(r19358);
        mpfr_init(r19359);
        mpfr_init(r19360);
        mpfr_init(r19361);
        mpfr_init_set_str(r19362, "4.3888258f+13", 10, MPFR_RNDN);
        mpfr_init(r19363);
        mpfr_init(r19364);
        mpfr_init(r19365);
        mpfr_init(r19366);
        mpfr_init(r19367);
        mpfr_init(r19368);
        mpfr_init(r19369);
        mpfr_init(r19370);
        mpfr_init(r19371);
        mpfr_init_set_str(r19372, "2", 10, MPFR_RNDN);
        mpfr_init(r19373);
        mpfr_init_set_str(r19374, "1/2", 10, MPFR_RNDN);
        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);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19348, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19350, mpfr_cmp(r19348, r19349) <= 0, MPFR_RNDN);
        mpfr_set_d(r19351, im, MPFR_RNDN);
        mpfr_sqr(r19352, r19351, MPFR_RNDN);
        ;
        mpfr_mul(r19354, r19352, r19353, MPFR_RNDN);
        mpfr_sqrt(r19355, r19354, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r19358, r19348, r19357, MPFR_RNDN);
        mpfr_sqrt(r19359, r19358, MPFR_RNDN);
        mpfr_div(r19360, r19356, r19359, MPFR_RNDN);
        mpfr_mul(r19361, r19355, r19360, MPFR_RNDN);
        ;
        mpfr_set_si(r19363, mpfr_cmp(r19348, r19362) <= 0, MPFR_RNDN);
        mpfr_mul(r19364, r19348, r19348, MPFR_RNDN);
        mpfr_mul(r19365, r19351, r19351, MPFR_RNDN);
        mpfr_add(r19366, r19364, r19365, MPFR_RNDN);
        mpfr_sqrt(r19367, r19366, MPFR_RNDN);
        mpfr_add(r19368, r19367, r19348, MPFR_RNDN);
        mpfr_mul(r19369, r19353, r19368, MPFR_RNDN);
        mpfr_sqrt(r19370, r19369, MPFR_RNDN);
        mpfr_mul(r19371, r19356, r19370, MPFR_RNDN);
        ;
        mpfr_mul(r19373, r19372, r19348, MPFR_RNDN);
        ;
        mpfr_mul(r19375, r19351, r19374, MPFR_RNDN);
        mpfr_div(r19376, r19348, r19351, MPFR_RNDN);
        mpfr_div(r19377, r19375, r19376, MPFR_RNDN);
        mpfr_add(r19378, r19373, r19377, MPFR_RNDN);
        mpfr_mul(r19379, r19378, r19353, MPFR_RNDN);
        mpfr_sqrt(r19380, r19379, MPFR_RNDN);
        mpfr_mul(r19381, r19356, r19380, MPFR_RNDN);
        if (mpfr_get_si(r19363, MPFR_RNDN)) { mpfr_set(r19382, r19371, MPFR_RNDN); } else { mpfr_set(r19382, r19381, MPFR_RNDN); };
        if (mpfr_get_si(r19350, MPFR_RNDN)) { mpfr_set(r19383, r19361, MPFR_RNDN); } else { mpfr_set(r19383, r19382, MPFR_RNDN); };
        return mpfr_get_d(r19383, MPFR_RNDN);
}

