#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 r38098 = 0.5;
        float r38099 = 2.0;
        float r38100 = re;
        float r38101 = r38100 * r38100;
        float r38102 = im;
        float r38103 = r38102 * r38102;
        float r38104 = r38101 + r38103;
        float r38105 = sqrt(r38104);
        float r38106 = r38105 + r38100;
        float r38107 = r38099 * r38106;
        float r38108 = sqrt(r38107);
        float r38109 = r38098 * r38108;
        return r38109;
}

double f_id(double re, double im) {
        double r38110 = 0.5;
        double r38111 = 2.0;
        double r38112 = re;
        double r38113 = r38112 * r38112;
        double r38114 = im;
        double r38115 = r38114 * r38114;
        double r38116 = r38113 + r38115;
        double r38117 = sqrt(r38116);
        double r38118 = r38117 + r38112;
        double r38119 = r38111 * r38118;
        double r38120 = sqrt(r38119);
        double r38121 = r38110 * r38120;
        return r38121;
}


double f_of(float re, float im) {
        float r38122 = re;
        float r38123 = -2.7472165575793594e+20;
        bool r38124 = r38122 <= r38123;
        float r38125 = 0.5;
        float r38126 = im;
        float r38127 = 2.0;
        float r38128 = r38126 * r38127;
        float r38129 = r38128 * r38126;
        float r38130 = sqrt(r38129);
        float r38131 = -r38122;
        float r38132 = r38131 - r38122;
        float r38133 = sqrt(r38132);
        float r38134 = r38130 / r38133;
        float r38135 = r38125 * r38134;
        float r38136 = -1.7437483008386394e-66;
        bool r38137 = r38122 <= r38136;
        float r38138 = sqrt(r38127);
        float r38139 = -r38126;
        float r38140 = r38138 * r38139;
        float r38141 = r38125 * r38140;
        float r38142 = r38126 * r38126;
        float r38143 = r38122 * r38122;
        float r38144 = r38142 + r38143;
        float r38145 = sqrt(r38144);
        float r38146 = r38145 - r38122;
        float r38147 = sqrt(r38146);
        float r38148 = r38141 / r38147;
        float r38149 = 1.0701985037934348e-08;
        bool r38150 = r38122 <= r38149;
        float r38151 = r38143 + r38142;
        float r38152 = sqrt(r38151);
        float r38153 = sqrt(r38152);
        float r38154 = r38153 * r38153;
        float r38155 = r38154 + r38122;
        float r38156 = r38127 * r38155;
        float r38157 = sqrt(r38156);
        float r38158 = r38125 * r38157;
        float r38159 = r38122 + r38122;
        float r38160 = r38127 * r38159;
        float r38161 = sqrt(r38160);
        float r38162 = r38125 * r38161;
        float r38163 = r38150 ? r38158 : r38162;
        float r38164 = r38137 ? r38148 : r38163;
        float r38165 = r38124 ? r38135 : r38164;
        return r38165;
}

