#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 r11012 = 0.5f;
        float r11013 = 2.0f;
        float r11014 = re;
        float r11015 = r11014 * r11014;
        float r11016 = im;
        float r11017 = r11016 * r11016;
        float r11018 = r11015 + r11017;
        float r11019 = sqrt(r11018);
        float r11020 = r11019 + r11014;
        float r11021 = r11013 * r11020;
        float r11022 = sqrt(r11021);
        float r11023 = r11012 * r11022;
        return r11023;
}

double f_id(double re, double im) {
        double r11024 = 0.5;
        double r11025 = 2.0;
        double r11026 = re;
        double r11027 = r11026 * r11026;
        double r11028 = im;
        double r11029 = r11028 * r11028;
        double r11030 = r11027 + r11029;
        double r11031 = sqrt(r11030);
        double r11032 = r11031 + r11026;
        double r11033 = r11025 * r11032;
        double r11034 = sqrt(r11033);
        double r11035 = r11024 * r11034;
        return r11035;
}


double f_of(float re, float im) {
        float r11036 = re;
        float r11037 = im;
        float r11038 = r11036 + r11037;
        float r11039 = 2.0f;
        float r11040 = r11038 * r11039;
        float r11041 = -3.603985493900769e-171f;
        bool r11042 = r11040 <= r11041;
        float r11043 = 0.5f;
        float r11044 = r11037 * r11037;
        float r11045 = r11039 * r11044;
        float r11046 = sqrt(r11045);
        float r11047 = r11036 * r11036;
        float r11048 = r11044 + r11047;
        float r11049 = sqrt(r11048);
        float r11050 = r11049 - r11036;
        float r11051 = sqrt(r11050);
        float r11052 = r11046 / r11051;
        float r11053 = r11043 * r11052;
        float r11054 = 1.2242336029248994e-163f;
        bool r11055 = r11040 <= r11054;
        float r11056 = r11036 + r11036;
        float r11057 = r11039 * r11056;
        float r11058 = sqrt(r11057);
        float r11059 = r11058 * r11043;
        float r11060 = 1.0040909737016246e+152f;
        bool r11061 = r11040 <= r11060;
        float r11062 = sqrt(r11049);
        float r11063 = cbrt(r11049);
        float r11064 = r11063 * r11063;
        float r11065 = r11064 * r11063;
        float r11066 = sqrt(r11065);
        float r11067 = r11062 * r11066;
        float r11068 = r11067 + r11036;
        float r11069 = r11068 * r11039;
        float r11070 = sqrt(r11069);
        float r11071 = r11070 * r11043;
        float r11072 = 3.135219143261196e+197f;
        bool r11073 = r11040 <= r11072;
        float r11074 = sqrt(r11040);
        float r11075 = r11043 * r11074;
        float r11076 = r11073 ? r11075 : r11059;
        float r11077 = r11061 ? r11071 : r11076;
        float r11078 = r11055 ? r11059 : r11077;
        float r11079 = r11042 ? r11053 : r11078;
        return r11079;
}

