#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "math.sqrt on complex, imaginary part, im greater than 0 branch";

double f_if(float re, float im) {
        float r8053 = 0.5f;
        float r8054 = 2.0f;
        float r8055 = re;
        float r8056 = r8055 * r8055;
        float r8057 = im;
        float r8058 = r8057 * r8057;
        float r8059 = r8056 + r8058;
        float r8060 = sqrt(r8059);
        float r8061 = r8060 - r8055;
        float r8062 = r8054 * r8061;
        float r8063 = sqrt(r8062);
        float r8064 = r8053 * r8063;
        return r8064;
}

double f_id(double re, double im) {
        double r8065 = 0.5;
        double r8066 = 2.0;
        double r8067 = re;
        double r8068 = r8067 * r8067;
        double r8069 = im;
        double r8070 = r8069 * r8069;
        double r8071 = r8068 + r8070;
        double r8072 = sqrt(r8071);
        double r8073 = r8072 - r8067;
        double r8074 = r8066 * r8073;
        double r8075 = sqrt(r8074);
        double r8076 = r8065 * r8075;
        return r8076;
}


double f_of(float re, float im) {
        float r8077 = 0.5f;
        float r8078 = 2.0f;
        float r8079 = im;
        float r8080 = re;
        float r8081 = r8079 - r8080;
        float r8082 = r8078 * r8081;
        float r8083 = sqrt(r8082);
        float r8084 = r8077 * r8083;
        float r8085 = 2.0151317580916575e-81f;
        bool r8086 = r8084 <= r8085;
        float r8087 = 5.017191383144637e+77f;
        bool r8088 = r8084 <= r8087;
        float r8089 = r8080 * r8080;
        float r8090 = r8079 * r8079;
        float r8091 = r8089 + r8090;
        float r8092 = sqrt(r8091);
        float r8093 = r8092 - r8080;
        float r8094 = r8093 * r8078;
        float r8095 = sqrt(r8094);
        float r8096 = r8077 * r8095;
        float r8097 = 9.18008809858474e+112f;
        bool r8098 = r8084 <= r8097;
        float r8099 = 1.6413990271473082e+153f;
        bool r8100 = r8084 <= r8099;
        float r8101 = -r8080;
        float r8102 = r8101 - r8080;
        float r8103 = r8078 * r8102;
        float r8104 = sqrt(r8103);
        float r8105 = r8104 * r8077;
        float r8106 = r8078 * r8090;
        float r8107 = sqrt(r8106);
        float r8108 = r8092 + r8080;
        float r8109 = sqrt(r8108);
        float r8110 = r8107 / r8109;
        float r8111 = r8077 * r8110;
        float r8112 = r8100 ? r8105 : r8111;
        float r8113 = r8098 ? r8084 : r8112;
        float r8114 = r8088 ? r8096 : r8113;
        float r8115 = r8086 ? r8084 : r8114;
        return r8115;
}

