#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 r8051 = 0.5f;
        float r8052 = 2.0f;
        float r8053 = re;
        float r8054 = r8053 * r8053;
        float r8055 = im;
        float r8056 = r8055 * r8055;
        float r8057 = r8054 + r8056;
        float r8058 = sqrt(r8057);
        float r8059 = r8058 - r8053;
        float r8060 = r8052 * r8059;
        float r8061 = sqrt(r8060);
        float r8062 = r8051 * r8061;
        return r8062;
}

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


double f_of(float re, float im) {
        float r8075 = im;
        float r8076 = re;
        float r8077 = r8075 - r8076;
        float r8078 = 2.0f;
        float r8079 = r8077 * r8078;
        float r8080 = -4.88697970712414e+162f;
        bool r8081 = r8079 <= r8080;
        float r8082 = r8078 * r8075;
        float r8083 = r8075 * r8082;
        float r8084 = sqrt(r8083);
        float r8085 = 0.5f;
        float r8086 = r8084 * r8085;
        float r8087 = r8076 + r8076;
        float r8088 = sqrt(r8087);
        float r8089 = r8086 / r8088;
        float r8090 = -9.729606377274611e-221f;
        bool r8091 = r8079 <= r8090;
        float r8092 = r8076 * r8076;
        float r8093 = r8075 * r8075;
        float r8094 = r8092 + r8093;
        float r8095 = sqrt(r8094);
        float r8096 = r8095 + r8076;
        float r8097 = sqrt(r8096);
        float r8098 = sqrt(r8097);
        float r8099 = r8098 * r8098;
        float r8100 = r8086 / r8099;
        float r8101 = 2.165432228559356e+158f;
        bool r8102 = r8079 <= r8101;
        float r8103 = r8095 - r8076;
        float r8104 = r8078 * r8103;
        float r8105 = sqrt(r8104);
        float r8106 = r8085 * r8105;
        float r8107 = 1.0142598911658721e+206f;
        bool r8108 = r8079 <= r8107;
        float r8109 = sqrt(r8079);
        float r8110 = r8109 * r8085;
        float r8111 = 7.440909926970905e+245f;
        bool r8112 = r8079 <= r8111;
        float r8113 = -2.0f;
        float r8114 = r8113 * r8076;
        float r8115 = r8078 * r8114;
        float r8116 = sqrt(r8115);
        float r8117 = r8085 * r8116;
        float r8118 = 2.0104881096821083e+282f;
        bool r8119 = r8079 <= r8118;
        float r8120 = 5.425637498985025e+303f;
        bool r8121 = r8079 <= r8120;
        float r8122 = r8121 ? r8117 : r8110;
        float r8123 = r8119 ? r8110 : r8122;
        float r8124 = r8112 ? r8117 : r8123;
        float r8125 = r8108 ? r8110 : r8124;
        float r8126 = r8102 ? r8106 : r8125;
        float r8127 = r8091 ? r8100 : r8126;
        float r8128 = r8081 ? r8089 : r8127;
        return r8128;
}

