#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 r19175 = 0.5f;
        float r19176 = 2.0f;
        float r19177 = re;
        float r19178 = r19177 * r19177;
        float r19179 = im;
        float r19180 = r19179 * r19179;
        float r19181 = r19178 + r19180;
        float r19182 = sqrt(r19181);
        float r19183 = r19182 + r19177;
        float r19184 = r19176 * r19183;
        float r19185 = sqrt(r19184);
        float r19186 = r19175 * r19185;
        return r19186;
}

double f_id(double re, double im) {
        double r19187 = 0.5;
        double r19188 = 2.0;
        double r19189 = re;
        double r19190 = r19189 * r19189;
        double r19191 = im;
        double r19192 = r19191 * r19191;
        double r19193 = r19190 + r19192;
        double r19194 = sqrt(r19193);
        double r19195 = r19194 + r19189;
        double r19196 = r19188 * r19195;
        double r19197 = sqrt(r19196);
        double r19198 = r19187 * r19197;
        return r19198;
}


double f_of(float re, float im) {
        float r19199 = re;
        float r19200 = r19199 * r19199;
        float r19201 = im;
        float r19202 = r19201 * r19201;
        float r19203 = r19200 + r19202;
        float r19204 = sqrt(r19203);
        float r19205 = r19204 + r19199;
        float r19206 = 7.781907115276039e-20f;
        bool r19207 = r19205 <= r19206;
        float r19208 = 0.5f;
        float r19209 = 2.0f;
        float r19210 = r19209 * r19201;
        float r19211 = r19210 * r19201;
        float r19212 = sqrt(r19211);
        float r19213 = r19199 * r19199;
        float r19214 = r19213 + r19202;
        float r19215 = sqrt(r19214);
        float r19216 = r19215 - r19199;
        float r19217 = sqrt(r19216);
        float r19218 = r19212 / r19217;
        float r19219 = r19208 * r19218;
        float r19220 = 7.382023762109006e+18f;
        bool r19221 = r19205 <= r19220;
        float r19222 = sqrt(r19215);
        float r19223 = r19222 * r19222;
        float r19224 = r19223 + r19199;
        float r19225 = r19209 * r19224;
        float r19226 = sqrt(r19225);
        float r19227 = r19208 * r19226;
        float r19228 = r19201 + r19199;
        float r19229 = r19209 * r19228;
        float r19230 = sqrt(r19229);
        float r19231 = r19208 * r19230;
        float r19232 = r19221 ? r19227 : r19231;
        float r19233 = r19207 ? r19219 : r19232;
        return r19233;
}

double f_od(double re, double im) {
        double r19234 = re;
        double r19235 = r19234 * r19234;
        double r19236 = im;
        double r19237 = r19236 * r19236;
        double r19238 = r19235 + r19237;
        double r19239 = sqrt(r19238);
        double r19240 = r19239 + r19234;
        double r19241 = 7.781907115276039e-20;
        bool r19242 = r19240 <= r19241;
        double r19243 = 0.5;
        double r19244 = 2.0;
        double r19245 = r19244 * r19236;
        double r19246 = r19245 * r19236;
        double r19247 = sqrt(r19246);
        double r19248 = r19234 * r19234;
        double r19249 = r19248 + r19237;
        double r19250 = sqrt(r19249);
        double r19251 = r19250 - r19234;
        double r19252 = sqrt(r19251);
        double r19253 = r19247 / r19252;
        double r19254 = r19243 * r19253;
        double r19255 = 7.382023762109006e+18;
        bool r19256 = r19240 <= r19255;
        double r19257 = sqrt(r19250);
        double r19258 = r19257 * r19257;
        double r19259 = r19258 + r19234;
        double r19260 = r19244 * r19259;
        double r19261 = sqrt(r19260);
        double r19262 = r19243 * r19261;
        double r19263 = r19236 + r19234;
        double r19264 = r19244 * r19263;
        double r19265 = sqrt(r19264);
        double r19266 = r19243 * r19265;
        double r19267 = r19256 ? r19262 : r19266;
        double r19268 = r19242 ? r19254 : r19267;
        return r19268;
}

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 r19269, r19270, r19271, r19272, r19273, r19274, r19275, r19276, r19277, r19278, r19279, r19280;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19269, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19270, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19271);
        mpfr_init(r19272);
        mpfr_init(r19273);
        mpfr_init(r19274);
        mpfr_init(r19275);
        mpfr_init(r19276);
        mpfr_init(r19277);
        mpfr_init(r19278);
        mpfr_init(r19279);
        mpfr_init(r19280);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19271, re, MPFR_RNDN);
        mpfr_mul(r19272, r19271, r19271, MPFR_RNDN);
        mpfr_set_d(r19273, im, MPFR_RNDN);
        mpfr_mul(r19274, r19273, r19273, MPFR_RNDN);
        mpfr_add(r19275, r19272, r19274, MPFR_RNDN);
        mpfr_sqrt(r19276, r19275, MPFR_RNDN);
        mpfr_add(r19277, r19276, r19271, MPFR_RNDN);
        mpfr_mul(r19278, r19270, r19277, MPFR_RNDN);
        mpfr_sqrt(r19279, r19278, MPFR_RNDN);
        mpfr_mul(r19280, r19269, r19279, MPFR_RNDN);
        return mpfr_get_d(r19280, MPFR_RNDN);
}