double f_od(double re, double im) {
        double r11080 = re;
        double r11081 = im;
        double r11082 = r11080 + r11081;
        double r11083 = 2.0;
        double r11084 = r11082 * r11083;
        double r11085 = -3.603985493900769e-171;
        bool r11086 = r11084 <= r11085;
        double r11087 = 0.5;
        double r11088 = r11081 * r11081;
        double r11089 = r11083 * r11088;
        double r11090 = sqrt(r11089);
        double r11091 = r11080 * r11080;
        double r11092 = r11088 + r11091;
        double r11093 = sqrt(r11092);
        double r11094 = r11093 - r11080;
        double r11095 = sqrt(r11094);
        double r11096 = r11090 / r11095;
        double r11097 = r11087 * r11096;
        double r11098 = 1.2242336029248994e-163;
        bool r11099 = r11084 <= r11098;
        double r11100 = r11080 + r11080;
        double r11101 = r11083 * r11100;
        double r11102 = sqrt(r11101);
        double r11103 = r11102 * r11087;
        double r11104 = 1.0040909737016246e+152;
        bool r11105 = r11084 <= r11104;
        double r11106 = sqrt(r11093);
        double r11107 = cbrt(r11093);
        double r11108 = r11107 * r11107;
        double r11109 = r11108 * r11107;
        double r11110 = sqrt(r11109);
        double r11111 = r11106 * r11110;
        double r11112 = r11111 + r11080;
        double r11113 = r11112 * r11083;
        double r11114 = sqrt(r11113);
        double r11115 = r11114 * r11087;
        double r11116 = 3.135219143261196e+197;
        bool r11117 = r11084 <= r11116;
        double r11118 = sqrt(r11084);
        double r11119 = r11087 * r11118;
        double r11120 = r11117 ? r11119 : r11103;
        double r11121 = r11105 ? r11115 : r11120;
        double r11122 = r11099 ? r11103 : r11121;
        double r11123 = r11086 ? r11097 : r11122;
        return r11123;
}

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 r11124, r11125, r11126, r11127, r11128, r11129, r11130, r11131, r11132, r11133, r11134, r11135;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r11124, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r11125, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11126);
        mpfr_init(r11127);
        mpfr_init(r11128);
        mpfr_init(r11129);
        mpfr_init(r11130);
        mpfr_init(r11131);
        mpfr_init(r11132);
        mpfr_init(r11133);
        mpfr_init(r11134);
        mpfr_init(r11135);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r11126, re, MPFR_RNDN);
        mpfr_mul(r11127, r11126, r11126, MPFR_RNDN);
        mpfr_set_d(r11128, im, MPFR_RNDN);
        mpfr_mul(r11129, r11128, r11128, MPFR_RNDN);
        mpfr_add(r11130, r11127, r11129, MPFR_RNDN);
        mpfr_sqrt(r11131, r11130, MPFR_RNDN);
        mpfr_add(r11132, r11131, r11126, MPFR_RNDN);
        mpfr_mul(r11133, r11125, r11132, MPFR_RNDN);
        mpfr_sqrt(r11134, r11133, MPFR_RNDN);
        mpfr_mul(r11135, r11124, r11134, MPFR_RNDN);
        return mpfr_get_d(r11135, MPFR_RNDN);
}

static mpfr_t r11136, r11137, r11138, r11139, r11140, r11141, r11142, r11143, r11144, r11145, r11146, r11147, r11148, r11149, r11150, r11151, r11152, r11153, r11154, r11155, r11156, r11157, r11158, r11159, r11160, r11161, r11162, r11163, r11164, r11165, r11166, r11167, r11168, r11169, r11170, r11171, r11172, r11173, r11174, r11175, r11176, r11177, r11178, r11179;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init(r11136);
        mpfr_init(r11137);
        mpfr_init(r11138);
        mpfr_init_set_str(r11139, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11140);
        mpfr_init_set_str(r11141, "-3.603985493900769e-171", 10, MPFR_RNDN);
        mpfr_init(r11142);
        mpfr_init_set_str(r11143, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11144);
        mpfr_init(r11145);
        mpfr_init(r11146);
        mpfr_init(r11147);
        mpfr_init(r11148);
        mpfr_init(r11149);
        mpfr_init(r11150);
        mpfr_init(r11151);
        mpfr_init(r11152);
        mpfr_init(r11153);
        mpfr_init_set_str(r11154, "1.2242336029248994e-163", 10, MPFR_RNDN);
        mpfr_init(r11155);
        mpfr_init(r11156);
        mpfr_init(r11157);
        mpfr_init(r11158);
        mpfr_init(r11159);
        mpfr_init_set_str(r11160, "1.0040909737016246e+152", 10, MPFR_RNDN);
        mpfr_init(r11161);
        mpfr_init(r11162);
        mpfr_init(r11163);
        mpfr_init(r11164);
        mpfr_init(r11165);
        mpfr_init(r11166);
        mpfr_init(r11167);
        mpfr_init(r11168);
        mpfr_init(r11169);
        mpfr_init(r11170);
        mpfr_init(r11171);
        mpfr_init_set_str(r11172, "3.135219143261196e+197", 10, MPFR_RNDN);
        mpfr_init(r11173);
        mpfr_init(r11174);
        mpfr_init(r11175);
        mpfr_init(r11176);
        mpfr_init(r11177);
        mpfr_init(r11178);
        mpfr_init(r11179);
}