double f_od(double re, double im) {
        double r8129 = im;
        double r8130 = re;
        double r8131 = r8129 - r8130;
        double r8132 = 2.0;
        double r8133 = r8131 * r8132;
        double r8134 = -4.88697970712414e+162;
        bool r8135 = r8133 <= r8134;
        double r8136 = r8132 * r8129;
        double r8137 = r8129 * r8136;
        double r8138 = sqrt(r8137);
        double r8139 = 0.5;
        double r8140 = r8138 * r8139;
        double r8141 = r8130 + r8130;
        double r8142 = sqrt(r8141);
        double r8143 = r8140 / r8142;
        double r8144 = -9.729606377274611e-221;
        bool r8145 = r8133 <= r8144;
        double r8146 = r8130 * r8130;
        double r8147 = r8129 * r8129;
        double r8148 = r8146 + r8147;
        double r8149 = sqrt(r8148);
        double r8150 = r8149 + r8130;
        double r8151 = sqrt(r8150);
        double r8152 = sqrt(r8151);
        double r8153 = r8152 * r8152;
        double r8154 = r8140 / r8153;
        double r8155 = 2.165432228559356e+158;
        bool r8156 = r8133 <= r8155;
        double r8157 = r8149 - r8130;
        double r8158 = r8132 * r8157;
        double r8159 = sqrt(r8158);
        double r8160 = r8139 * r8159;
        double r8161 = 1.0142598911658721e+206;
        bool r8162 = r8133 <= r8161;
        double r8163 = sqrt(r8133);
        double r8164 = r8163 * r8139;
        double r8165 = 7.440909926970905e+245;
        bool r8166 = r8133 <= r8165;
        double r8167 = -2.0;
        double r8168 = r8167 * r8130;
        double r8169 = r8132 * r8168;
        double r8170 = sqrt(r8169);
        double r8171 = r8139 * r8170;
        double r8172 = 2.0104881096821083e+282;
        bool r8173 = r8133 <= r8172;
        double r8174 = 5.425637498985025e+303;
        bool r8175 = r8133 <= r8174;
        double r8176 = r8175 ? r8171 : r8164;
        double r8177 = r8173 ? r8164 : r8176;
        double r8178 = r8166 ? r8171 : r8177;
        double r8179 = r8162 ? r8164 : r8178;
        double r8180 = r8156 ? r8160 : r8179;
        double r8181 = r8145 ? r8154 : r8180;
        double r8182 = r8135 ? r8143 : r8181;
        return r8182;
}

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 r8183, r8184, r8185, r8186, r8187, r8188, r8189, r8190, r8191, r8192, r8193, r8194;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r8183, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r8184, "2.0", 10, MPFR_RNDN);
        mpfr_init(r8185);
        mpfr_init(r8186);
        mpfr_init(r8187);
        mpfr_init(r8188);
        mpfr_init(r8189);
        mpfr_init(r8190);
        mpfr_init(r8191);
        mpfr_init(r8192);
        mpfr_init(r8193);
        mpfr_init(r8194);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r8185, re, MPFR_RNDN);
        mpfr_mul(r8186, r8185, r8185, MPFR_RNDN);
        mpfr_set_d(r8187, im, MPFR_RNDN);
        mpfr_mul(r8188, r8187, r8187, MPFR_RNDN);
        mpfr_add(r8189, r8186, r8188, MPFR_RNDN);
        mpfr_sqrt(r8190, r8189, MPFR_RNDN);
        mpfr_sub(r8191, r8190, r8185, MPFR_RNDN);
        mpfr_mul(r8192, r8184, r8191, MPFR_RNDN);
        mpfr_sqrt(r8193, r8192, MPFR_RNDN);
        mpfr_mul(r8194, r8183, r8193, MPFR_RNDN);
        return mpfr_get_d(r8194, MPFR_RNDN);
}

static mpfr_t r8195, r8196, r8197, r8198, r8199, r8200, r8201, r8202, r8203, r8204, r8205, 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, r8245, r8246, r8247, r8248;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init(r8195);
        mpfr_init(r8196);
        mpfr_init(r8197);
        mpfr_init_set_str(r8198, "2.0", 10, MPFR_RNDN);
        mpfr_init(r8199);
        mpfr_init_set_str(r8200, "-4.88697970712414e+162", 10, MPFR_RNDN);
        mpfr_init(r8201);
        mpfr_init(r8202);
        mpfr_init(r8203);
        mpfr_init(r8204);
        mpfr_init_set_str(r8205, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8206);
        mpfr_init(r8207);
        mpfr_init(r8208);
        mpfr_init(r8209);
        mpfr_init_set_str(r8210, "-9.729606377274611e-221", 10, MPFR_RNDN);
        mpfr_init(r8211);
        mpfr_init(r8212);
        mpfr_init(r8213);
        mpfr_init(r8214);
        mpfr_init(r8215);
        mpfr_init(r8216);
        mpfr_init(r8217);
        mpfr_init(r8218);
        mpfr_init(r8219);
        mpfr_init(r8220);
        mpfr_init_set_str(r8221, "2.165432228559356e+158", 10, MPFR_RNDN);
        mpfr_init(r8222);
        mpfr_init(r8223);
        mpfr_init(r8224);
        mpfr_init(r8225);
        mpfr_init(r8226);
        mpfr_init_set_str(r8227, "1.0142598911658721e+206", 10, MPFR_RNDN);
        mpfr_init(r8228);
        mpfr_init(r8229);
        mpfr_init(r8230);
        mpfr_init_set_str(r8231, "7.440909926970905e+245", 10, MPFR_RNDN);
        mpfr_init(r8232);
        mpfr_init_set_str(r8233, "-2", 10, MPFR_RNDN);
        mpfr_init(r8234);
        mpfr_init(r8235);
        mpfr_init(r8236);
        mpfr_init(r8237);
        mpfr_init_set_str(r8238, "2.0104881096821083e+282", 10, MPFR_RNDN);
        mpfr_init(r8239);
        mpfr_init_set_str(r8240, "5.425637498985025e+303", 10, MPFR_RNDN);
        mpfr_init(r8241);
        mpfr_init(r8242);
        mpfr_init(r8243);
        mpfr_init(r8244);
        mpfr_init(r8245);
        mpfr_init(r8246);
        mpfr_init(r8247);
        mpfr_init(r8248);
}

