#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 r19935 = 0.5f;
        float r19936 = 2.0f;
        float r19937 = re;
        float r19938 = r19937 * r19937;
        float r19939 = im;
        float r19940 = r19939 * r19939;
        float r19941 = r19938 + r19940;
        float r19942 = sqrt(r19941);
        float r19943 = r19942 + r19937;
        float r19944 = r19936 * r19943;
        float r19945 = sqrt(r19944);
        float r19946 = r19935 * r19945;
        return r19946;
}

double f_id(double re, double im) {
        double r19947 = 0.5;
        double r19948 = 2.0;
        double r19949 = re;
        double r19950 = r19949 * r19949;
        double r19951 = im;
        double r19952 = r19951 * r19951;
        double r19953 = r19950 + r19952;
        double r19954 = sqrt(r19953);
        double r19955 = r19954 + r19949;
        double r19956 = r19948 * r19955;
        double r19957 = sqrt(r19956);
        double r19958 = r19947 * r19957;
        return r19958;
}


double f_of(float re, float im) {
        float r19959 = re;
        float r19960 = -742857814.634727f;
        bool r19961 = r19959 <= r19960;
        float r19962 = 0.5f;
        float r19963 = im;
        float r19964 = r19963 * r19963;
        float r19965 = 2.0f;
        float r19966 = r19964 * r19965;
        float r19967 = sqrt(r19966);
        float r19968 = r19962 * r19967;
        float r19969 = -r19959;
        float r19970 = r19969 - r19959;
        float r19971 = sqrt(r19970);
        float r19972 = r19968 / r19971;
        float r19973 = -4.877685844349987e-272f;
        bool r19974 = r19959 <= r19973;
        float r19975 = r19963 + r19959;
        float r19976 = r19965 * r19975;
        float r19977 = sqrt(r19976);
        float r19978 = r19962 * r19977;
        float r19979 = 1.4120771415832492e+126f;
        bool r19980 = r19959 <= r19979;
        float r19981 = r19959 * r19959;
        float r19982 = r19981 + r19964;
        float r19983 = sqrt(r19982);
        float r19984 = sqrt(r19983);
        float r19985 = r19984 * r19984;
        float r19986 = r19985 + r19959;
        float r19987 = r19965 * r19986;
        float r19988 = sqrt(r19987);
        float r19989 = r19962 * r19988;
        float r19990 = r19959 + r19959;
        float r19991 = r19965 * r19990;
        float r19992 = sqrt(r19991);
        float r19993 = r19962 * r19992;
        float r19994 = r19980 ? r19989 : r19993;
        float r19995 = r19974 ? r19978 : r19994;
        float r19996 = r19961 ? r19972 : r19995;
        return r19996;
}