double f_fm(double re, double im) {
        mpfr_set_d(r11136, re, MPFR_RNDN);
        mpfr_set_d(r11137, im, MPFR_RNDN);
        mpfr_add(r11138, r11136, r11137, MPFR_RNDN);
        ;
        mpfr_mul(r11140, r11138, r11139, MPFR_RNDN);
        ;
        mpfr_set_si(r11142, mpfr_cmp(r11140, r11141) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11144, r11137, r11137, MPFR_RNDN);
        mpfr_mul(r11145, r11139, r11144, MPFR_RNDN);
        mpfr_sqrt(r11146, r11145, MPFR_RNDN);
        mpfr_mul(r11147, r11136, r11136, MPFR_RNDN);
        mpfr_add(r11148, r11144, r11147, MPFR_RNDN);
        mpfr_sqrt(r11149, r11148, MPFR_RNDN);
        mpfr_sub(r11150, r11149, r11136, MPFR_RNDN);
        mpfr_sqrt(r11151, r11150, MPFR_RNDN);
        mpfr_div(r11152, r11146, r11151, MPFR_RNDN);
        mpfr_mul(r11153, r11143, r11152, MPFR_RNDN);
        ;
        mpfr_set_si(r11155, mpfr_cmp(r11140, r11154) <= 0, MPFR_RNDN);
        mpfr_add(r11156, r11136, r11136, MPFR_RNDN);
        mpfr_mul(r11157, r11139, r11156, MPFR_RNDN);
        mpfr_sqrt(r11158, r11157, MPFR_RNDN);
        mpfr_mul(r11159, r11158, r11143, MPFR_RNDN);
        ;
        mpfr_set_si(r11161, mpfr_cmp(r11140, r11160) <= 0, MPFR_RNDN);
        mpfr_sqrt(r11162, r11149, MPFR_RNDN);
        mpfr_cbrt(r11163, r11149, MPFR_RNDN);
        mpfr_mul(r11164, r11163, r11163, MPFR_RNDN);
        mpfr_mul(r11165, r11164, r11163, MPFR_RNDN);
        mpfr_sqrt(r11166, r11165, MPFR_RNDN);
        mpfr_mul(r11167, r11162, r11166, MPFR_RNDN);
        mpfr_add(r11168, r11167, r11136, MPFR_RNDN);
        mpfr_mul(r11169, r11168, r11139, MPFR_RNDN);
        mpfr_sqrt(r11170, r11169, MPFR_RNDN);
        mpfr_mul(r11171, r11170, r11143, MPFR_RNDN);
        ;
        mpfr_set_si(r11173, mpfr_cmp(r11140, r11172) <= 0, MPFR_RNDN);
        mpfr_sqrt(r11174, r11140, MPFR_RNDN);
        mpfr_mul(r11175, r11143, r11174, MPFR_RNDN);
        if (mpfr_get_si(r11173, MPFR_RNDN)) { mpfr_set(r11176, r11175, MPFR_RNDN); } else { mpfr_set(r11176, r11159, MPFR_RNDN); };
        if (mpfr_get_si(r11161, MPFR_RNDN)) { mpfr_set(r11177, r11171, MPFR_RNDN); } else { mpfr_set(r11177, r11176, MPFR_RNDN); };
        if (mpfr_get_si(r11155, MPFR_RNDN)) { mpfr_set(r11178, r11159, MPFR_RNDN); } else { mpfr_set(r11178, r11177, MPFR_RNDN); };
        if (mpfr_get_si(r11142, MPFR_RNDN)) { mpfr_set(r11179, r11153, MPFR_RNDN); } else { mpfr_set(r11179, r11178, MPFR_RNDN); };
        return mpfr_get_d(r11179, MPFR_RNDN);
}

static mpfr_t r11180, r11181, r11182, r11183, r11184, r11185, r11186, r11187, r11188, r11189, r11190, r11191, r11192, r11193, r11194, r11195, r11196, r11197, r11198, r11199, r11200, r11201, r11202, r11203, r11204, r11205, r11206, r11207, r11208, r11209, r11210, r11211, r11212, r11213, r11214, r11215, r11216, r11217, r11218, r11219, r11220, r11221, r11222, r11223;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init(r11180);
        mpfr_init(r11181);
        mpfr_init(r11182);
        mpfr_init_set_str(r11183, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11184);
        mpfr_init_set_str(r11185, "-3.603985493900769e-171", 10, MPFR_RNDN);
        mpfr_init(r11186);
        mpfr_init_set_str(r11187, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11188);
        mpfr_init(r11189);
        mpfr_init(r11190);
        mpfr_init(r11191);
        mpfr_init(r11192);
        mpfr_init(r11193);
        mpfr_init(r11194);
        mpfr_init(r11195);
        mpfr_init(r11196);
        mpfr_init(r11197);
        mpfr_init_set_str(r11198, "1.2242336029248994e-163", 10, MPFR_RNDN);
        mpfr_init(r11199);
        mpfr_init(r11200);
        mpfr_init(r11201);
        mpfr_init(r11202);
        mpfr_init(r11203);
        mpfr_init_set_str(r11204, "1.0040909737016246e+152", 10, MPFR_RNDN);
        mpfr_init(r11205);
        mpfr_init(r11206);
        mpfr_init(r11207);
        mpfr_init(r11208);
        mpfr_init(r11209);
        mpfr_init(r11210);
        mpfr_init(r11211);
        mpfr_init(r11212);
        mpfr_init(r11213);
        mpfr_init(r11214);
        mpfr_init(r11215);
        mpfr_init_set_str(r11216, "3.135219143261196e+197", 10, MPFR_RNDN);
        mpfr_init(r11217);
        mpfr_init(r11218);
        mpfr_init(r11219);
        mpfr_init(r11220);
        mpfr_init(r11221);
        mpfr_init(r11222);
        mpfr_init(r11223);
}