double f_od(double re, double im) {
        double r38166 = re;
        double r38167 = -2.7472165575793594e+20;
        bool r38168 = r38166 <= r38167;
        double r38169 = 0.5;
        double r38170 = im;
        double r38171 = 2.0;
        double r38172 = r38170 * r38171;
        double r38173 = r38172 * r38170;
        double r38174 = sqrt(r38173);
        double r38175 = -r38166;
        double r38176 = r38175 - r38166;
        double r38177 = sqrt(r38176);
        double r38178 = r38174 / r38177;
        double r38179 = r38169 * r38178;
        double r38180 = -1.7437483008386394e-66;
        bool r38181 = r38166 <= r38180;
        double r38182 = sqrt(r38171);
        double r38183 = -r38170;
        double r38184 = r38182 * r38183;
        double r38185 = r38169 * r38184;
        double r38186 = r38170 * r38170;
        double r38187 = r38166 * r38166;
        double r38188 = r38186 + r38187;
        double r38189 = sqrt(r38188);
        double r38190 = r38189 - r38166;
        double r38191 = sqrt(r38190);
        double r38192 = r38185 / r38191;
        double r38193 = 1.0701985037934348e-08;
        bool r38194 = r38166 <= r38193;
        double r38195 = r38187 + r38186;
        double r38196 = sqrt(r38195);
        double r38197 = sqrt(r38196);
        double r38198 = r38197 * r38197;
        double r38199 = r38198 + r38166;
        double r38200 = r38171 * r38199;
        double r38201 = sqrt(r38200);
        double r38202 = r38169 * r38201;
        double r38203 = r38166 + r38166;
        double r38204 = r38171 * r38203;
        double r38205 = sqrt(r38204);
        double r38206 = r38169 * r38205;
        double r38207 = r38194 ? r38202 : r38206;
        double r38208 = r38181 ? r38192 : r38207;
        double r38209 = r38168 ? r38179 : r38208;
        return r38209;
}

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 r38210, r38211, r38212, r38213, r38214, r38215, r38216, r38217, r38218, r38219, r38220, r38221;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r38210, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r38211, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38212);
        mpfr_init(r38213);
        mpfr_init(r38214);
        mpfr_init(r38215);
        mpfr_init(r38216);
        mpfr_init(r38217);
        mpfr_init(r38218);
        mpfr_init(r38219);
        mpfr_init(r38220);
        mpfr_init(r38221);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r38212, re, MPFR_RNDN);
        mpfr_mul(r38213, r38212, r38212, MPFR_RNDN);
        mpfr_set_d(r38214, im, MPFR_RNDN);
        mpfr_mul(r38215, r38214, r38214, MPFR_RNDN);
        mpfr_add(r38216, r38213, r38215, MPFR_RNDN);
        mpfr_sqrt(r38217, r38216, MPFR_RNDN);
        mpfr_add(r38218, r38217, r38212, MPFR_RNDN);
        mpfr_mul(r38219, r38211, r38218, MPFR_RNDN);
        mpfr_sqrt(r38220, r38219, MPFR_RNDN);
        mpfr_mul(r38221, r38210, r38220, MPFR_RNDN);
        return mpfr_get_d(r38221, MPFR_RNDN);
}

static mpfr_t r38222, r38223, r38224, r38225, r38226, r38227, r38228, r38229, r38230, r38231, r38232, r38233, r38234, r38235, r38236, r38237, r38238, r38239, r38240, r38241, r38242, r38243, r38244, r38245, r38246, r38247, r38248, r38249, r38250, r38251, r38252, r38253, r38254, r38255, r38256, r38257, r38258, r38259, r38260, r38261, r38262, r38263, r38264, r38265;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r38222);
        mpfr_init_set_str(r38223, "-2.7472165575793594e+20", 10, MPFR_RNDN);
        mpfr_init(r38224);
        mpfr_init_set_str(r38225, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38226);
        mpfr_init_set_str(r38227, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38228);
        mpfr_init(r38229);
        mpfr_init(r38230);
        mpfr_init(r38231);
        mpfr_init(r38232);
        mpfr_init(r38233);
        mpfr_init(r38234);
        mpfr_init(r38235);
        mpfr_init_set_str(r38236, "-1.7437483008386394e-66", 10, MPFR_RNDN);
        mpfr_init(r38237);
        mpfr_init(r38238);
        mpfr_init(r38239);
        mpfr_init(r38240);
        mpfr_init(r38241);
        mpfr_init(r38242);
        mpfr_init(r38243);
        mpfr_init(r38244);
        mpfr_init(r38245);
        mpfr_init(r38246);
        mpfr_init(r38247);
        mpfr_init(r38248);
        mpfr_init_set_str(r38249, "1.0701985037934348e-08", 10, MPFR_RNDN);
        mpfr_init(r38250);
        mpfr_init(r38251);
        mpfr_init(r38252);
        mpfr_init(r38253);
        mpfr_init(r38254);
        mpfr_init(r38255);
        mpfr_init(r38256);
        mpfr_init(r38257);
        mpfr_init(r38258);
        mpfr_init(r38259);
        mpfr_init(r38260);
        mpfr_init(r38261);
        mpfr_init(r38262);
        mpfr_init(r38263);
        mpfr_init(r38264);
        mpfr_init(r38265);
}