double f_fm(double re, double im) {
        mpfr_set_d(r8195, im, MPFR_RNDN);
        mpfr_set_d(r8196, re, MPFR_RNDN);
        mpfr_sub(r8197, r8195, r8196, MPFR_RNDN);
        ;
        mpfr_mul(r8199, r8197, r8198, MPFR_RNDN);
        ;
        mpfr_set_si(r8201, mpfr_cmp(r8199, r8200) <= 0, MPFR_RNDN);
        mpfr_mul(r8202, r8198, r8195, MPFR_RNDN);
        mpfr_mul(r8203, r8195, r8202, MPFR_RNDN);
        mpfr_sqrt(r8204, r8203, MPFR_RNDN);
        ;
        mpfr_mul(r8206, r8204, r8205, MPFR_RNDN);
        mpfr_add(r8207, r8196, r8196, MPFR_RNDN);
        mpfr_sqrt(r8208, r8207, MPFR_RNDN);
        mpfr_div(r8209, r8206, r8208, MPFR_RNDN);
        ;
        mpfr_set_si(r8211, mpfr_cmp(r8199, r8210) <= 0, MPFR_RNDN);
        mpfr_mul(r8212, r8196, r8196, MPFR_RNDN);
        mpfr_mul(r8213, r8195, r8195, MPFR_RNDN);
        mpfr_add(r8214, r8212, r8213, MPFR_RNDN);
        mpfr_sqrt(r8215, r8214, MPFR_RNDN);
        mpfr_add(r8216, r8215, r8196, MPFR_RNDN);
        mpfr_sqrt(r8217, r8216, MPFR_RNDN);
        mpfr_sqrt(r8218, r8217, MPFR_RNDN);
        mpfr_mul(r8219, r8218, r8218, MPFR_RNDN);
        mpfr_div(r8220, r8206, r8219, MPFR_RNDN);
        ;
        mpfr_set_si(r8222, mpfr_cmp(r8199, r8221) <= 0, MPFR_RNDN);
        mpfr_sub(r8223, r8215, r8196, MPFR_RNDN);
        mpfr_mul(r8224, r8198, r8223, MPFR_RNDN);
        mpfr_sqrt(r8225, r8224, MPFR_RNDN);
        mpfr_mul(r8226, r8205, r8225, MPFR_RNDN);
        ;
        mpfr_set_si(r8228, mpfr_cmp(r8199, r8227) <= 0, MPFR_RNDN);
        mpfr_sqrt(r8229, r8199, MPFR_RNDN);
        mpfr_mul(r8230, r8229, r8205, MPFR_RNDN);
        ;
        mpfr_set_si(r8232, mpfr_cmp(r8199, r8231) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8234, r8233, r8196, MPFR_RNDN);
        mpfr_mul(r8235, r8198, r8234, MPFR_RNDN);
        mpfr_sqrt(r8236, r8235, MPFR_RNDN);
        mpfr_mul(r8237, r8205, r8236, MPFR_RNDN);
        ;
        mpfr_set_si(r8239, mpfr_cmp(r8199, r8238) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8241, mpfr_cmp(r8199, r8240) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r8241, MPFR_RNDN)) { mpfr_set(r8242, r8237, MPFR_RNDN); } else { mpfr_set(r8242, r8230, MPFR_RNDN); };
        if (mpfr_get_si(r8239, MPFR_RNDN)) { mpfr_set(r8243, r8230, MPFR_RNDN); } else { mpfr_set(r8243, r8242, MPFR_RNDN); };
        if (mpfr_get_si(r8232, MPFR_RNDN)) { mpfr_set(r8244, r8237, MPFR_RNDN); } else { mpfr_set(r8244, r8243, MPFR_RNDN); };
        if (mpfr_get_si(r8228, MPFR_RNDN)) { mpfr_set(r8245, r8230, MPFR_RNDN); } else { mpfr_set(r8245, r8244, MPFR_RNDN); };
        if (mpfr_get_si(r8222, MPFR_RNDN)) { mpfr_set(r8246, r8226, MPFR_RNDN); } else { mpfr_set(r8246, r8245, MPFR_RNDN); };
        if (mpfr_get_si(r8211, MPFR_RNDN)) { mpfr_set(r8247, r8220, MPFR_RNDN); } else { mpfr_set(r8247, r8246, MPFR_RNDN); };
        if (mpfr_get_si(r8201, MPFR_RNDN)) { mpfr_set(r8248, r8209, MPFR_RNDN); } else { mpfr_set(r8248, r8247, MPFR_RNDN); };
        return mpfr_get_d(r8248, MPFR_RNDN);
}