double f_od(double re, double im) {
        double r8116 = 0.5;
        double r8117 = 2.0;
        double r8118 = im;
        double r8119 = re;
        double r8120 = r8118 - r8119;
        double r8121 = r8117 * r8120;
        double r8122 = sqrt(r8121);
        double r8123 = r8116 * r8122;
        double r8124 = 2.0151317580916575e-81;
        bool r8125 = r8123 <= r8124;
        double r8126 = 5.017191383144637e+77;
        bool r8127 = r8123 <= r8126;
        double r8128 = r8119 * r8119;
        double r8129 = r8118 * r8118;
        double r8130 = r8128 + r8129;
        double r8131 = sqrt(r8130);
        double r8132 = r8131 - r8119;
        double r8133 = r8132 * r8117;
        double r8134 = sqrt(r8133);
        double r8135 = r8116 * r8134;
        double r8136 = 9.18008809858474e+112;
        bool r8137 = r8123 <= r8136;
        double r8138 = 1.6413990271473082e+153;
        bool r8139 = r8123 <= r8138;
        double r8140 = -r8119;
        double r8141 = r8140 - r8119;
        double r8142 = r8117 * r8141;
        double r8143 = sqrt(r8142);
        double r8144 = r8143 * r8116;
        double r8145 = r8117 * r8129;
        double r8146 = sqrt(r8145);
        double r8147 = r8131 + r8119;
        double r8148 = sqrt(r8147);
        double r8149 = r8146 / r8148;
        double r8150 = r8116 * r8149;
        double r8151 = r8139 ? r8144 : r8150;
        double r8152 = r8137 ? r8123 : r8151;
        double r8153 = r8127 ? r8135 : r8152;
        double r8154 = r8125 ? r8123 : r8153;
        return r8154;
}

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 r8155, r8156, r8157, r8158, r8159, r8160, r8161, r8162, r8163, r8164, r8165, r8166;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r8155, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r8156, "2.0", 10, MPFR_RNDN);
        mpfr_init(r8157);
        mpfr_init(r8158);
        mpfr_init(r8159);
        mpfr_init(r8160);
        mpfr_init(r8161);
        mpfr_init(r8162);
        mpfr_init(r8163);
        mpfr_init(r8164);
        mpfr_init(r8165);
        mpfr_init(r8166);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r8157, re, MPFR_RNDN);
        mpfr_mul(r8158, r8157, r8157, MPFR_RNDN);
        mpfr_set_d(r8159, im, MPFR_RNDN);
        mpfr_mul(r8160, r8159, r8159, MPFR_RNDN);
        mpfr_add(r8161, r8158, r8160, MPFR_RNDN);
        mpfr_sqrt(r8162, r8161, MPFR_RNDN);
        mpfr_sub(r8163, r8162, r8157, MPFR_RNDN);
        mpfr_mul(r8164, r8156, r8163, MPFR_RNDN);
        mpfr_sqrt(r8165, r8164, MPFR_RNDN);
        mpfr_mul(r8166, r8155, r8165, MPFR_RNDN);
        return mpfr_get_d(r8166, MPFR_RNDN);
}

static mpfr_t r8167, r8168, r8169, r8170, r8171, r8172, r8173, r8174, r8175, r8176, r8177, r8178, r8179, r8180, r8181, r8182, r8183, r8184, r8185, r8186, r8187, r8188, r8189, r8190, r8191, r8192, r8193, r8194, r8195, r8196, r8197, r8198, r8199, r8200, r8201, r8202, r8203, r8204, r8205;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r8167, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r8168, "2.0", 10, MPFR_RNDN);
        mpfr_init(r8169);
        mpfr_init(r8170);
        mpfr_init(r8171);
        mpfr_init(r8172);
        mpfr_init(r8173);
        mpfr_init(r8174);
        mpfr_init_set_str(r8175, "2.0151317580916575e-81", 10, MPFR_RNDN);
        mpfr_init(r8176);
        mpfr_init_set_str(r8177, "5.017191383144637e+77", 10, MPFR_RNDN);
        mpfr_init(r8178);
        mpfr_init(r8179);
        mpfr_init(r8180);
        mpfr_init(r8181);
        mpfr_init(r8182);
        mpfr_init(r8183);
        mpfr_init(r8184);
        mpfr_init(r8185);
        mpfr_init(r8186);
        mpfr_init_set_str(r8187, "9.18008809858474e+112", 10, MPFR_RNDN);
        mpfr_init(r8188);
        mpfr_init_set_str(r8189, "1.6413990271473082e+153", 10, MPFR_RNDN);
        mpfr_init(r8190);
        mpfr_init(r8191);
        mpfr_init(r8192);
        mpfr_init(r8193);
        mpfr_init(r8194);
        mpfr_init(r8195);
        mpfr_init(r8196);
        mpfr_init(r8197);
        mpfr_init(r8198);
        mpfr_init(r8199);
        mpfr_init(r8200);
        mpfr_init(r8201);
        mpfr_init(r8202);
        mpfr_init(r8203);
        mpfr_init(r8204);
        mpfr_init(r8205);
}

