#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 r18995 = 0.5f;
        float r18996 = 2.0f;
        float r18997 = re;
        float r18998 = r18997 * r18997;
        float r18999 = im;
        float r19000 = r18999 * r18999;
        float r19001 = r18998 + r19000;
        float r19002 = sqrt(r19001);
        float r19003 = r19002 + r18997;
        float r19004 = r18996 * r19003;
        float r19005 = sqrt(r19004);
        float r19006 = r18995 * r19005;
        return r19006;
}

double f_id(double re, double im) {
        double r19007 = 0.5;
        double r19008 = 2.0;
        double r19009 = re;
        double r19010 = r19009 * r19009;
        double r19011 = im;
        double r19012 = r19011 * r19011;
        double r19013 = r19010 + r19012;
        double r19014 = sqrt(r19013);
        double r19015 = r19014 + r19009;
        double r19016 = r19008 * r19015;
        double r19017 = sqrt(r19016);
        double r19018 = r19007 * r19017;
        return r19018;
}


double f_of(float re, float im) {
        float r19019 = re;
        float r19020 = -1.2413776908813071e-14f;
        bool r19021 = r19019 <= r19020;
        float r19022 = 0.5f;
        float r19023 = 2.0f;
        float r19024 = im;
        float r19025 = r19023 * r19024;
        float r19026 = r19025 * r19024;
        float r19027 = sqrt(r19026);
        float r19028 = r19019 * r19019;
        float r19029 = r19024 * r19024;
        float r19030 = r19028 + r19029;
        float r19031 = sqrt(r19030);
        float r19032 = r19031 - r19019;
        float r19033 = sqrt(r19032);
        float r19034 = r19027 / r19033;
        float r19035 = r19022 * r19034;
        float r19036 = 2.60800705641956e+19f;
        bool r19037 = r19019 <= r19036;
        float r19038 = r19019 + r19031;
        float r19039 = sqrt(r19038);
        float r19040 = r19039 * r19039;
        float r19041 = r19023 * r19040;
        float r19042 = sqrt(r19041);
        float r19043 = r19022 * r19042;
        float r19044 = r19019 + r19019;
        float r19045 = r19023 * r19044;
        float r19046 = sqrt(r19045);
        float r19047 = r19022 * r19046;
        float r19048 = r19037 ? r19043 : r19047;
        float r19049 = r19021 ? r19035 : r19048;
        return r19049;
}

double f_od(double re, double im) {
        double r19050 = re;
        double r19051 = -1.2413776908813071e-14;
        bool r19052 = r19050 <= r19051;
        double r19053 = 0.5;
        double r19054 = 2.0;
        double r19055 = im;
        double r19056 = r19054 * r19055;
        double r19057 = r19056 * r19055;
        double r19058 = sqrt(r19057);
        double r19059 = r19050 * r19050;
        double r19060 = r19055 * r19055;
        double r19061 = r19059 + r19060;
        double r19062 = sqrt(r19061);
        double r19063 = r19062 - r19050;
        double r19064 = sqrt(r19063);
        double r19065 = r19058 / r19064;
        double r19066 = r19053 * r19065;
        double r19067 = 2.60800705641956e+19;
        bool r19068 = r19050 <= r19067;
        double r19069 = r19050 + r19062;
        double r19070 = sqrt(r19069);
        double r19071 = r19070 * r19070;
        double r19072 = r19054 * r19071;
        double r19073 = sqrt(r19072);
        double r19074 = r19053 * r19073;
        double r19075 = r19050 + r19050;
        double r19076 = r19054 * r19075;
        double r19077 = sqrt(r19076);
        double r19078 = r19053 * r19077;
        double r19079 = r19068 ? r19074 : r19078;
        double r19080 = r19052 ? r19066 : r19079;
        return r19080;
}

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 r19081, r19082, r19083, r19084, r19085, r19086, r19087, r19088, r19089, r19090, r19091, r19092;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19081, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19082, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19083);
        mpfr_init(r19084);
        mpfr_init(r19085);
        mpfr_init(r19086);
        mpfr_init(r19087);
        mpfr_init(r19088);
        mpfr_init(r19089);
        mpfr_init(r19090);
        mpfr_init(r19091);
        mpfr_init(r19092);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19083, re, MPFR_RNDN);
        mpfr_mul(r19084, r19083, r19083, MPFR_RNDN);
        mpfr_set_d(r19085, im, MPFR_RNDN);
        mpfr_mul(r19086, r19085, r19085, MPFR_RNDN);
        mpfr_add(r19087, r19084, r19086, MPFR_RNDN);
        mpfr_sqrt(r19088, r19087, MPFR_RNDN);
        mpfr_add(r19089, r19088, r19083, MPFR_RNDN);
        mpfr_mul(r19090, r19082, r19089, MPFR_RNDN);
        mpfr_sqrt(r19091, r19090, MPFR_RNDN);
        mpfr_mul(r19092, r19081, r19091, MPFR_RNDN);
        return mpfr_get_d(r19092, MPFR_RNDN);
}