double f_od(double re, double im) {
        double r19997 = re;
        double r19998 = -742857814.634727;
        bool r19999 = r19997 <= r19998;
        double r20000 = 0.5;
        double r20001 = im;
        double r20002 = r20001 * r20001;
        double r20003 = 2.0;
        double r20004 = r20002 * r20003;
        double r20005 = sqrt(r20004);
        double r20006 = r20000 * r20005;
        double r20007 = -r19997;
        double r20008 = r20007 - r19997;
        double r20009 = sqrt(r20008);
        double r20010 = r20006 / r20009;
        double r20011 = -4.877685844349987e-272;
        bool r20012 = r19997 <= r20011;
        double r20013 = r20001 + r19997;
        double r20014 = r20003 * r20013;
        double r20015 = sqrt(r20014);
        double r20016 = r20000 * r20015;
        double r20017 = 1.4120771415832492e+126;
        bool r20018 = r19997 <= r20017;
        double r20019 = r19997 * r19997;
        double r20020 = r20019 + r20002;
        double r20021 = sqrt(r20020);
        double r20022 = sqrt(r20021);
        double r20023 = r20022 * r20022;
        double r20024 = r20023 + r19997;
        double r20025 = r20003 * r20024;
        double r20026 = sqrt(r20025);
        double r20027 = r20000 * r20026;
        double r20028 = r19997 + r19997;
        double r20029 = r20003 * r20028;
        double r20030 = sqrt(r20029);
        double r20031 = r20000 * r20030;
        double r20032 = r20018 ? r20027 : r20031;
        double r20033 = r20012 ? r20016 : r20032;
        double r20034 = r19999 ? r20010 : r20033;
        return r20034;
}

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 r20035, r20036, r20037, r20038, r20039, r20040, r20041, r20042, r20043, r20044, r20045, r20046;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20035, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r20036, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20037);
        mpfr_init(r20038);
        mpfr_init(r20039);
        mpfr_init(r20040);
        mpfr_init(r20041);
        mpfr_init(r20042);
        mpfr_init(r20043);
        mpfr_init(r20044);
        mpfr_init(r20045);
        mpfr_init(r20046);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r20037, re, MPFR_RNDN);
        mpfr_mul(r20038, r20037, r20037, MPFR_RNDN);
        mpfr_set_d(r20039, im, MPFR_RNDN);
        mpfr_mul(r20040, r20039, r20039, MPFR_RNDN);
        mpfr_add(r20041, r20038, r20040, MPFR_RNDN);
        mpfr_sqrt(r20042, r20041, MPFR_RNDN);
        mpfr_add(r20043, r20042, r20037, MPFR_RNDN);
        mpfr_mul(r20044, r20036, r20043, MPFR_RNDN);
        mpfr_sqrt(r20045, r20044, MPFR_RNDN);
        mpfr_mul(r20046, r20035, r20045, MPFR_RNDN);
        return mpfr_get_d(r20046, MPFR_RNDN);
}

static mpfr_t r20047, r20048, r20049, r20050, r20051, r20052, r20053, r20054, r20055, r20056, r20057, r20058, r20059, r20060, r20061, r20062, r20063, r20064, r20065, r20066, r20067, r20068, r20069, r20070, r20071, r20072, r20073, r20074, r20075, r20076, r20077, r20078, r20079, r20080, r20081, r20082, r20083, r20084;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20047);
        mpfr_init_set_str(r20048, "-742857814.634727", 10, MPFR_RNDN);
        mpfr_init(r20049);
        mpfr_init_set_str(r20050, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20051);
        mpfr_init(r20052);
        mpfr_init_set_str(r20053, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20054);
        mpfr_init(r20055);
        mpfr_init(r20056);
        mpfr_init(r20057);
        mpfr_init(r20058);
        mpfr_init(r20059);
        mpfr_init(r20060);
        mpfr_init_set_str(r20061, "-4.877685844349987e-272", 10, MPFR_RNDN);
        mpfr_init(r20062);
        mpfr_init(r20063);
        mpfr_init(r20064);
        mpfr_init(r20065);
        mpfr_init(r20066);
        mpfr_init_set_str(r20067, "1.4120771415832492e+126", 10, MPFR_RNDN);
        mpfr_init(r20068);
        mpfr_init(r20069);
        mpfr_init(r20070);
        mpfr_init(r20071);
        mpfr_init(r20072);
        mpfr_init(r20073);
        mpfr_init(r20074);
        mpfr_init(r20075);
        mpfr_init(r20076);
        mpfr_init(r20077);
        mpfr_init(r20078);
        mpfr_init(r20079);
        mpfr_init(r20080);
        mpfr_init(r20081);
        mpfr_init(r20082);
        mpfr_init(r20083);
        mpfr_init(r20084);
}