double f_fm(double re, double im) {
        mpfr_set_d(r38222, re, MPFR_RNDN);
        ;
        mpfr_set_si(r38224, mpfr_cmp(r38222, r38223) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r38226, im, MPFR_RNDN);
        ;
        mpfr_mul(r38228, r38226, r38227, MPFR_RNDN);
        mpfr_mul(r38229, r38228, r38226, MPFR_RNDN);
        mpfr_sqrt(r38230, r38229, MPFR_RNDN);
        mpfr_neg(r38231, r38222, MPFR_RNDN);
        mpfr_sub(r38232, r38231, r38222, MPFR_RNDN);
        mpfr_sqrt(r38233, r38232, MPFR_RNDN);
        mpfr_div(r38234, r38230, r38233, MPFR_RNDN);
        mpfr_mul(r38235, r38225, r38234, MPFR_RNDN);
        ;
        mpfr_set_si(r38237, mpfr_cmp(r38222, r38236) <= 0, MPFR_RNDN);
        mpfr_sqrt(r38238, r38227, MPFR_RNDN);
        mpfr_neg(r38239, r38226, MPFR_RNDN);
        mpfr_mul(r38240, r38238, r38239, MPFR_RNDN);
        mpfr_mul(r38241, r38225, r38240, MPFR_RNDN);
        mpfr_mul(r38242, r38226, r38226, MPFR_RNDN);
        mpfr_mul(r38243, r38222, r38222, MPFR_RNDN);
        mpfr_add(r38244, r38242, r38243, MPFR_RNDN);
        mpfr_sqrt(r38245, r38244, MPFR_RNDN);
        mpfr_sub(r38246, r38245, r38222, MPFR_RNDN);
        mpfr_sqrt(r38247, r38246, MPFR_RNDN);
        mpfr_div(r38248, r38241, r38247, MPFR_RNDN);
        ;
        mpfr_set_si(r38250, mpfr_cmp(r38222, r38249) <= 0, MPFR_RNDN);
        mpfr_add(r38251, r38243, r38242, MPFR_RNDN);
        mpfr_sqrt(r38252, r38251, MPFR_RNDN);
        mpfr_sqrt(r38253, r38252, MPFR_RNDN);
        mpfr_mul(r38254, r38253, r38253, MPFR_RNDN);
        mpfr_add(r38255, r38254, r38222, MPFR_RNDN);
        mpfr_mul(r38256, r38227, r38255, MPFR_RNDN);
        mpfr_sqrt(r38257, r38256, MPFR_RNDN);
        mpfr_mul(r38258, r38225, r38257, MPFR_RNDN);
        mpfr_add(r38259, r38222, r38222, MPFR_RNDN);
        mpfr_mul(r38260, r38227, r38259, MPFR_RNDN);
        mpfr_sqrt(r38261, r38260, MPFR_RNDN);
        mpfr_mul(r38262, r38225, r38261, MPFR_RNDN);
        if (mpfr_get_si(r38250, MPFR_RNDN)) { mpfr_set(r38263, r38258, MPFR_RNDN); } else { mpfr_set(r38263, r38262, MPFR_RNDN); };
        if (mpfr_get_si(r38237, MPFR_RNDN)) { mpfr_set(r38264, r38248, MPFR_RNDN); } else { mpfr_set(r38264, r38263, MPFR_RNDN); };
        if (mpfr_get_si(r38224, MPFR_RNDN)) { mpfr_set(r38265, r38235, MPFR_RNDN); } else { mpfr_set(r38265, r38264, MPFR_RNDN); };
        return mpfr_get_d(r38265, MPFR_RNDN);
}

static mpfr_t r38266, r38267, r38268, r38269, r38270, r38271, r38272, r38273, r38274, r38275, r38276, r38277, r38278, r38279, r38280, r38281, r38282, r38283, r38284, r38285, r38286, r38287, r38288, r38289, r38290, r38291, r38292, r38293, r38294, r38295, r38296, r38297, r38298, r38299, r38300, r38301, r38302, r38303, r38304, r38305, r38306, r38307, r38308, r38309;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r38266);
        mpfr_init_set_str(r38267, "-2.7472165575793594e+20", 10, MPFR_RNDN);
        mpfr_init(r38268);
        mpfr_init_set_str(r38269, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38270);
        mpfr_init_set_str(r38271, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38272);
        mpfr_init(r38273);
        mpfr_init(r38274);
        mpfr_init(r38275);
        mpfr_init(r38276);
        mpfr_init(r38277);
        mpfr_init(r38278);
        mpfr_init(r38279);
        mpfr_init_set_str(r38280, "-1.7437483008386394e-66", 10, MPFR_RNDN);
        mpfr_init(r38281);
        mpfr_init(r38282);
        mpfr_init(r38283);
        mpfr_init(r38284);
        mpfr_init(r38285);
        mpfr_init(r38286);
        mpfr_init(r38287);
        mpfr_init(r38288);
        mpfr_init(r38289);
        mpfr_init(r38290);
        mpfr_init(r38291);
        mpfr_init(r38292);
        mpfr_init_set_str(r38293, "1.0701985037934348e-08", 10, MPFR_RNDN);
        mpfr_init(r38294);
        mpfr_init(r38295);
        mpfr_init(r38296);
        mpfr_init(r38297);
        mpfr_init(r38298);
        mpfr_init(r38299);
        mpfr_init(r38300);
        mpfr_init(r38301);
        mpfr_init(r38302);
        mpfr_init(r38303);
        mpfr_init(r38304);
        mpfr_init(r38305);
        mpfr_init(r38306);
        mpfr_init(r38307);
        mpfr_init(r38308);
        mpfr_init(r38309);
}