static mpfr_t r19093, r19094, r19095, r19096, r19097, r19098, r19099, r19100, r19101, r19102, r19103, r19104, r19105, r19106, r19107, r19108, r19109, r19110, r19111, r19112, r19113, r19114, r19115, r19116, r19117, r19118, r19119, r19120, r19121, r19122, r19123;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19093);
        mpfr_init_set_str(r19094, "-1.2413777f-14", 10, MPFR_RNDN);
        mpfr_init(r19095);
        mpfr_init_set_str(r19096, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19097, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19098);
        mpfr_init(r19099);
        mpfr_init(r19100);
        mpfr_init(r19101);
        mpfr_init(r19102);
        mpfr_init(r19103);
        mpfr_init(r19104);
        mpfr_init(r19105);
        mpfr_init(r19106);
        mpfr_init(r19107);
        mpfr_init(r19108);
        mpfr_init(r19109);
        mpfr_init_set_str(r19110, "2.608007f+19", 10, MPFR_RNDN);
        mpfr_init(r19111);
        mpfr_init(r19112);
        mpfr_init(r19113);
        mpfr_init(r19114);
        mpfr_init(r19115);
        mpfr_init(r19116);
        mpfr_init(r19117);
        mpfr_init(r19118);
        mpfr_init(r19119);
        mpfr_init(r19120);
        mpfr_init(r19121);
        mpfr_init(r19122);
        mpfr_init(r19123);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19093, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19095, mpfr_cmp(r19093, r19094) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19098, im, MPFR_RNDN);
        mpfr_mul(r19099, r19097, r19098, MPFR_RNDN);
        mpfr_mul(r19100, r19099, r19098, MPFR_RNDN);
        mpfr_sqrt(r19101, r19100, MPFR_RNDN);
        mpfr_sqr(r19102, r19093, MPFR_RNDN);
        mpfr_mul(r19103, r19098, r19098, MPFR_RNDN);
        mpfr_add(r19104, r19102, r19103, MPFR_RNDN);
        mpfr_sqrt(r19105, r19104, MPFR_RNDN);
        mpfr_sub(r19106, r19105, r19093, MPFR_RNDN);
        mpfr_sqrt(r19107, r19106, MPFR_RNDN);
        mpfr_div(r19108, r19101, r19107, MPFR_RNDN);
        mpfr_mul(r19109, r19096, r19108, MPFR_RNDN);
        ;
        mpfr_set_si(r19111, mpfr_cmp(r19093, r19110) <= 0, MPFR_RNDN);
        mpfr_add(r19112, r19093, r19105, MPFR_RNDN);
        mpfr_sqrt(r19113, r19112, MPFR_RNDN);
        mpfr_sqr(r19114, r19113, MPFR_RNDN);
        mpfr_mul(r19115, r19097, r19114, MPFR_RNDN);
        mpfr_sqrt(r19116, r19115, MPFR_RNDN);
        mpfr_mul(r19117, r19096, r19116, MPFR_RNDN);
        mpfr_add(r19118, r19093, r19093, MPFR_RNDN);
        mpfr_mul(r19119, r19097, r19118, MPFR_RNDN);
        mpfr_sqrt(r19120, r19119, MPFR_RNDN);
        mpfr_mul(r19121, r19096, r19120, MPFR_RNDN);
        if (mpfr_get_si(r19111, MPFR_RNDN)) { mpfr_set(r19122, r19117, MPFR_RNDN); } else { mpfr_set(r19122, r19121, MPFR_RNDN); };
        if (mpfr_get_si(r19095, MPFR_RNDN)) { mpfr_set(r19123, r19109, MPFR_RNDN); } else { mpfr_set(r19123, r19122, MPFR_RNDN); };
        return mpfr_get_d(r19123, MPFR_RNDN);
}

