#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 r18943 = 0.5f;
        float r18944 = 2.0f;
        float r18945 = re;
        float r18946 = r18945 * r18945;
        float r18947 = im;
        float r18948 = r18947 * r18947;
        float r18949 = r18946 + r18948;
        float r18950 = sqrt(r18949);
        float r18951 = r18950 + r18945;
        float r18952 = r18944 * r18951;
        float r18953 = sqrt(r18952);
        float r18954 = r18943 * r18953;
        return r18954;
}

double f_id(double re, double im) {
        double r18955 = 0.5;
        double r18956 = 2.0;
        double r18957 = re;
        double r18958 = r18957 * r18957;
        double r18959 = im;
        double r18960 = r18959 * r18959;
        double r18961 = r18958 + r18960;
        double r18962 = sqrt(r18961);
        double r18963 = r18962 + r18957;
        double r18964 = r18956 * r18963;
        double r18965 = sqrt(r18964);
        double r18966 = r18955 * r18965;
        return r18966;
}


double f_of(float re, float im) {
        float r18967 = re;
        float r18968 = -1.781204632574085e-12f;
        bool r18969 = r18967 <= r18968;
        float r18970 = 0.5f;
        float r18971 = im;
        float r18972 = r18971 * r18971;
        float r18973 = 2.0f;
        float r18974 = r18972 * r18973;
        float r18975 = sqrt(r18974);
        float r18976 = r18970 * r18975;
        float r18977 = -r18967;
        float r18978 = r18977 - r18967;
        float r18979 = sqrt(r18978);
        float r18980 = r18976 / r18979;
        float r18981 = 1.16678960611328e+15f;
        bool r18982 = r18967 <= r18981;
        float r18983 = r18967 * r18967;
        float r18984 = r18983 + r18972;
        float r18985 = sqrt(r18984);
        float r18986 = sqrt(r18985);
        float r18987 = r18986 * r18986;
        float r18988 = r18987 + r18967;
        float r18989 = r18973 * r18988;
        float r18990 = sqrt(r18989);
        float r18991 = r18970 * r18990;
        float r18992 = r18967 + r18967;
        float r18993 = r18973 * r18992;
        float r18994 = sqrt(r18993);
        float r18995 = r18970 * r18994;
        float r18996 = r18982 ? r18991 : r18995;
        float r18997 = r18969 ? r18980 : r18996;
        return r18997;
}

double f_od(double re, double im) {
        double r18998 = re;
        double r18999 = -1.781204632574085e-12;
        bool r19000 = r18998 <= r18999;
        double r19001 = 0.5;
        double r19002 = im;
        double r19003 = r19002 * r19002;
        double r19004 = 2.0;
        double r19005 = r19003 * r19004;
        double r19006 = sqrt(r19005);
        double r19007 = r19001 * r19006;
        double r19008 = -r18998;
        double r19009 = r19008 - r18998;
        double r19010 = sqrt(r19009);
        double r19011 = r19007 / r19010;
        double r19012 = 1.16678960611328e+15;
        bool r19013 = r18998 <= r19012;
        double r19014 = r18998 * r18998;
        double r19015 = r19014 + r19003;
        double r19016 = sqrt(r19015);
        double r19017 = sqrt(r19016);
        double r19018 = r19017 * r19017;
        double r19019 = r19018 + r18998;
        double r19020 = r19004 * r19019;
        double r19021 = sqrt(r19020);
        double r19022 = r19001 * r19021;
        double r19023 = r18998 + r18998;
        double r19024 = r19004 * r19023;
        double r19025 = sqrt(r19024);
        double r19026 = r19001 * r19025;
        double r19027 = r19013 ? r19022 : r19026;
        double r19028 = r19000 ? r19011 : r19027;
        return r19028;
}

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 r19029, r19030, r19031, r19032, r19033, r19034, r19035, r19036, r19037, r19038, r19039, r19040;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19029, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19030, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19031);
        mpfr_init(r19032);
        mpfr_init(r19033);
        mpfr_init(r19034);
        mpfr_init(r19035);
        mpfr_init(r19036);
        mpfr_init(r19037);
        mpfr_init(r19038);
        mpfr_init(r19039);
        mpfr_init(r19040);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19031, re, MPFR_RNDN);
        mpfr_mul(r19032, r19031, r19031, MPFR_RNDN);
        mpfr_set_d(r19033, im, MPFR_RNDN);
        mpfr_mul(r19034, r19033, r19033, MPFR_RNDN);
        mpfr_add(r19035, r19032, r19034, MPFR_RNDN);
        mpfr_sqrt(r19036, r19035, MPFR_RNDN);
        mpfr_add(r19037, r19036, r19031, MPFR_RNDN);
        mpfr_mul(r19038, r19030, r19037, MPFR_RNDN);
        mpfr_sqrt(r19039, r19038, MPFR_RNDN);
        mpfr_mul(r19040, r19029, r19039, MPFR_RNDN);
        return mpfr_get_d(r19040, MPFR_RNDN);
}