double f_fm(double re, double im) {
        mpfr_set_d(r20047, re, MPFR_RNDN);
        ;
        mpfr_set_si(r20049, mpfr_cmp(r20047, r20048) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20051, im, MPFR_RNDN);
        mpfr_mul(r20052, r20051, r20051, MPFR_RNDN);
        ;
        mpfr_mul(r20054, r20052, r20053, MPFR_RNDN);
        mpfr_sqrt(r20055, r20054, MPFR_RNDN);
        mpfr_mul(r20056, r20050, r20055, MPFR_RNDN);
        mpfr_neg(r20057, r20047, MPFR_RNDN);
        mpfr_sub(r20058, r20057, r20047, MPFR_RNDN);
        mpfr_sqrt(r20059, r20058, MPFR_RNDN);
        mpfr_div(r20060, r20056, r20059, MPFR_RNDN);
        ;
        mpfr_set_si(r20062, mpfr_cmp(r20047, r20061) <= 0, MPFR_RNDN);
        mpfr_add(r20063, r20051, r20047, MPFR_RNDN);
        mpfr_mul(r20064, r20053, r20063, MPFR_RNDN);
        mpfr_sqrt(r20065, r20064, MPFR_RNDN);
        mpfr_mul(r20066, r20050, r20065, MPFR_RNDN);
        ;
        mpfr_set_si(r20068, mpfr_cmp(r20047, r20067) <= 0, MPFR_RNDN);
        mpfr_sqr(r20069, r20047, MPFR_RNDN);
        mpfr_add(r20070, r20069, r20052, MPFR_RNDN);
        mpfr_sqrt(r20071, r20070, MPFR_RNDN);
        mpfr_sqrt(r20072, r20071, MPFR_RNDN);
        mpfr_sqr(r20073, r20072, MPFR_RNDN);
        mpfr_add(r20074, r20073, r20047, MPFR_RNDN);
        mpfr_mul(r20075, r20053, r20074, MPFR_RNDN);
        mpfr_sqrt(r20076, r20075, MPFR_RNDN);
        mpfr_mul(r20077, r20050, r20076, MPFR_RNDN);
        mpfr_add(r20078, r20047, r20047, MPFR_RNDN);
        mpfr_mul(r20079, r20053, r20078, MPFR_RNDN);
        mpfr_sqrt(r20080, r20079, MPFR_RNDN);
        mpfr_mul(r20081, r20050, r20080, MPFR_RNDN);
        if (mpfr_get_si(r20068, MPFR_RNDN)) { mpfr_set(r20082, r20077, MPFR_RNDN); } else { mpfr_set(r20082, r20081, MPFR_RNDN); };
        if (mpfr_get_si(r20062, MPFR_RNDN)) { mpfr_set(r20083, r20066, MPFR_RNDN); } else { mpfr_set(r20083, r20082, MPFR_RNDN); };
        if (mpfr_get_si(r20049, MPFR_RNDN)) { mpfr_set(r20084, r20060, MPFR_RNDN); } else { mpfr_set(r20084, r20083, MPFR_RNDN); };
        return mpfr_get_d(r20084, MPFR_RNDN);
}

static mpfr_t r20085, r20086, r20087, r20088, r20089, r20090, r20091, r20092, r20093, r20094, r20095, r20096, r20097, r20098, r20099, r20100, r20101, r20102, r20103, r20104, r20105, r20106, r20107, r20108, r20109, r20110, r20111, r20112, r20113, r20114, r20115, r20116, r20117, r20118, r20119, r20120, r20121, r20122;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20085);
        mpfr_init_set_str(r20086, "-742857814.634727", 10, MPFR_RNDN);
        mpfr_init(r20087);
        mpfr_init_set_str(r20088, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20089);
        mpfr_init(r20090);
        mpfr_init_set_str(r20091, "2.0", 10, MPFR_RNDN);
        mpfr_init(r20092);
        mpfr_init(r20093);
        mpfr_init(r20094);
        mpfr_init(r20095);
        mpfr_init(r20096);
        mpfr_init(r20097);
        mpfr_init(r20098);
        mpfr_init_set_str(r20099, "-4.877685844349987e-272", 10, MPFR_RNDN);
        mpfr_init(r20100);
        mpfr_init(r20101);
        mpfr_init(r20102);
        mpfr_init(r20103);
        mpfr_init(r20104);
        mpfr_init_set_str(r20105, "1.4120771415832492e+126", 10, MPFR_RNDN);
        mpfr_init(r20106);
        mpfr_init(r20107);
        mpfr_init(r20108);
        mpfr_init(r20109);
        mpfr_init(r20110);
        mpfr_init(r20111);
        mpfr_init(r20112);
        mpfr_init(r20113);
        mpfr_init(r20114);
        mpfr_init(r20115);
        mpfr_init(r20116);
        mpfr_init(r20117);
        mpfr_init(r20118);
        mpfr_init(r20119);
        mpfr_init(r20120);
        mpfr_init(r20121);
        mpfr_init(r20122);
}