double f_dm(double re, double im) {
        mpfr_set_d(r38266, re, MPFR_RNDN);
        ;
        mpfr_set_si(r38268, mpfr_cmp(r38266, r38267) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r38270, im, MPFR_RNDN);
        ;
        mpfr_mul(r38272, r38270, r38271, MPFR_RNDN);
        mpfr_mul(r38273, r38272, r38270, MPFR_RNDN);
        mpfr_sqrt(r38274, r38273, MPFR_RNDN);
        mpfr_neg(r38275, r38266, MPFR_RNDN);
        mpfr_sub(r38276, r38275, r38266, MPFR_RNDN);
        mpfr_sqrt(r38277, r38276, MPFR_RNDN);
        mpfr_div(r38278, r38274, r38277, MPFR_RNDN);
        mpfr_mul(r38279, r38269, r38278, MPFR_RNDN);
        ;
        mpfr_set_si(r38281, mpfr_cmp(r38266, r38280) <= 0, MPFR_RNDN);
        mpfr_sqrt(r38282, r38271, MPFR_RNDN);
        mpfr_neg(r38283, r38270, MPFR_RNDN);
        mpfr_mul(r38284, r38282, r38283, MPFR_RNDN);
        mpfr_mul(r38285, r38269, r38284, MPFR_RNDN);
        mpfr_mul(r38286, r38270, r38270, MPFR_RNDN);
        mpfr_mul(r38287, r38266, r38266, MPFR_RNDN);
        mpfr_add(r38288, r38286, r38287, MPFR_RNDN);
        mpfr_sqrt(r38289, r38288, MPFR_RNDN);
        mpfr_sub(r38290, r38289, r38266, MPFR_RNDN);
        mpfr_sqrt(r38291, r38290, MPFR_RNDN);
        mpfr_div(r38292, r38285, r38291, MPFR_RNDN);
        ;
        mpfr_set_si(r38294, mpfr_cmp(r38266, r38293) <= 0, MPFR_RNDN);
        mpfr_add(r38295, r38287, r38286, MPFR_RNDN);
        mpfr_sqrt(r38296, r38295, MPFR_RNDN);
        mpfr_sqrt(r38297, r38296, MPFR_RNDN);
        mpfr_mul(r38298, r38297, r38297, MPFR_RNDN);
        mpfr_add(r38299, r38298, r38266, MPFR_RNDN);
        mpfr_mul(r38300, r38271, r38299, MPFR_RNDN);
        mpfr_sqrt(r38301, r38300, MPFR_RNDN);
        mpfr_mul(r38302, r38269, r38301, MPFR_RNDN);
        mpfr_add(r38303, r38266, r38266, MPFR_RNDN);
        mpfr_mul(r38304, r38271, r38303, MPFR_RNDN);
        mpfr_sqrt(r38305, r38304, MPFR_RNDN);
        mpfr_mul(r38306, r38269, r38305, MPFR_RNDN);
        if (mpfr_get_si(r38294, MPFR_RNDN)) { mpfr_set(r38307, r38302, MPFR_RNDN); } else { mpfr_set(r38307, r38306, MPFR_RNDN); };
        if (mpfr_get_si(r38281, MPFR_RNDN)) { mpfr_set(r38308, r38292, MPFR_RNDN); } else { mpfr_set(r38308, r38307, MPFR_RNDN); };
        if (mpfr_get_si(r38268, MPFR_RNDN)) { mpfr_set(r38309, r38279, MPFR_RNDN); } else { mpfr_set(r38309, r38308, MPFR_RNDN); };
        return mpfr_get_d(r38309, MPFR_RNDN);
}

