#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 r19044 = 0.5f;
        float r19045 = 2.0f;
        float r19046 = re;
        float r19047 = r19046 * r19046;
        float r19048 = im;
        float r19049 = r19048 * r19048;
        float r19050 = r19047 + r19049;
        float r19051 = sqrt(r19050);
        float r19052 = r19051 + r19046;
        float r19053 = r19045 * r19052;
        float r19054 = sqrt(r19053);
        float r19055 = r19044 * r19054;
        return r19055;
}

double f_id(double re, double im) {
        double r19056 = 0.5;
        double r19057 = 2.0;
        double r19058 = re;
        double r19059 = r19058 * r19058;
        double r19060 = im;
        double r19061 = r19060 * r19060;
        double r19062 = r19059 + r19061;
        double r19063 = sqrt(r19062);
        double r19064 = r19063 + r19058;
        double r19065 = r19057 * r19064;
        double r19066 = sqrt(r19065);
        double r19067 = r19056 * r19066;
        return r19067;
}


double f_of(float re, float im) {
        float r19068 = re;
        float r19069 = -1.439197376384982e-06f;
        bool r19070 = r19068 <= r19069;
        float r19071 = 0.5f;
        float r19072 = im;
        float r19073 = r19072 * r19072;
        float r19074 = 2.0f;
        float r19075 = r19073 * r19074;
        float r19076 = sqrt(r19075);
        float r19077 = r19071 * r19076;
        float r19078 = -r19068;
        float r19079 = r19078 - r19068;
        float r19080 = sqrt(r19079);
        float r19081 = r19077 / r19080;
        float r19082 = 2556882583552.0f;
        bool r19083 = r19068 <= r19082;
        float r19084 = r19068 * r19068;
        float r19085 = r19084 + r19073;
        float r19086 = sqrt(r19085);
        float r19087 = sqrt(r19086);
        float r19088 = r19087 * r19087;
        float r19089 = r19088 + r19068;
        float r19090 = r19074 * r19089;
        float r19091 = sqrt(r19090);
        float r19092 = r19071 * r19091;
        float r19093 = 2.0f;
        float r19094 = r19093 * r19068;
        float r19095 = 0.5f;
        float r19096 = r19072 * r19095;
        float r19097 = r19068 / r19072;
        float r19098 = r19096 / r19097;
        float r19099 = r19094 + r19098;
        float r19100 = r19099 * r19074;
        float r19101 = sqrt(r19100);
        float r19102 = r19071 * r19101;
        float r19103 = r19083 ? r19092 : r19102;
        float r19104 = r19070 ? r19081 : r19103;
        return r19104;
}

double f_od(double re, double im) {
        double r19105 = re;
        double r19106 = -1.439197376384982e-06;
        bool r19107 = r19105 <= r19106;
        double r19108 = 0.5;
        double r19109 = im;
        double r19110 = r19109 * r19109;
        double r19111 = 2.0;
        double r19112 = r19110 * r19111;
        double r19113 = sqrt(r19112);
        double r19114 = r19108 * r19113;
        double r19115 = -r19105;
        double r19116 = r19115 - r19105;
        double r19117 = sqrt(r19116);
        double r19118 = r19114 / r19117;
        double r19119 = 2556882583552.0;
        bool r19120 = r19105 <= r19119;
        double r19121 = r19105 * r19105;
        double r19122 = r19121 + r19110;
        double r19123 = sqrt(r19122);
        double r19124 = sqrt(r19123);
        double r19125 = r19124 * r19124;
        double r19126 = r19125 + r19105;
        double r19127 = r19111 * r19126;
        double r19128 = sqrt(r19127);
        double r19129 = r19108 * r19128;
        double r19130 = 2.0;
        double r19131 = r19130 * r19105;
        double r19132 = 0.5;
        double r19133 = r19109 * r19132;
        double r19134 = r19105 / r19109;
        double r19135 = r19133 / r19134;
        double r19136 = r19131 + r19135;
        double r19137 = r19136 * r19111;
        double r19138 = sqrt(r19137);
        double r19139 = r19108 * r19138;
        double r19140 = r19120 ? r19129 : r19139;
        double r19141 = r19107 ? r19118 : r19140;
        return r19141;
}

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 r19142, r19143, r19144, r19145, r19146, r19147, r19148, r19149, r19150, r19151, r19152, r19153;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19142, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19143, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19144);
        mpfr_init(r19145);
        mpfr_init(r19146);
        mpfr_init(r19147);
        mpfr_init(r19148);
        mpfr_init(r19149);
        mpfr_init(r19150);
        mpfr_init(r19151);
        mpfr_init(r19152);
        mpfr_init(r19153);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19144, re, MPFR_RNDN);
        mpfr_mul(r19145, r19144, r19144, MPFR_RNDN);
        mpfr_set_d(r19146, im, MPFR_RNDN);
        mpfr_mul(r19147, r19146, r19146, MPFR_RNDN);
        mpfr_add(r19148, r19145, r19147, MPFR_RNDN);
        mpfr_sqrt(r19149, r19148, MPFR_RNDN);
        mpfr_add(r19150, r19149, r19144, MPFR_RNDN);
        mpfr_mul(r19151, r19143, r19150, MPFR_RNDN);
        mpfr_sqrt(r19152, r19151, MPFR_RNDN);
        mpfr_mul(r19153, r19142, r19152, MPFR_RNDN);
        return mpfr_get_d(r19153, MPFR_RNDN);
}