static mpfr_t r8249, r8250, r8251, r8252, r8253, r8254, r8255, r8256, r8257, r8258, r8259, r8260, r8261, r8262, r8263, r8264, r8265, r8266, r8267, r8268, r8269, r8270, r8271, r8272, r8273, r8274, r8275, r8276, r8277, r8278, r8279, r8280, r8281, r8282, r8283, r8284, r8285, r8286, r8287, r8288, r8289, r8290, r8291, r8292, r8293, r8294, r8295, r8296, r8297, r8298, r8299, r8300, r8301, r8302;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init(r8249);
        mpfr_init(r8250);
        mpfr_init(r8251);
        mpfr_init_set_str(r8252, "2.0", 10, MPFR_RNDN);
        mpfr_init(r8253);
        mpfr_init_set_str(r8254, "-4.88697970712414e+162", 10, MPFR_RNDN);
        mpfr_init(r8255);
        mpfr_init(r8256);
        mpfr_init(r8257);
        mpfr_init(r8258);
        mpfr_init_set_str(r8259, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8260);
        mpfr_init(r8261);
        mpfr_init(r8262);
        mpfr_init(r8263);
        mpfr_init_set_str(r8264, "-9.729606377274611e-221", 10, MPFR_RNDN);
        mpfr_init(r8265);
        mpfr_init(r8266);
        mpfr_init(r8267);
        mpfr_init(r8268);
        mpfr_init(r8269);
        mpfr_init(r8270);
        mpfr_init(r8271);
        mpfr_init(r8272);
        mpfr_init(r8273);
        mpfr_init(r8274);
        mpfr_init_set_str(r8275, "2.165432228559356e+158", 10, MPFR_RNDN);
        mpfr_init(r8276);
        mpfr_init(r8277);
        mpfr_init(r8278);
        mpfr_init(r8279);
        mpfr_init(r8280);
        mpfr_init_set_str(r8281, "1.0142598911658721e+206", 10, MPFR_RNDN);
        mpfr_init(r8282);
        mpfr_init(r8283);
        mpfr_init(r8284);
        mpfr_init_set_str(r8285, "7.440909926970905e+245", 10, MPFR_RNDN);
        mpfr_init(r8286);
        mpfr_init_set_str(r8287, "-2", 10, MPFR_RNDN);
        mpfr_init(r8288);
        mpfr_init(r8289);
        mpfr_init(r8290);
        mpfr_init(r8291);
        mpfr_init_set_str(r8292, "2.0104881096821083e+282", 10, MPFR_RNDN);
        mpfr_init(r8293);
        mpfr_init_set_str(r8294, "5.425637498985025e+303", 10, MPFR_RNDN);
        mpfr_init(r8295);
        mpfr_init(r8296);
        mpfr_init(r8297);
        mpfr_init(r8298);
        mpfr_init(r8299);
        mpfr_init(r8300);
        mpfr_init(r8301);
        mpfr_init(r8302);
}