double f_dm(double re, double im) {
        mpfr_set_d(r11180, re, MPFR_RNDN);
        mpfr_set_d(r11181, im, MPFR_RNDN);
        mpfr_add(r11182, r11180, r11181, MPFR_RNDN);
        ;
        mpfr_mul(r11184, r11182, r11183, MPFR_RNDN);
        ;
        mpfr_set_si(r11186, mpfr_cmp(r11184, r11185) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11188, r11181, r11181, MPFR_RNDN);
        mpfr_mul(r11189, r11183, r11188, MPFR_RNDN);
        mpfr_sqrt(r11190, r11189, MPFR_RNDN);
        mpfr_mul(r11191, r11180, r11180, MPFR_RNDN);
        mpfr_add(r11192, r11188, r11191, MPFR_RNDN);
        mpfr_sqrt(r11193, r11192, MPFR_RNDN);
        mpfr_sub(r11194, r11193, r11180, MPFR_RNDN);
        mpfr_sqrt(r11195, r11194, MPFR_RNDN);
        mpfr_div(r11196, r11190, r11195, MPFR_RNDN);
        mpfr_mul(r11197, r11187, r11196, MPFR_RNDN);
        ;
        mpfr_set_si(r11199, mpfr_cmp(r11184, r11198) <= 0, MPFR_RNDN);
        mpfr_add(r11200, r11180, r11180, MPFR_RNDN);
        mpfr_mul(r11201, r11183, r11200, MPFR_RNDN);
        mpfr_sqrt(r11202, r11201, MPFR_RNDN);
        mpfr_mul(r11203, r11202, r11187, MPFR_RNDN);
        ;
        mpfr_set_si(r11205, mpfr_cmp(r11184, r11204) <= 0, MPFR_RNDN);
        mpfr_sqrt(r11206, r11193, MPFR_RNDN);
        mpfr_cbrt(r11207, r11193, MPFR_RNDN);
        mpfr_mul(r11208, r11207, r11207, MPFR_RNDN);
        mpfr_mul(r11209, r11208, r11207, MPFR_RNDN);
        mpfr_sqrt(r11210, r11209, MPFR_RNDN);
        mpfr_mul(r11211, r11206, r11210, MPFR_RNDN);
        mpfr_add(r11212, r11211, r11180, MPFR_RNDN);
        mpfr_mul(r11213, r11212, r11183, MPFR_RNDN);
        mpfr_sqrt(r11214, r11213, MPFR_RNDN);
        mpfr_mul(r11215, r11214, r11187, MPFR_RNDN);
        ;
        mpfr_set_si(r11217, mpfr_cmp(r11184, r11216) <= 0, MPFR_RNDN);
        mpfr_sqrt(r11218, r11184, MPFR_RNDN);
        mpfr_mul(r11219, r11187, r11218, MPFR_RNDN);
        if (mpfr_get_si(r11217, MPFR_RNDN)) { mpfr_set(r11220, r11219, MPFR_RNDN); } else { mpfr_set(r11220, r11203, MPFR_RNDN); };
        if (mpfr_get_si(r11205, MPFR_RNDN)) { mpfr_set(r11221, r11215, MPFR_RNDN); } else { mpfr_set(r11221, r11220, MPFR_RNDN); };
        if (mpfr_get_si(r11199, MPFR_RNDN)) { mpfr_set(r11222, r11203, MPFR_RNDN); } else { mpfr_set(r11222, r11221, MPFR_RNDN); };
        if (mpfr_get_si(r11186, MPFR_RNDN)) { mpfr_set(r11223, r11197, MPFR_RNDN); } else { mpfr_set(r11223, r11222, MPFR_RNDN); };
        return mpfr_get_d(r11223, MPFR_RNDN);
}