double f_fm(double re, double im) {
        ;
        ;
        mpfr_set_d(r8169, im, MPFR_RNDN);
        mpfr_set_d(r8170, re, MPFR_RNDN);
        mpfr_sub(r8171, r8169, r8170, MPFR_RNDN);
        mpfr_mul(r8172, r8168, r8171, MPFR_RNDN);
        mpfr_sqrt(r8173, r8172, MPFR_RNDN);
        mpfr_mul(r8174, r8167, r8173, MPFR_RNDN);
        ;
        mpfr_set_si(r8176, mpfr_cmp(r8174, r8175) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8178, mpfr_cmp(r8174, r8177) <= 0, MPFR_RNDN);
        mpfr_mul(r8179, r8170, r8170, MPFR_RNDN);
        mpfr_mul(r8180, r8169, r8169, MPFR_RNDN);
        mpfr_add(r8181, r8179, r8180, MPFR_RNDN);
        mpfr_sqrt(r8182, r8181, MPFR_RNDN);
        mpfr_sub(r8183, r8182, r8170, MPFR_RNDN);
        mpfr_mul(r8184, r8183, r8168, MPFR_RNDN);
        mpfr_sqrt(r8185, r8184, MPFR_RNDN);
        mpfr_mul(r8186, r8167, r8185, MPFR_RNDN);
        ;
        mpfr_set_si(r8188, mpfr_cmp(r8174, r8187) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8190, mpfr_cmp(r8174, r8189) <= 0, MPFR_RNDN);
        mpfr_neg(r8191, r8170, MPFR_RNDN);
        mpfr_sub(r8192, r8191, r8170, MPFR_RNDN);
        mpfr_mul(r8193, r8168, r8192, MPFR_RNDN);
        mpfr_sqrt(r8194, r8193, MPFR_RNDN);
        mpfr_mul(r8195, r8194, r8167, MPFR_RNDN);
        mpfr_mul(r8196, r8168, r8180, MPFR_RNDN);
        mpfr_sqrt(r8197, r8196, MPFR_RNDN);
        mpfr_add(r8198, r8182, r8170, MPFR_RNDN);
        mpfr_sqrt(r8199, r8198, MPFR_RNDN);
        mpfr_div(r8200, r8197, r8199, MPFR_RNDN);
        mpfr_mul(r8201, r8167, r8200, MPFR_RNDN);
        if (mpfr_get_si(r8190, MPFR_RNDN)) { mpfr_set(r8202, r8195, MPFR_RNDN); } else { mpfr_set(r8202, r8201, MPFR_RNDN); };
        if (mpfr_get_si(r8188, MPFR_RNDN)) { mpfr_set(r8203, r8174, MPFR_RNDN); } else { mpfr_set(r8203, r8202, MPFR_RNDN); };
        if (mpfr_get_si(r8178, MPFR_RNDN)) { mpfr_set(r8204, r8186, MPFR_RNDN); } else { mpfr_set(r8204, r8203, MPFR_RNDN); };
        if (mpfr_get_si(r8176, MPFR_RNDN)) { mpfr_set(r8205, r8174, MPFR_RNDN); } else { mpfr_set(r8205, r8204, MPFR_RNDN); };
        return mpfr_get_d(r8205, MPFR_RNDN);
}

static mpfr_t r8206, r8207, r8208, r8209, r8210, r8211, r8212, r8213, r8214, r8215, r8216, r8217, r8218, r8219, r8220, r8221, r8222, r8223, r8224, r8225, r8226, r8227, r8228, r8229, r8230, r8231, r8232, r8233, r8234, r8235, r8236, r8237, r8238, r8239, r8240, r8241, r8242, r8243, r8244;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r8206, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r8207, "2.0", 10, MPFR_RNDN);
        mpfr_init(r8208);
        mpfr_init(r8209);
        mpfr_init(r8210);
        mpfr_init(r8211);
        mpfr_init(r8212);
        mpfr_init(r8213);
        mpfr_init_set_str(r8214, "2.0151317580916575e-81", 10, MPFR_RNDN);
        mpfr_init(r8215);
        mpfr_init_set_str(r8216, "5.017191383144637e+77", 10, MPFR_RNDN);
        mpfr_init(r8217);
        mpfr_init(r8218);
        mpfr_init(r8219);
        mpfr_init(r8220);
        mpfr_init(r8221);
        mpfr_init(r8222);
        mpfr_init(r8223);
        mpfr_init(r8224);
        mpfr_init(r8225);
        mpfr_init_set_str(r8226, "9.18008809858474e+112", 10, MPFR_RNDN);
        mpfr_init(r8227);
        mpfr_init_set_str(r8228, "1.6413990271473082e+153", 10, MPFR_RNDN);
        mpfr_init(r8229);
        mpfr_init(r8230);
        mpfr_init(r8231);
        mpfr_init(r8232);
        mpfr_init(r8233);
        mpfr_init(r8234);
        mpfr_init(r8235);
        mpfr_init(r8236);
        mpfr_init(r8237);
        mpfr_init(r8238);
        mpfr_init(r8239);
        mpfr_init(r8240);
        mpfr_init(r8241);
        mpfr_init(r8242);
        mpfr_init(r8243);
        mpfr_init(r8244);
}

