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

char *name = "powComplex, real part";

double f_if(float x_re, float x_im, float y_re, float y_im) {
        float r21199 = x_re;
        float r21200 = r21199 * r21199;
        float r21201 = x_im;
        float r21202 = r21201 * r21201;
        float r21203 = r21200 + r21202;
        float r21204 = sqrt(r21203);
        float r21205 = log(r21204);
        float r21206 = y_re;
        float r21207 = r21205 * r21206;
        float r21208 = atan2(r21201, r21199);
        float r21209 = y_im;
        float r21210 = r21208 * r21209;
        float r21211 = r21207 - r21210;
        float r21212 = exp(r21211);
        float r21213 = r21205 * r21209;
        float r21214 = r21208 * r21206;
        float r21215 = r21213 + r21214;
        float r21216 = cos(r21215);
        float r21217 = r21212 * r21216;
        return r21217;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r21218 = x_re;
        double r21219 = r21218 * r21218;
        double r21220 = x_im;
        double r21221 = r21220 * r21220;
        double r21222 = r21219 + r21221;
        double r21223 = sqrt(r21222);
        double r21224 = log(r21223);
        double r21225 = y_re;
        double r21226 = r21224 * r21225;
        double r21227 = atan2(r21220, r21218);
        double r21228 = y_im;
        double r21229 = r21227 * r21228;
        double r21230 = r21226 - r21229;
        double r21231 = exp(r21230);
        double r21232 = r21224 * r21228;
        double r21233 = r21227 * r21225;
        double r21234 = r21232 + r21233;
        double r21235 = cos(r21234);
        double r21236 = r21231 * r21235;
        return r21236;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r21237 = x_im;
        float r21238 = -7.255120151203395e-186;
        bool r21239 = r21237 <= r21238;
        float r21240 = -r21237;
        float r21241 = y_re;
        float r21242 = pow(r21240, r21241);
        float r21243 = y_im;
        float r21244 = exp(r21243);
        float r21245 = x_re;
        float r21246 = atan2(r21237, r21245);
        float r21247 = pow(r21244, r21246);
        float r21248 = cbrt(r21247);
        float r21249 = r21248 * r21248;
        float r21250 = cbrt(r21248);
        float r21251 = r21250 * r21250;
        float r21252 = r21251 * r21250;
        float r21253 = r21249 * r21252;
        float r21254 = r21242 / r21253;
        float r21255 = 6.111896825040648e-302;
        bool r21256 = r21237 <= r21255;
        float r21257 = pow(r21245, r21241);
        float r21258 = r21257 / r21247;
        float r21259 = 9.528874492210934e-206;
        bool r21260 = r21237 <= r21259;
        float r21261 = pow(r21237, r21241);
        float r21262 = r21261 / r21247;
        float r21263 = 3.301695894476773e-21;
        bool r21264 = r21237 <= r21263;
        float r21265 = r21245 * r21245;
        float r21266 = r21237 * r21237;
        float r21267 = r21265 + r21266;
        float r21268 = sqrt(r21267);
        float r21269 = log(r21268);
        float r21270 = r21269 * r21241;
        float r21271 = r21246 * r21243;
        float r21272 = r21270 - r21271;
        float r21273 = exp(r21272);
        float r21274 = log(r21237);
        float r21275 = r21274 * r21243;
        float r21276 = r21246 * r21241;
        float r21277 = r21275 + r21276;
        float r21278 = cos(r21277);
        float r21279 = r21273 * r21278;
        float r21280 = r21264 ? r21279 : r21262;
        float r21281 = r21260 ? r21262 : r21280;
        float r21282 = r21256 ? r21258 : r21281;
        float r21283 = r21239 ? r21254 : r21282;
        return r21283;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r21284 = x_im;
        double r21285 = -7.255120151203395e-186;
        bool r21286 = r21284 <= r21285;
        double r21287 = -r21284;
        double r21288 = y_re;
        double r21289 = pow(r21287, r21288);
        double r21290 = y_im;
        double r21291 = exp(r21290);
        double r21292 = x_re;
        double r21293 = atan2(r21284, r21292);
        double r21294 = pow(r21291, r21293);
        double r21295 = cbrt(r21294);
        double r21296 = r21295 * r21295;
        double r21297 = cbrt(r21295);
        double r21298 = r21297 * r21297;
        double r21299 = r21298 * r21297;
        double r21300 = r21296 * r21299;
        double r21301 = r21289 / r21300;
        double r21302 = 6.111896825040648e-302;
        bool r21303 = r21284 <= r21302;
        double r21304 = pow(r21292, r21288);
        double r21305 = r21304 / r21294;
        double r21306 = 9.528874492210934e-206;
        bool r21307 = r21284 <= r21306;
        double r21308 = pow(r21284, r21288);
        double r21309 = r21308 / r21294;
        double r21310 = 3.301695894476773e-21;
        bool r21311 = r21284 <= r21310;
        double r21312 = r21292 * r21292;
        double r21313 = r21284 * r21284;
        double r21314 = r21312 + r21313;
        double r21315 = sqrt(r21314);
        double r21316 = log(r21315);
        double r21317 = r21316 * r21288;
        double r21318 = r21293 * r21290;
        double r21319 = r21317 - r21318;
        double r21320 = exp(r21319);
        double r21321 = log(r21284);
        double r21322 = r21321 * r21290;
        double r21323 = r21293 * r21288;
        double r21324 = r21322 + r21323;
        double r21325 = cos(r21324);
        double r21326 = r21320 * r21325;
        double r21327 = r21311 ? r21326 : r21309;
        double r21328 = r21307 ? r21309 : r21327;
        double r21329 = r21303 ? r21305 : r21328;
        double r21330 = r21286 ? r21301 : r21329;
        return r21330;
}

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 r21331, r21332, r21333, r21334, r21335, r21336, r21337, r21338, r21339, r21340, r21341, r21342, r21343, r21344, r21345, r21346, r21347, r21348, r21349;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21331);
        mpfr_init(r21332);
        mpfr_init(r21333);
        mpfr_init(r21334);
        mpfr_init(r21335);
        mpfr_init(r21336);
        mpfr_init(r21337);
        mpfr_init(r21338);
        mpfr_init(r21339);
        mpfr_init(r21340);
        mpfr_init(r21341);
        mpfr_init(r21342);
        mpfr_init(r21343);
        mpfr_init(r21344);
        mpfr_init(r21345);
        mpfr_init(r21346);
        mpfr_init(r21347);
        mpfr_init(r21348);
        mpfr_init(r21349);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r21331, x_re, MPFR_RNDN);
        mpfr_mul(r21332, r21331, r21331, MPFR_RNDN);
        mpfr_set_d(r21333, x_im, MPFR_RNDN);
        mpfr_mul(r21334, r21333, r21333, MPFR_RNDN);
        mpfr_add(r21335, r21332, r21334, MPFR_RNDN);
        mpfr_sqrt(r21336, r21335, MPFR_RNDN);
        mpfr_log(r21337, r21336, MPFR_RNDN);
        mpfr_set_d(r21338, y_re, MPFR_RNDN);
        mpfr_mul(r21339, r21337, r21338, MPFR_RNDN);
        mpfr_atan2(r21340, r21333, r21331, MPFR_RNDN);
        mpfr_set_d(r21341, y_im, MPFR_RNDN);
        mpfr_mul(r21342, r21340, r21341, MPFR_RNDN);
        mpfr_sub(r21343, r21339, r21342, MPFR_RNDN);
        mpfr_exp(r21344, r21343, MPFR_RNDN);
        mpfr_mul(r21345, r21337, r21341, MPFR_RNDN);
        mpfr_mul(r21346, r21340, r21338, MPFR_RNDN);
        mpfr_add(r21347, r21345, r21346, MPFR_RNDN);
        mpfr_cos(r21348, r21347, MPFR_RNDN);
        mpfr_mul(r21349, r21344, r21348, MPFR_RNDN);
        return mpfr_get_d(r21349, MPFR_RNDN);
}