static mpfr_t r19041, r19042, r19043, r19044, r19045, r19046, r19047, r19048, r19049, r19050, r19051, r19052, r19053, r19054, r19055, r19056, r19057, r19058, r19059, r19060, r19061, r19062, r19063, r19064, r19065, r19066, r19067, r19068, r19069, r19070, r19071;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19041);
        mpfr_init_set_str(r19042, "-1.7812046f-12", 10, MPFR_RNDN);
        mpfr_init(r19043);
        mpfr_init_set_str(r19044, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19045);
        mpfr_init(r19046);
        mpfr_init_set_str(r19047, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19048);
        mpfr_init(r19049);
        mpfr_init(r19050);
        mpfr_init(r19051);
        mpfr_init(r19052);
        mpfr_init(r19053);
        mpfr_init(r19054);
        mpfr_init_set_str(r19055, "1.1667896f+15", 10, MPFR_RNDN);
        mpfr_init(r19056);
        mpfr_init(r19057);
        mpfr_init(r19058);
        mpfr_init(r19059);
        mpfr_init(r19060);
        mpfr_init(r19061);
        mpfr_init(r19062);
        mpfr_init(r19063);
        mpfr_init(r19064);
        mpfr_init(r19065);
        mpfr_init(r19066);
        mpfr_init(r19067);
        mpfr_init(r19068);
        mpfr_init(r19069);
        mpfr_init(r19070);
        mpfr_init(r19071);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19041, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19043, mpfr_cmp(r19041, r19042) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19045, im, MPFR_RNDN);
        mpfr_mul(r19046, r19045, r19045, MPFR_RNDN);
        ;
        mpfr_mul(r19048, r19046, r19047, MPFR_RNDN);
        mpfr_sqrt(r19049, r19048, MPFR_RNDN);
        mpfr_mul(r19050, r19044, r19049, MPFR_RNDN);
        mpfr_neg(r19051, r19041, MPFR_RNDN);
        mpfr_sub(r19052, r19051, r19041, MPFR_RNDN);
        mpfr_sqrt(r19053, r19052, MPFR_RNDN);
        mpfr_div(r19054, r19050, r19053, MPFR_RNDN);
        ;
        mpfr_set_si(r19056, mpfr_cmp(r19041, r19055) <= 0, MPFR_RNDN);
        mpfr_sqr(r19057, r19041, MPFR_RNDN);
        mpfr_add(r19058, r19057, r19046, MPFR_RNDN);
        mpfr_sqrt(r19059, r19058, MPFR_RNDN);
        mpfr_sqrt(r19060, r19059, MPFR_RNDN);
        mpfr_sqr(r19061, r19060, MPFR_RNDN);
        mpfr_add(r19062, r19061, r19041, MPFR_RNDN);
        mpfr_mul(r19063, r19047, r19062, MPFR_RNDN);
        mpfr_sqrt(r19064, r19063, MPFR_RNDN);
        mpfr_mul(r19065, r19044, r19064, MPFR_RNDN);
        mpfr_add(r19066, r19041, r19041, MPFR_RNDN);
        mpfr_mul(r19067, r19047, r19066, MPFR_RNDN);
        mpfr_sqrt(r19068, r19067, MPFR_RNDN);
        mpfr_mul(r19069, r19044, r19068, MPFR_RNDN);
        if (mpfr_get_si(r19056, MPFR_RNDN)) { mpfr_set(r19070, r19065, MPFR_RNDN); } else { mpfr_set(r19070, r19069, MPFR_RNDN); };
        if (mpfr_get_si(r19043, MPFR_RNDN)) { mpfr_set(r19071, r19054, MPFR_RNDN); } else { mpfr_set(r19071, r19070, MPFR_RNDN); };
        return mpfr_get_d(r19071, MPFR_RNDN);
}