static mpfr_t r19154, r19155, r19156, r19157, r19158, r19159, r19160, r19161, r19162, r19163, r19164, r19165, r19166, r19167, r19168, r19169, r19170, r19171, r19172, r19173, r19174, r19175, r19176, r19177, r19178, r19179, r19180, r19181, r19182, r19183, r19184, r19185, r19186, r19187, r19188, r19189, r19190;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19154);
        mpfr_init_set_str(r19155, "-1.4391974f-06", 10, MPFR_RNDN);
        mpfr_init(r19156);
        mpfr_init_set_str(r19157, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19158);
        mpfr_init(r19159);
        mpfr_init_set_str(r19160, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19161);
        mpfr_init(r19162);
        mpfr_init(r19163);
        mpfr_init(r19164);
        mpfr_init(r19165);
        mpfr_init(r19166);
        mpfr_init(r19167);
        mpfr_init_set_str(r19168, "2.5568826f+12", 10, MPFR_RNDN);
        mpfr_init(r19169);
        mpfr_init(r19170);
        mpfr_init(r19171);
        mpfr_init(r19172);
        mpfr_init(r19173);
        mpfr_init(r19174);
        mpfr_init(r19175);
        mpfr_init(r19176);
        mpfr_init(r19177);
        mpfr_init(r19178);
        mpfr_init_set_str(r19179, "2", 10, MPFR_RNDN);
        mpfr_init(r19180);
        mpfr_init_set_str(r19181, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19182);
        mpfr_init(r19183);
        mpfr_init(r19184);
        mpfr_init(r19185);
        mpfr_init(r19186);
        mpfr_init(r19187);
        mpfr_init(r19188);
        mpfr_init(r19189);
        mpfr_init(r19190);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19154, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19156, mpfr_cmp(r19154, r19155) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19158, im, MPFR_RNDN);
        mpfr_mul(r19159, r19158, r19158, MPFR_RNDN);
        ;
        mpfr_mul(r19161, r19159, r19160, MPFR_RNDN);
        mpfr_sqrt(r19162, r19161, MPFR_RNDN);
        mpfr_mul(r19163, r19157, r19162, MPFR_RNDN);
        mpfr_neg(r19164, r19154, MPFR_RNDN);
        mpfr_sub(r19165, r19164, r19154, MPFR_RNDN);
        mpfr_sqrt(r19166, r19165, MPFR_RNDN);
        mpfr_div(r19167, r19163, r19166, MPFR_RNDN);
        ;
        mpfr_set_si(r19169, mpfr_cmp(r19154, r19168) <= 0, MPFR_RNDN);
        mpfr_sqr(r19170, r19154, MPFR_RNDN);
        mpfr_add(r19171, r19170, r19159, MPFR_RNDN);
        mpfr_sqrt(r19172, r19171, MPFR_RNDN);
        mpfr_sqrt(r19173, r19172, MPFR_RNDN);
        mpfr_sqr(r19174, r19173, MPFR_RNDN);
        mpfr_add(r19175, r19174, r19154, MPFR_RNDN);
        mpfr_mul(r19176, r19160, r19175, MPFR_RNDN);
        mpfr_sqrt(r19177, r19176, MPFR_RNDN);
        mpfr_mul(r19178, r19157, r19177, MPFR_RNDN);
        ;
        mpfr_mul(r19180, r19179, r19154, MPFR_RNDN);
        ;
        mpfr_mul(r19182, r19158, r19181, MPFR_RNDN);
        mpfr_div(r19183, r19154, r19158, MPFR_RNDN);
        mpfr_div(r19184, r19182, r19183, MPFR_RNDN);
        mpfr_add(r19185, r19180, r19184, MPFR_RNDN);
        mpfr_mul(r19186, r19185, r19160, MPFR_RNDN);
        mpfr_sqrt(r19187, r19186, MPFR_RNDN);
        mpfr_mul(r19188, r19157, r19187, MPFR_RNDN);
        if (mpfr_get_si(r19169, MPFR_RNDN)) { mpfr_set(r19189, r19178, MPFR_RNDN); } else { mpfr_set(r19189, r19188, MPFR_RNDN); };
        if (mpfr_get_si(r19156, MPFR_RNDN)) { mpfr_set(r19190, r19167, MPFR_RNDN); } else { mpfr_set(r19190, r19189, MPFR_RNDN); };
        return mpfr_get_d(r19190, MPFR_RNDN);
}