static mpfr_t r21350, r21351, r21352, r21353, r21354, r21355, r21356, r21357, r21358, r21359, r21360, r21361, r21362, r21363, r21364, r21365, r21366, r21367, r21368, r21369, r21370, r21371, r21372, r21373, r21374, r21375, r21376, r21377, r21378, r21379, r21380, r21381, r21382, r21383, r21384, r21385, r21386, r21387, r21388, r21389, r21390, r21391, r21392, r21393, r21394, r21395, r21396;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21350);
        mpfr_init_set_str(r21351, "-7.255120151203395e-186", 10, MPFR_RNDN);
        mpfr_init(r21352);
        mpfr_init(r21353);
        mpfr_init(r21354);
        mpfr_init(r21355);
        mpfr_init(r21356);
        mpfr_init(r21357);
        mpfr_init(r21358);
        mpfr_init(r21359);
        mpfr_init(r21360);
        mpfr_init(r21361);
        mpfr_init(r21362);
        mpfr_init(r21363);
        mpfr_init(r21364);
        mpfr_init(r21365);
        mpfr_init(r21366);
        mpfr_init(r21367);
        mpfr_init_set_str(r21368, "6.111896825040648e-302", 10, MPFR_RNDN);
        mpfr_init(r21369);
        mpfr_init(r21370);
        mpfr_init(r21371);
        mpfr_init_set_str(r21372, "9.528874492210934e-206", 10, MPFR_RNDN);
        mpfr_init(r21373);
        mpfr_init(r21374);
        mpfr_init(r21375);
        mpfr_init_set_str(r21376, "3.301695894476773e-21", 10, MPFR_RNDN);
        mpfr_init(r21377);
        mpfr_init(r21378);
        mpfr_init(r21379);
        mpfr_init(r21380);
        mpfr_init(r21381);
        mpfr_init(r21382);
        mpfr_init(r21383);
        mpfr_init(r21384);
        mpfr_init(r21385);
        mpfr_init(r21386);
        mpfr_init(r21387);
        mpfr_init(r21388);
        mpfr_init(r21389);
        mpfr_init(r21390);
        mpfr_init(r21391);
        mpfr_init(r21392);
        mpfr_init(r21393);
        mpfr_init(r21394);
        mpfr_init(r21395);
        mpfr_init(r21396);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r21350, x_im, MPFR_RNDN);
        ;
        mpfr_set_si(r21352, mpfr_cmp(r21350, r21351) <= 0, MPFR_RNDN);
        mpfr_neg(r21353, r21350, MPFR_RNDN);
        mpfr_set_d(r21354, y_re, MPFR_RNDN);
        mpfr_pow(r21355, r21353, r21354, MPFR_RNDN);
        mpfr_set_d(r21356, y_im, MPFR_RNDN);
        mpfr_exp(r21357, r21356, MPFR_RNDN);
        mpfr_set_d(r21358, x_re, MPFR_RNDN);
        mpfr_atan2(r21359, r21350, r21358, MPFR_RNDN);
        mpfr_pow(r21360, r21357, r21359, MPFR_RNDN);
        mpfr_cbrt(r21361, r21360, MPFR_RNDN);
        mpfr_mul(r21362, r21361, r21361, MPFR_RNDN);
        mpfr_cbrt(r21363, r21361, MPFR_RNDN);
        mpfr_mul(r21364, r21363, r21363, MPFR_RNDN);
        mpfr_mul(r21365, r21364, r21363, MPFR_RNDN);
        mpfr_mul(r21366, r21362, r21365, MPFR_RNDN);
        mpfr_div(r21367, r21355, r21366, MPFR_RNDN);
        ;
        mpfr_set_si(r21369, mpfr_cmp(r21350, r21368) <= 0, MPFR_RNDN);
        mpfr_pow(r21370, r21358, r21354, MPFR_RNDN);
        mpfr_div(r21371, r21370, r21360, MPFR_RNDN);
        ;
        mpfr_set_si(r21373, mpfr_cmp(r21350, r21372) <= 0, MPFR_RNDN);
        mpfr_pow(r21374, r21350, r21354, MPFR_RNDN);
        mpfr_div(r21375, r21374, r21360, MPFR_RNDN);
        ;
        mpfr_set_si(r21377, mpfr_cmp(r21350, r21376) <= 0, MPFR_RNDN);
        mpfr_mul(r21378, r21358, r21358, MPFR_RNDN);
        mpfr_mul(r21379, r21350, r21350, MPFR_RNDN);
        mpfr_add(r21380, r21378, r21379, MPFR_RNDN);
        mpfr_sqrt(r21381, r21380, MPFR_RNDN);
        mpfr_log(r21382, r21381, MPFR_RNDN);
        mpfr_mul(r21383, r21382, r21354, MPFR_RNDN);
        mpfr_mul(r21384, r21359, r21356, MPFR_RNDN);
        mpfr_sub(r21385, r21383, r21384, MPFR_RNDN);
        mpfr_exp(r21386, r21385, MPFR_RNDN);
        mpfr_log(r21387, r21350, MPFR_RNDN);
        mpfr_mul(r21388, r21387, r21356, MPFR_RNDN);
        mpfr_mul(r21389, r21359, r21354, MPFR_RNDN);
        mpfr_add(r21390, r21388, r21389, MPFR_RNDN);
        mpfr_cos(r21391, r21390, MPFR_RNDN);
        mpfr_mul(r21392, r21386, r21391, MPFR_RNDN);
        if (mpfr_get_si(r21377, MPFR_RNDN)) { mpfr_set(r21393, r21392, MPFR_RNDN); } else { mpfr_set(r21393, r21375, MPFR_RNDN); };
        if (mpfr_get_si(r21373, MPFR_RNDN)) { mpfr_set(r21394, r21375, MPFR_RNDN); } else { mpfr_set(r21394, r21393, MPFR_RNDN); };
        if (mpfr_get_si(r21369, MPFR_RNDN)) { mpfr_set(r21395, r21371, MPFR_RNDN); } else { mpfr_set(r21395, r21394, MPFR_RNDN); };
        if (mpfr_get_si(r21352, MPFR_RNDN)) { mpfr_set(r21396, r21367, MPFR_RNDN); } else { mpfr_set(r21396, r21395, MPFR_RNDN); };
        return mpfr_get_d(r21396, MPFR_RNDN);
}