double f_dm(double re, double im) {
        mpfr_set_d(r8249, im, MPFR_RNDN);
        mpfr_set_d(r8250, re, MPFR_RNDN);
        mpfr_sub(r8251, r8249, r8250, MPFR_RNDN);
        ;
        mpfr_mul(r8253, r8251, r8252, MPFR_RNDN);
        ;
        mpfr_set_si(r8255, mpfr_cmp(r8253, r8254) <= 0, MPFR_RNDN);
        mpfr_mul(r8256, r8252, r8249, MPFR_RNDN);
        mpfr_mul(r8257, r8249, r8256, MPFR_RNDN);
        mpfr_sqrt(r8258, r8257, MPFR_RNDN);
        ;
        mpfr_mul(r8260, r8258, r8259, MPFR_RNDN);
        mpfr_add(r8261, r8250, r8250, MPFR_RNDN);
        mpfr_sqrt(r8262, r8261, MPFR_RNDN);
        mpfr_div(r8263, r8260, r8262, MPFR_RNDN);
        ;
        mpfr_set_si(r8265, mpfr_cmp(r8253, r8264) <= 0, MPFR_RNDN);
        mpfr_mul(r8266, r8250, r8250, MPFR_RNDN);
        mpfr_mul(r8267, r8249, r8249, MPFR_RNDN);
        mpfr_add(r8268, r8266, r8267, MPFR_RNDN);
        mpfr_sqrt(r8269, r8268, MPFR_RNDN);
        mpfr_add(r8270, r8269, r8250, MPFR_RNDN);
        mpfr_sqrt(r8271, r8270, MPFR_RNDN);
        mpfr_sqrt(r8272, r8271, MPFR_RNDN);
        mpfr_mul(r8273, r8272, r8272, MPFR_RNDN);
        mpfr_div(r8274, r8260, r8273, MPFR_RNDN);
        ;
        mpfr_set_si(r8276, mpfr_cmp(r8253, r8275) <= 0, MPFR_RNDN);
        mpfr_sub(r8277, r8269, r8250, MPFR_RNDN);
        mpfr_mul(r8278, r8252, r8277, MPFR_RNDN);
        mpfr_sqrt(r8279, r8278, MPFR_RNDN);
        mpfr_mul(r8280, r8259, r8279, MPFR_RNDN);
        ;
        mpfr_set_si(r8282, mpfr_cmp(r8253, r8281) <= 0, MPFR_RNDN);
        mpfr_sqrt(r8283, r8253, MPFR_RNDN);
        mpfr_mul(r8284, r8283, r8259, MPFR_RNDN);
        ;
        mpfr_set_si(r8286, mpfr_cmp(r8253, r8285) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8288, r8287, r8250, MPFR_RNDN);
        mpfr_mul(r8289, r8252, r8288, MPFR_RNDN);
        mpfr_sqrt(r8290, r8289, MPFR_RNDN);
        mpfr_mul(r8291, r8259, r8290, MPFR_RNDN);
        ;
        mpfr_set_si(r8293, mpfr_cmp(r8253, r8292) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8295, mpfr_cmp(r8253, r8294) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r8295, MPFR_RNDN)) { mpfr_set(r8296, r8291, MPFR_RNDN); } else { mpfr_set(r8296, r8284, MPFR_RNDN); };
        if (mpfr_get_si(r8293, MPFR_RNDN)) { mpfr_set(r8297, r8284, MPFR_RNDN); } else { mpfr_set(r8297, r8296, MPFR_RNDN); };
        if (mpfr_get_si(r8286, MPFR_RNDN)) { mpfr_set(r8298, r8291, MPFR_RNDN); } else { mpfr_set(r8298, r8297, MPFR_RNDN); };
        if (mpfr_get_si(r8282, MPFR_RNDN)) { mpfr_set(r8299, r8284, MPFR_RNDN); } else { mpfr_set(r8299, r8298, MPFR_RNDN); };
        if (mpfr_get_si(r8276, MPFR_RNDN)) { mpfr_set(r8300, r8280, MPFR_RNDN); } else { mpfr_set(r8300, r8299, MPFR_RNDN); };
        if (mpfr_get_si(r8265, MPFR_RNDN)) { mpfr_set(r8301, r8274, MPFR_RNDN); } else { mpfr_set(r8301, r8300, MPFR_RNDN); };
        if (mpfr_get_si(r8255, MPFR_RNDN)) { mpfr_set(r8302, r8263, MPFR_RNDN); } else { mpfr_set(r8302, r8301, MPFR_RNDN); };
        return mpfr_get_d(r8302, MPFR_RNDN);
}