static mpfr_t r19191, r19192, r19193, r19194, r19195, r19196, r19197, r19198, r19199, r19200, r19201, r19202, r19203, r19204, r19205, r19206, r19207, r19208, r19209, r19210, r19211, r19212, r19213, r19214, r19215, r19216, r19217, r19218, r19219, r19220, r19221, r19222, r19223, r19224, r19225, r19226, r19227;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19191);
        mpfr_init_set_str(r19192, "-1.4391974f-06", 10, MPFR_RNDN);
        mpfr_init(r19193);
        mpfr_init_set_str(r19194, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19195);
        mpfr_init(r19196);
        mpfr_init_set_str(r19197, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19198);
        mpfr_init(r19199);
        mpfr_init(r19200);
        mpfr_init(r19201);
        mpfr_init(r19202);
        mpfr_init(r19203);
        mpfr_init(r19204);
        mpfr_init_set_str(r19205, "2.5568826f+12", 10, MPFR_RNDN);
        mpfr_init(r19206);
        mpfr_init(r19207);
        mpfr_init(r19208);
        mpfr_init(r19209);
        mpfr_init(r19210);
        mpfr_init(r19211);
        mpfr_init(r19212);
        mpfr_init(r19213);
        mpfr_init(r19214);
        mpfr_init(r19215);
        mpfr_init_set_str(r19216, "2", 10, MPFR_RNDN);
        mpfr_init(r19217);
        mpfr_init_set_str(r19218, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19219);
        mpfr_init(r19220);
        mpfr_init(r19221);
        mpfr_init(r19222);
        mpfr_init(r19223);
        mpfr_init(r19224);
        mpfr_init(r19225);
        mpfr_init(r19226);
        mpfr_init(r19227);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19191, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19193, mpfr_cmp(r19191, r19192) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19195, im, MPFR_RNDN);
        mpfr_mul(r19196, r19195, r19195, MPFR_RNDN);
        ;
        mpfr_mul(r19198, r19196, r19197, MPFR_RNDN);
        mpfr_sqrt(r19199, r19198, MPFR_RNDN);
        mpfr_mul(r19200, r19194, r19199, MPFR_RNDN);
        mpfr_neg(r19201, r19191, MPFR_RNDN);
        mpfr_sub(r19202, r19201, r19191, MPFR_RNDN);
        mpfr_sqrt(r19203, r19202, MPFR_RNDN);
        mpfr_div(r19204, r19200, r19203, MPFR_RNDN);
        ;
        mpfr_set_si(r19206, mpfr_cmp(r19191, r19205) <= 0, MPFR_RNDN);
        mpfr_sqr(r19207, r19191, MPFR_RNDN);
        mpfr_add(r19208, r19207, r19196, MPFR_RNDN);
        mpfr_sqrt(r19209, r19208, MPFR_RNDN);
        mpfr_sqrt(r19210, r19209, MPFR_RNDN);
        mpfr_sqr(r19211, r19210, MPFR_RNDN);
        mpfr_add(r19212, r19211, r19191, MPFR_RNDN);
        mpfr_mul(r19213, r19197, r19212, MPFR_RNDN);
        mpfr_sqrt(r19214, r19213, MPFR_RNDN);
        mpfr_mul(r19215, r19194, r19214, MPFR_RNDN);
        ;
        mpfr_mul(r19217, r19216, r19191, MPFR_RNDN);
        ;
        mpfr_mul(r19219, r19195, r19218, MPFR_RNDN);
        mpfr_div(r19220, r19191, r19195, MPFR_RNDN);
        mpfr_div(r19221, r19219, r19220, MPFR_RNDN);
        mpfr_add(r19222, r19217, r19221, MPFR_RNDN);
        mpfr_mul(r19223, r19222, r19197, MPFR_RNDN);
        mpfr_sqrt(r19224, r19223, MPFR_RNDN);
        mpfr_mul(r19225, r19194, r19224, MPFR_RNDN);
        if (mpfr_get_si(r19206, MPFR_RNDN)) { mpfr_set(r19226, r19215, MPFR_RNDN); } else { mpfr_set(r19226, r19225, MPFR_RNDN); };
        if (mpfr_get_si(r19193, MPFR_RNDN)) { mpfr_set(r19227, r19204, MPFR_RNDN); } else { mpfr_set(r19227, r19226, MPFR_RNDN); };
        return mpfr_get_d(r19227, MPFR_RNDN);
}