static mpfr_t r21397, r21398, r21399, r21400, r21401, r21402, r21403, r21404, r21405, r21406, r21407, r21408, r21409, r21410, r21411, r21412, r21413, r21414, r21415, r21416, r21417, r21418, r21419, r21420, r21421, r21422, r21423, r21424, r21425, r21426, r21427, r21428, r21429, r21430, r21431, r21432, r21433, r21434, r21435, r21436, r21437, r21438, r21439, r21440, r21441, r21442, r21443;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21397);
        mpfr_init_set_str(r21398, "-7.255120151203395e-186", 10, MPFR_RNDN);
        mpfr_init(r21399);
        mpfr_init(r21400);
        mpfr_init(r21401);
        mpfr_init(r21402);
        mpfr_init(r21403);
        mpfr_init(r21404);
        mpfr_init(r21405);
        mpfr_init(r21406);
        mpfr_init(r21407);
        mpfr_init(r21408);
        mpfr_init(r21409);
        mpfr_init(r21410);
        mpfr_init(r21411);
        mpfr_init(r21412);
        mpfr_init(r21413);
        mpfr_init(r21414);
        mpfr_init_set_str(r21415, "6.111896825040648e-302", 10, MPFR_RNDN);
        mpfr_init(r21416);
        mpfr_init(r21417);
        mpfr_init(r21418);
        mpfr_init_set_str(r21419, "9.528874492210934e-206", 10, MPFR_RNDN);
        mpfr_init(r21420);
        mpfr_init(r21421);
        mpfr_init(r21422);
        mpfr_init_set_str(r21423, "3.301695894476773e-21", 10, MPFR_RNDN);
        mpfr_init(r21424);
        mpfr_init(r21425);
        mpfr_init(r21426);
        mpfr_init(r21427);
        mpfr_init(r21428);
        mpfr_init(r21429);
        mpfr_init(r21430);
        mpfr_init(r21431);
        mpfr_init(r21432);
        mpfr_init(r21433);
        mpfr_init(r21434);
        mpfr_init(r21435);
        mpfr_init(r21436);
        mpfr_init(r21437);
        mpfr_init(r21438);
        mpfr_init(r21439);
        mpfr_init(r21440);
        mpfr_init(r21441);
        mpfr_init(r21442);
        mpfr_init(r21443);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r21397, x_im, MPFR_RNDN);
        ;
        mpfr_set_si(r21399, mpfr_cmp(r21397, r21398) <= 0, MPFR_RNDN);
        mpfr_neg(r21400, r21397, MPFR_RNDN);
        mpfr_set_d(r21401, y_re, MPFR_RNDN);
        mpfr_pow(r21402, r21400, r21401, MPFR_RNDN);
        mpfr_set_d(r21403, y_im, MPFR_RNDN);
        mpfr_exp(r21404, r21403, MPFR_RNDN);
        mpfr_set_d(r21405, x_re, MPFR_RNDN);
        mpfr_atan2(r21406, r21397, r21405, MPFR_RNDN);
        mpfr_pow(r21407, r21404, r21406, MPFR_RNDN);
        mpfr_cbrt(r21408, r21407, MPFR_RNDN);
        mpfr_mul(r21409, r21408, r21408, MPFR_RNDN);
        mpfr_cbrt(r21410, r21408, MPFR_RNDN);
        mpfr_mul(r21411, r21410, r21410, MPFR_RNDN);
        mpfr_mul(r21412, r21411, r21410, MPFR_RNDN);
        mpfr_mul(r21413, r21409, r21412, MPFR_RNDN);
        mpfr_div(r21414, r21402, r21413, MPFR_RNDN);
        ;
        mpfr_set_si(r21416, mpfr_cmp(r21397, r21415) <= 0, MPFR_RNDN);
        mpfr_pow(r21417, r21405, r21401, MPFR_RNDN);
        mpfr_div(r21418, r21417, r21407, MPFR_RNDN);
        ;
        mpfr_set_si(r21420, mpfr_cmp(r21397, r21419) <= 0, MPFR_RNDN);
        mpfr_pow(r21421, r21397, r21401, MPFR_RNDN);
        mpfr_div(r21422, r21421, r21407, MPFR_RNDN);
        ;
        mpfr_set_si(r21424, mpfr_cmp(r21397, r21423) <= 0, MPFR_RNDN);
        mpfr_mul(r21425, r21405, r21405, MPFR_RNDN);
        mpfr_mul(r21426, r21397, r21397, MPFR_RNDN);
        mpfr_add(r21427, r21425, r21426, MPFR_RNDN);
        mpfr_sqrt(r21428, r21427, MPFR_RNDN);
        mpfr_log(r21429, r21428, MPFR_RNDN);
        mpfr_mul(r21430, r21429, r21401, MPFR_RNDN);
        mpfr_mul(r21431, r21406, r21403, MPFR_RNDN);
        mpfr_sub(r21432, r21430, r21431, MPFR_RNDN);
        mpfr_exp(r21433, r21432, MPFR_RNDN);
        mpfr_log(r21434, r21397, MPFR_RNDN);
        mpfr_mul(r21435, r21434, r21403, MPFR_RNDN);
        mpfr_mul(r21436, r21406, r21401, MPFR_RNDN);
        mpfr_add(r21437, r21435, r21436, MPFR_RNDN);
        mpfr_cos(r21438, r21437, MPFR_RNDN);
        mpfr_mul(r21439, r21433, r21438, MPFR_RNDN);
        if (mpfr_get_si(r21424, MPFR_RNDN)) { mpfr_set(r21440, r21439, MPFR_RNDN); } else { mpfr_set(r21440, r21422, MPFR_RNDN); };
        if (mpfr_get_si(r21420, MPFR_RNDN)) { mpfr_set(r21441, r21422, MPFR_RNDN); } else { mpfr_set(r21441, r21440, MPFR_RNDN); };
        if (mpfr_get_si(r21416, MPFR_RNDN)) { mpfr_set(r21442, r21418, MPFR_RNDN); } else { mpfr_set(r21442, r21441, MPFR_RNDN); };
        if (mpfr_get_si(r21399, MPFR_RNDN)) { mpfr_set(r21443, r21414, MPFR_RNDN); } else { mpfr_set(r21443, r21442, MPFR_RNDN); };
        return mpfr_get_d(r21443, MPFR_RNDN);
}