static mpfr_t r19072, r19073, r19074, r19075, r19076, r19077, r19078, r19079, r19080, r19081, r19082, r19083, r19084, r19085, r19086, r19087, r19088, r19089, r19090, r19091, r19092, r19093, r19094, r19095, r19096, r19097, r19098, r19099, r19100, r19101, r19102;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19072);
        mpfr_init_set_str(r19073, "-1.7812046f-12", 10, MPFR_RNDN);
        mpfr_init(r19074);
        mpfr_init_set_str(r19075, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19076);
        mpfr_init(r19077);
        mpfr_init_set_str(r19078, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19079);
        mpfr_init(r19080);
        mpfr_init(r19081);
        mpfr_init(r19082);
        mpfr_init(r19083);
        mpfr_init(r19084);
        mpfr_init(r19085);
        mpfr_init_set_str(r19086, "1.1667896f+15", 10, MPFR_RNDN);
        mpfr_init(r19087);
        mpfr_init(r19088);
        mpfr_init(r19089);
        mpfr_init(r19090);
        mpfr_init(r19091);
        mpfr_init(r19092);
        mpfr_init(r19093);
        mpfr_init(r19094);
        mpfr_init(r19095);
        mpfr_init(r19096);
        mpfr_init(r19097);
        mpfr_init(r19098);
        mpfr_init(r19099);
        mpfr_init(r19100);
        mpfr_init(r19101);
        mpfr_init(r19102);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19072, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19074, mpfr_cmp(r19072, r19073) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19076, im, MPFR_RNDN);
        mpfr_mul(r19077, r19076, r19076, MPFR_RNDN);
        ;
        mpfr_mul(r19079, r19077, r19078, MPFR_RNDN);
        mpfr_sqrt(r19080, r19079, MPFR_RNDN);
        mpfr_mul(r19081, r19075, r19080, MPFR_RNDN);
        mpfr_neg(r19082, r19072, MPFR_RNDN);
        mpfr_sub(r19083, r19082, r19072, MPFR_RNDN);
        mpfr_sqrt(r19084, r19083, MPFR_RNDN);
        mpfr_div(r19085, r19081, r19084, MPFR_RNDN);
        ;
        mpfr_set_si(r19087, mpfr_cmp(r19072, r19086) <= 0, MPFR_RNDN);
        mpfr_sqr(r19088, r19072, MPFR_RNDN);
        mpfr_add(r19089, r19088, r19077, MPFR_RNDN);
        mpfr_sqrt(r19090, r19089, MPFR_RNDN);
        mpfr_sqrt(r19091, r19090, MPFR_RNDN);
        mpfr_sqr(r19092, r19091, MPFR_RNDN);
        mpfr_add(r19093, r19092, r19072, MPFR_RNDN);
        mpfr_mul(r19094, r19078, r19093, MPFR_RNDN);
        mpfr_sqrt(r19095, r19094, MPFR_RNDN);
        mpfr_mul(r19096, r19075, r19095, MPFR_RNDN);
        mpfr_add(r19097, r19072, r19072, MPFR_RNDN);
        mpfr_mul(r19098, r19078, r19097, MPFR_RNDN);
        mpfr_sqrt(r19099, r19098, MPFR_RNDN);
        mpfr_mul(r19100, r19075, r19099, MPFR_RNDN);
        if (mpfr_get_si(r19087, MPFR_RNDN)) { mpfr_set(r19101, r19096, MPFR_RNDN); } else { mpfr_set(r19101, r19100, MPFR_RNDN); };
        if (mpfr_get_si(r19074, MPFR_RNDN)) { mpfr_set(r19102, r19085, MPFR_RNDN); } else { mpfr_set(r19102, r19101, MPFR_RNDN); };
        return mpfr_get_d(r19102, MPFR_RNDN);
}