double f_dm(double re, double im) {
        mpfr_set_d(r20085, re, MPFR_RNDN);
        ;
        mpfr_set_si(r20087, mpfr_cmp(r20085, r20086) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20089, im, MPFR_RNDN);
        mpfr_mul(r20090, r20089, r20089, MPFR_RNDN);
        ;
        mpfr_mul(r20092, r20090, r20091, MPFR_RNDN);
        mpfr_sqrt(r20093, r20092, MPFR_RNDN);
        mpfr_mul(r20094, r20088, r20093, MPFR_RNDN);
        mpfr_neg(r20095, r20085, MPFR_RNDN);
        mpfr_sub(r20096, r20095, r20085, MPFR_RNDN);
        mpfr_sqrt(r20097, r20096, MPFR_RNDN);
        mpfr_div(r20098, r20094, r20097, MPFR_RNDN);
        ;
        mpfr_set_si(r20100, mpfr_cmp(r20085, r20099) <= 0, MPFR_RNDN);
        mpfr_add(r20101, r20089, r20085, MPFR_RNDN);
        mpfr_mul(r20102, r20091, r20101, MPFR_RNDN);
        mpfr_sqrt(r20103, r20102, MPFR_RNDN);
        mpfr_mul(r20104, r20088, r20103, MPFR_RNDN);
        ;
        mpfr_set_si(r20106, mpfr_cmp(r20085, r20105) <= 0, MPFR_RNDN);
        mpfr_sqr(r20107, r20085, MPFR_RNDN);
        mpfr_add(r20108, r20107, r20090, MPFR_RNDN);
        mpfr_sqrt(r20109, r20108, MPFR_RNDN);
        mpfr_sqrt(r20110, r20109, MPFR_RNDN);
        mpfr_sqr(r20111, r20110, MPFR_RNDN);
        mpfr_add(r20112, r20111, r20085, MPFR_RNDN);
        mpfr_mul(r20113, r20091, r20112, MPFR_RNDN);
        mpfr_sqrt(r20114, r20113, MPFR_RNDN);
        mpfr_mul(r20115, r20088, r20114, MPFR_RNDN);
        mpfr_add(r20116, r20085, r20085, MPFR_RNDN);
        mpfr_mul(r20117, r20091, r20116, MPFR_RNDN);
        mpfr_sqrt(r20118, r20117, MPFR_RNDN);
        mpfr_mul(r20119, r20088, r20118, MPFR_RNDN);
        if (mpfr_get_si(r20106, MPFR_RNDN)) { mpfr_set(r20120, r20115, MPFR_RNDN); } else { mpfr_set(r20120, r20119, MPFR_RNDN); };
        if (mpfr_get_si(r20100, MPFR_RNDN)) { mpfr_set(r20121, r20104, MPFR_RNDN); } else { mpfr_set(r20121, r20120, MPFR_RNDN); };
        if (mpfr_get_si(r20087, MPFR_RNDN)) { mpfr_set(r20122, r20098, MPFR_RNDN); } else { mpfr_set(r20122, r20121, MPFR_RNDN); };
        return mpfr_get_d(r20122, MPFR_RNDN);
}