static mpfr_t r19124, r19125, r19126, r19127, r19128, r19129, r19130, r19131, r19132, r19133, r19134, r19135, r19136, r19137, r19138, r19139, r19140, r19141, r19142, r19143, r19144, r19145, r19146, r19147, r19148, r19149, r19150, r19151, r19152, r19153, r19154;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19124);
        mpfr_init_set_str(r19125, "-1.2413777f-14", 10, MPFR_RNDN);
        mpfr_init(r19126);
        mpfr_init_set_str(r19127, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19128, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19129);
        mpfr_init(r19130);
        mpfr_init(r19131);
        mpfr_init(r19132);
        mpfr_init(r19133);
        mpfr_init(r19134);
        mpfr_init(r19135);
        mpfr_init(r19136);
        mpfr_init(r19137);
        mpfr_init(r19138);
        mpfr_init(r19139);
        mpfr_init(r19140);
        mpfr_init_set_str(r19141, "2.608007f+19", 10, MPFR_RNDN);
        mpfr_init(r19142);
        mpfr_init(r19143);
        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);
        mpfr_init(r19154);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19124, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19126, mpfr_cmp(r19124, r19125) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19129, im, MPFR_RNDN);
        mpfr_mul(r19130, r19128, r19129, MPFR_RNDN);
        mpfr_mul(r19131, r19130, r19129, MPFR_RNDN);
        mpfr_sqrt(r19132, r19131, MPFR_RNDN);
        mpfr_sqr(r19133, r19124, MPFR_RNDN);
        mpfr_mul(r19134, r19129, r19129, MPFR_RNDN);
        mpfr_add(r19135, r19133, r19134, MPFR_RNDN);
        mpfr_sqrt(r19136, r19135, MPFR_RNDN);
        mpfr_sub(r19137, r19136, r19124, MPFR_RNDN);
        mpfr_sqrt(r19138, r19137, MPFR_RNDN);
        mpfr_div(r19139, r19132, r19138, MPFR_RNDN);
        mpfr_mul(r19140, r19127, r19139, MPFR_RNDN);
        ;
        mpfr_set_si(r19142, mpfr_cmp(r19124, r19141) <= 0, MPFR_RNDN);
        mpfr_add(r19143, r19124, r19136, MPFR_RNDN);
        mpfr_sqrt(r19144, r19143, MPFR_RNDN);
        mpfr_sqr(r19145, r19144, MPFR_RNDN);
        mpfr_mul(r19146, r19128, r19145, MPFR_RNDN);
        mpfr_sqrt(r19147, r19146, MPFR_RNDN);
        mpfr_mul(r19148, r19127, r19147, MPFR_RNDN);
        mpfr_add(r19149, r19124, r19124, MPFR_RNDN);
        mpfr_mul(r19150, r19128, r19149, MPFR_RNDN);
        mpfr_sqrt(r19151, r19150, MPFR_RNDN);
        mpfr_mul(r19152, r19127, r19151, MPFR_RNDN);
        if (mpfr_get_si(r19142, MPFR_RNDN)) { mpfr_set(r19153, r19148, MPFR_RNDN); } else { mpfr_set(r19153, r19152, MPFR_RNDN); };
        if (mpfr_get_si(r19126, MPFR_RNDN)) { mpfr_set(r19154, r19140, MPFR_RNDN); } else { mpfr_set(r19154, r19153, MPFR_RNDN); };
        return mpfr_get_d(r19154, MPFR_RNDN);
}