static mpfr_t r19281, r19282, r19283, r19284, r19285, r19286, r19287, r19288, r19289, r19290, r19291, r19292, r19293, r19294, r19295, r19296, r19297, r19298, r19299, r19300, r19301, r19302, r19303, r19304, r19305, r19306, r19307, r19308, r19309, r19310, r19311, r19312, r19313, r19314, r19315;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19281);
        mpfr_init(r19282);
        mpfr_init(r19283);
        mpfr_init(r19284);
        mpfr_init(r19285);
        mpfr_init(r19286);
        mpfr_init(r19287);
        mpfr_init_set_str(r19288, "7.781907f-20", 10, MPFR_RNDN);
        mpfr_init(r19289);
        mpfr_init_set_str(r19290, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19291, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19292);
        mpfr_init(r19293);
        mpfr_init(r19294);
        mpfr_init(r19295);
        mpfr_init(r19296);
        mpfr_init(r19297);
        mpfr_init(r19298);
        mpfr_init(r19299);
        mpfr_init(r19300);
        mpfr_init(r19301);
        mpfr_init_set_str(r19302, "7.382024f+18", 10, MPFR_RNDN);
        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);
        mpfr_init(r19312);
        mpfr_init(r19313);
        mpfr_init(r19314);
        mpfr_init(r19315);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19281, re, MPFR_RNDN);
        mpfr_mul(r19282, r19281, r19281, MPFR_RNDN);
        mpfr_set_d(r19283, im, MPFR_RNDN);
        mpfr_mul(r19284, r19283, r19283, MPFR_RNDN);
        mpfr_add(r19285, r19282, r19284, MPFR_RNDN);
        mpfr_sqrt(r19286, r19285, MPFR_RNDN);
        mpfr_add(r19287, r19286, r19281, MPFR_RNDN);
        ;
        mpfr_set_si(r19289, mpfr_cmp(r19287, r19288) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r19292, r19291, r19283, MPFR_RNDN);
        mpfr_mul(r19293, r19292, r19283, MPFR_RNDN);
        mpfr_sqrt(r19294, r19293, MPFR_RNDN);
        mpfr_sqr(r19295, r19281, MPFR_RNDN);
        mpfr_add(r19296, r19295, r19284, MPFR_RNDN);
        mpfr_sqrt(r19297, r19296, MPFR_RNDN);
        mpfr_sub(r19298, r19297, r19281, MPFR_RNDN);
        mpfr_sqrt(r19299, r19298, MPFR_RNDN);
        mpfr_div(r19300, r19294, r19299, MPFR_RNDN);
        mpfr_mul(r19301, r19290, r19300, MPFR_RNDN);
        ;
        mpfr_set_si(r19303, mpfr_cmp(r19287, r19302) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19304, r19297, MPFR_RNDN);
        mpfr_sqr(r19305, r19304, MPFR_RNDN);
        mpfr_add(r19306, r19305, r19281, MPFR_RNDN);
        mpfr_mul(r19307, r19291, r19306, MPFR_RNDN);
        mpfr_sqrt(r19308, r19307, MPFR_RNDN);
        mpfr_mul(r19309, r19290, r19308, MPFR_RNDN);
        mpfr_add(r19310, r19283, r19281, MPFR_RNDN);
        mpfr_mul(r19311, r19291, r19310, MPFR_RNDN);
        mpfr_sqrt(r19312, r19311, MPFR_RNDN);
        mpfr_mul(r19313, r19290, r19312, MPFR_RNDN);
        if (mpfr_get_si(r19303, MPFR_RNDN)) { mpfr_set(r19314, r19309, MPFR_RNDN); } else { mpfr_set(r19314, r19313, MPFR_RNDN); };
        if (mpfr_get_si(r19289, MPFR_RNDN)) { mpfr_set(r19315, r19301, MPFR_RNDN); } else { mpfr_set(r19315, r19314, MPFR_RNDN); };
        return mpfr_get_d(r19315, MPFR_RNDN);
}

static mpfr_t 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, r19348, r19349, r19350;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19316);
        mpfr_init(r19317);
        mpfr_init(r19318);
        mpfr_init(r19319);
        mpfr_init(r19320);
        mpfr_init(r19321);
        mpfr_init(r19322);
        mpfr_init_set_str(r19323, "7.781907f-20", 10, MPFR_RNDN);
        mpfr_init(r19324);
        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);
        mpfr_init_set_str(r19337, "7.382024f+18", 10, MPFR_RNDN);
        mpfr_init(r19338);
        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);
        mpfr_init(r19348);
        mpfr_init(r19349);
        mpfr_init(r19350);
}

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