double f_dm(double re, double im) {
        ;
        ;
        mpfr_set_d(r8208, im, MPFR_RNDN);
        mpfr_set_d(r8209, re, MPFR_RNDN);
        mpfr_sub(r8210, r8208, r8209, MPFR_RNDN);
        mpfr_mul(r8211, r8207, r8210, MPFR_RNDN);
        mpfr_sqrt(r8212, r8211, MPFR_RNDN);
        mpfr_mul(r8213, r8206, r8212, MPFR_RNDN);
        ;
        mpfr_set_si(r8215, mpfr_cmp(r8213, r8214) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8217, mpfr_cmp(r8213, r8216) <= 0, MPFR_RNDN);
        mpfr_mul(r8218, r8209, r8209, MPFR_RNDN);
        mpfr_mul(r8219, r8208, r8208, MPFR_RNDN);
        mpfr_add(r8220, r8218, r8219, MPFR_RNDN);
        mpfr_sqrt(r8221, r8220, MPFR_RNDN);
        mpfr_sub(r8222, r8221, r8209, MPFR_RNDN);
        mpfr_mul(r8223, r8222, r8207, MPFR_RNDN);
        mpfr_sqrt(r8224, r8223, MPFR_RNDN);
        mpfr_mul(r8225, r8206, r8224, MPFR_RNDN);
        ;
        mpfr_set_si(r8227, mpfr_cmp(r8213, r8226) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8229, mpfr_cmp(r8213, r8228) <= 0, MPFR_RNDN);
        mpfr_neg(r8230, r8209, MPFR_RNDN);
        mpfr_sub(r8231, r8230, r8209, MPFR_RNDN);
        mpfr_mul(r8232, r8207, r8231, MPFR_RNDN);
        mpfr_sqrt(r8233, r8232, MPFR_RNDN);
        mpfr_mul(r8234, r8233, r8206, MPFR_RNDN);
        mpfr_mul(r8235, r8207, r8219, MPFR_RNDN);
        mpfr_sqrt(r8236, r8235, MPFR_RNDN);
        mpfr_add(r8237, r8221, r8209, MPFR_RNDN);
        mpfr_sqrt(r8238, r8237, MPFR_RNDN);
        mpfr_div(r8239, r8236, r8238, MPFR_RNDN);
        mpfr_mul(r8240, r8206, r8239, MPFR_RNDN);
        if (mpfr_get_si(r8229, MPFR_RNDN)) { mpfr_set(r8241, r8234, MPFR_RNDN); } else { mpfr_set(r8241, r8240, MPFR_RNDN); };
        if (mpfr_get_si(r8227, MPFR_RNDN)) { mpfr_set(r8242, r8213, MPFR_RNDN); } else { mpfr_set(r8242, r8241, MPFR_RNDN); };
        if (mpfr_get_si(r8217, MPFR_RNDN)) { mpfr_set(r8243, r8225, MPFR_RNDN); } else { mpfr_set(r8243, r8242, MPFR_RNDN); };
        if (mpfr_get_si(r8215, MPFR_RNDN)) { mpfr_set(r8244, r8213, MPFR_RNDN); } else { mpfr_set(r8244, r8243, MPFR_RNDN); };
        return mpfr_get_d(r8244, MPFR_RNDN);
}

