#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 r20427 = x_re;
        float r20428 = r20427 * r20427;
        float r20429 = x_im;
        float r20430 = r20429 * r20429;
        float r20431 = r20428 + r20430;
        float r20432 = sqrt(r20431);
        float r20433 = log(r20432);
        float r20434 = y_re;
        float r20435 = r20433 * r20434;
        float r20436 = atan2(r20429, r20427);
        float r20437 = y_im;
        float r20438 = r20436 * r20437;
        float r20439 = r20435 - r20438;
        float r20440 = exp(r20439);
        float r20441 = r20433 * r20437;
        float r20442 = r20436 * r20434;
        float r20443 = r20441 + r20442;
        float r20444 = cos(r20443);
        float r20445 = r20440 * r20444;
        return r20445;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r20446 = x_re;
        double r20447 = r20446 * r20446;
        double r20448 = x_im;
        double r20449 = r20448 * r20448;
        double r20450 = r20447 + r20449;
        double r20451 = sqrt(r20450);
        double r20452 = log(r20451);
        double r20453 = y_re;
        double r20454 = r20452 * r20453;
        double r20455 = atan2(r20448, r20446);
        double r20456 = y_im;
        double r20457 = r20455 * r20456;
        double r20458 = r20454 - r20457;
        double r20459 = exp(r20458);
        double r20460 = r20452 * r20456;
        double r20461 = r20455 * r20453;
        double r20462 = r20460 + r20461;
        double r20463 = cos(r20462);
        double r20464 = r20459 * r20463;
        return r20464;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r20465 = x_im;
        float r20466 = -2.3080380612198043e-268;
        bool r20467 = r20465 <= r20466;
        float r20468 = -r20465;
        float r20469 = y_re;
        float r20470 = pow(r20468, r20469);
        float r20471 = y_im;
        float r20472 = exp(r20471);
        float r20473 = x_re;
        float r20474 = atan2(r20465, r20473);
        float r20475 = pow(r20472, r20474);
        float r20476 = r20470 / r20475;
        float r20477 = 1.2480980615868505e-231;
        bool r20478 = r20465 <= r20477;
        float r20479 = r20473 * r20473;
        float r20480 = r20465 * r20465;
        float r20481 = r20479 + r20480;
        float r20482 = sqrt(r20481);
        float r20483 = pow(r20482, r20469);
        float r20484 = r20474 * r20471;
        float r20485 = 1;
        float r20486 = r20484 + r20485;
        float r20487 = r20483 / r20486;
        float r20488 = 5.337070373094781e-149;
        bool r20489 = r20465 <= r20488;
        float r20490 = pow(r20465, r20469);
        float r20491 = r20490 / r20475;
        float r20492 = 7.1366765783691e-108;
        bool r20493 = r20465 <= r20492;
        float r20494 = 3.2462414837919335e-68;
        bool r20495 = r20465 <= r20494;
        float r20496 = log(r20482);
        float r20497 = r20496 * r20469;
        float r20498 = r20497 - r20484;
        float r20499 = exp(r20498);
        float r20500 = r20496 * r20471;
        float r20501 = r20474 * r20469;
        float r20502 = r20500 + r20501;
        float r20503 = cos(r20502);
        float r20504 = cbrt(r20503);
        float r20505 = r20504 * r20504;
        float r20506 = r20505 * r20504;
        float r20507 = r20499 * r20506;
        float r20508 = r20495 ? r20507 : r20491;
        float r20509 = r20493 ? r20487 : r20508;
        float r20510 = r20489 ? r20491 : r20509;
        float r20511 = r20478 ? r20487 : r20510;
        float r20512 = r20467 ? r20476 : r20511;
        return r20512;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r20513 = x_im;
        double r20514 = -2.3080380612198043e-268;
        bool r20515 = r20513 <= r20514;
        double r20516 = -r20513;
        double r20517 = y_re;
        double r20518 = pow(r20516, r20517);
        double r20519 = y_im;
        double r20520 = exp(r20519);
        double r20521 = x_re;
        double r20522 = atan2(r20513, r20521);
        double r20523 = pow(r20520, r20522);
        double r20524 = r20518 / r20523;
        double r20525 = 1.2480980615868505e-231;
        bool r20526 = r20513 <= r20525;
        double r20527 = r20521 * r20521;
        double r20528 = r20513 * r20513;
        double r20529 = r20527 + r20528;
        double r20530 = sqrt(r20529);
        double r20531 = pow(r20530, r20517);
        double r20532 = r20522 * r20519;
        double r20533 = 1;
        double r20534 = r20532 + r20533;
        double r20535 = r20531 / r20534;
        double r20536 = 5.337070373094781e-149;
        bool r20537 = r20513 <= r20536;
        double r20538 = pow(r20513, r20517);
        double r20539 = r20538 / r20523;
        double r20540 = 7.1366765783691e-108;
        bool r20541 = r20513 <= r20540;
        double r20542 = 3.2462414837919335e-68;
        bool r20543 = r20513 <= r20542;
        double r20544 = log(r20530);
        double r20545 = r20544 * r20517;
        double r20546 = r20545 - r20532;
        double r20547 = exp(r20546);
        double r20548 = r20544 * r20519;
        double r20549 = r20522 * r20517;
        double r20550 = r20548 + r20549;
        double r20551 = cos(r20550);
        double r20552 = cbrt(r20551);
        double r20553 = r20552 * r20552;
        double r20554 = r20553 * r20552;
        double r20555 = r20547 * r20554;
        double r20556 = r20543 ? r20555 : r20539;
        double r20557 = r20541 ? r20535 : r20556;
        double r20558 = r20537 ? r20539 : r20557;
        double r20559 = r20526 ? r20535 : r20558;
        double r20560 = r20515 ? r20524 : r20559;
        return r20560;
}

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 r20561, r20562, r20563, r20564, r20565, r20566, r20567, r20568, r20569, r20570, r20571, r20572, r20573, r20574, r20575, r20576, r20577, r20578, r20579;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20561);
        mpfr_init(r20562);
        mpfr_init(r20563);
        mpfr_init(r20564);
        mpfr_init(r20565);
        mpfr_init(r20566);
        mpfr_init(r20567);
        mpfr_init(r20568);
        mpfr_init(r20569);
        mpfr_init(r20570);
        mpfr_init(r20571);
        mpfr_init(r20572);
        mpfr_init(r20573);
        mpfr_init(r20574);
        mpfr_init(r20575);
        mpfr_init(r20576);
        mpfr_init(r20577);
        mpfr_init(r20578);
        mpfr_init(r20579);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r20561, x_re, MPFR_RNDN);
        mpfr_mul(r20562, r20561, r20561, MPFR_RNDN);
        mpfr_set_d(r20563, x_im, MPFR_RNDN);
        mpfr_mul(r20564, r20563, r20563, MPFR_RNDN);
        mpfr_add(r20565, r20562, r20564, MPFR_RNDN);
        mpfr_sqrt(r20566, r20565, MPFR_RNDN);
        mpfr_log(r20567, r20566, MPFR_RNDN);
        mpfr_set_d(r20568, y_re, MPFR_RNDN);
        mpfr_mul(r20569, r20567, r20568, MPFR_RNDN);
        mpfr_atan2(r20570, r20563, r20561, MPFR_RNDN);
        mpfr_set_d(r20571, y_im, MPFR_RNDN);
        mpfr_mul(r20572, r20570, r20571, MPFR_RNDN);
        mpfr_sub(r20573, r20569, r20572, MPFR_RNDN);
        mpfr_exp(r20574, r20573, MPFR_RNDN);
        mpfr_mul(r20575, r20567, r20571, MPFR_RNDN);
        mpfr_mul(r20576, r20570, r20568, MPFR_RNDN);
        mpfr_add(r20577, r20575, r20576, MPFR_RNDN);
        mpfr_cos(r20578, r20577, MPFR_RNDN);
        mpfr_mul(r20579, r20574, r20578, MPFR_RNDN);
        return mpfr_get_d(r20579, MPFR_RNDN);
}

static mpfr_t r20580, r20581, r20582, r20583, r20584, r20585, r20586, r20587, r20588, r20589, r20590, r20591, r20592, r20593, r20594, r20595, r20596, r20597, r20598, r20599, r20600, r20601, r20602, r20603, r20604, r20605, r20606, r20607, r20608, r20609, r20610, r20611, r20612, r20613, r20614, r20615, r20616, r20617, r20618, r20619, r20620, r20621, r20622, r20623, r20624, r20625, r20626, r20627;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20580);
        mpfr_init_set_str(r20581, "-2.3080380612198043e-268", 10, MPFR_RNDN);
        mpfr_init(r20582);
        mpfr_init(r20583);
        mpfr_init(r20584);
        mpfr_init(r20585);
        mpfr_init(r20586);
        mpfr_init(r20587);
        mpfr_init(r20588);
        mpfr_init(r20589);
        mpfr_init(r20590);
        mpfr_init(r20591);
        mpfr_init_set_str(r20592, "1.2480980615868505e-231", 10, MPFR_RNDN);
        mpfr_init(r20593);
        mpfr_init(r20594);
        mpfr_init(r20595);
        mpfr_init(r20596);
        mpfr_init(r20597);
        mpfr_init(r20598);
        mpfr_init(r20599);
        mpfr_init_set_str(r20600, "1", 10, MPFR_RNDN);
        mpfr_init(r20601);
        mpfr_init(r20602);
        mpfr_init_set_str(r20603, "5.337070373094781e-149", 10, MPFR_RNDN);
        mpfr_init(r20604);
        mpfr_init(r20605);
        mpfr_init(r20606);
        mpfr_init_set_str(r20607, "7.1366765783691e-108", 10, MPFR_RNDN);
        mpfr_init(r20608);
        mpfr_init_set_str(r20609, "3.2462414837919335e-68", 10, MPFR_RNDN);
        mpfr_init(r20610);
        mpfr_init(r20611);
        mpfr_init(r20612);
        mpfr_init(r20613);
        mpfr_init(r20614);
        mpfr_init(r20615);
        mpfr_init(r20616);
        mpfr_init(r20617);
        mpfr_init(r20618);
        mpfr_init(r20619);
        mpfr_init(r20620);
        mpfr_init(r20621);
        mpfr_init(r20622);
        mpfr_init(r20623);
        mpfr_init(r20624);
        mpfr_init(r20625);
        mpfr_init(r20626);
        mpfr_init(r20627);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r20580, x_im, MPFR_RNDN);
        ;
        mpfr_set_si(r20582, mpfr_cmp(r20580, r20581) <= 0, MPFR_RNDN);
        mpfr_neg(r20583, r20580, MPFR_RNDN);
        mpfr_set_d(r20584, y_re, MPFR_RNDN);
        mpfr_pow(r20585, r20583, r20584, MPFR_RNDN);
        mpfr_set_d(r20586, y_im, MPFR_RNDN);
        mpfr_exp(r20587, r20586, MPFR_RNDN);
        mpfr_set_d(r20588, x_re, MPFR_RNDN);
        mpfr_atan2(r20589, r20580, r20588, MPFR_RNDN);
        mpfr_pow(r20590, r20587, r20589, MPFR_RNDN);
        mpfr_div(r20591, r20585, r20590, MPFR_RNDN);
        ;
        mpfr_set_si(r20593, mpfr_cmp(r20580, r20592) <= 0, MPFR_RNDN);
        mpfr_mul(r20594, r20588, r20588, MPFR_RNDN);
        mpfr_mul(r20595, r20580, r20580, MPFR_RNDN);
        mpfr_add(r20596, r20594, r20595, MPFR_RNDN);
        mpfr_sqrt(r20597, r20596, MPFR_RNDN);
        mpfr_pow(r20598, r20597, r20584, MPFR_RNDN);
        mpfr_mul(r20599, r20589, r20586, MPFR_RNDN);
        ;
        mpfr_add(r20601, r20599, r20600, MPFR_RNDN);
        mpfr_div(r20602, r20598, r20601, MPFR_RNDN);
        ;
        mpfr_set_si(r20604, mpfr_cmp(r20580, r20603) <= 0, MPFR_RNDN);
        mpfr_pow(r20605, r20580, r20584, MPFR_RNDN);
        mpfr_div(r20606, r20605, r20590, MPFR_RNDN);
        ;
        mpfr_set_si(r20608, mpfr_cmp(r20580, r20607) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20610, mpfr_cmp(r20580, r20609) <= 0, MPFR_RNDN);
        mpfr_log(r20611, r20597, MPFR_RNDN);
        mpfr_mul(r20612, r20611, r20584, MPFR_RNDN);
        mpfr_sub(r20613, r20612, r20599, MPFR_RNDN);
        mpfr_exp(r20614, r20613, MPFR_RNDN);
        mpfr_mul(r20615, r20611, r20586, MPFR_RNDN);
        mpfr_mul(r20616, r20589, r20584, MPFR_RNDN);
        mpfr_add(r20617, r20615, r20616, MPFR_RNDN);
        mpfr_cos(r20618, r20617, MPFR_RNDN);
        mpfr_cbrt(r20619, r20618, MPFR_RNDN);
        mpfr_mul(r20620, r20619, r20619, MPFR_RNDN);
        mpfr_mul(r20621, r20620, r20619, MPFR_RNDN);
        mpfr_mul(r20622, r20614, r20621, MPFR_RNDN);
        if (mpfr_get_si(r20610, MPFR_RNDN)) { mpfr_set(r20623, r20622, MPFR_RNDN); } else { mpfr_set(r20623, r20606, MPFR_RNDN); };
        if (mpfr_get_si(r20608, MPFR_RNDN)) { mpfr_set(r20624, r20602, MPFR_RNDN); } else { mpfr_set(r20624, r20623, MPFR_RNDN); };
        if (mpfr_get_si(r20604, MPFR_RNDN)) { mpfr_set(r20625, r20606, MPFR_RNDN); } else { mpfr_set(r20625, r20624, MPFR_RNDN); };
        if (mpfr_get_si(r20593, MPFR_RNDN)) { mpfr_set(r20626, r20602, MPFR_RNDN); } else { mpfr_set(r20626, r20625, MPFR_RNDN); };
        if (mpfr_get_si(r20582, MPFR_RNDN)) { mpfr_set(r20627, r20591, MPFR_RNDN); } else { mpfr_set(r20627, r20626, MPFR_RNDN); };
        return mpfr_get_d(r20627, MPFR_RNDN);
}

static mpfr_t r20628, r20629, r20630, r20631, r20632, r20633, r20634, r20635, r20636, r20637, r20638, r20639, r20640, r20641, r20642, r20643, r20644, r20645, r20646, r20647, r20648, r20649, r20650, r20651, r20652, r20653, r20654, r20655, r20656, r20657, r20658, r20659, r20660, r20661, r20662, r20663, r20664, r20665, r20666, r20667, r20668, r20669, r20670, r20671, r20672, r20673, r20674, r20675;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20628);
        mpfr_init_set_str(r20629, "-2.3080380612198043e-268", 10, MPFR_RNDN);
        mpfr_init(r20630);
        mpfr_init(r20631);
        mpfr_init(r20632);
        mpfr_init(r20633);
        mpfr_init(r20634);
        mpfr_init(r20635);
        mpfr_init(r20636);
        mpfr_init(r20637);
        mpfr_init(r20638);
        mpfr_init(r20639);
        mpfr_init_set_str(r20640, "1.2480980615868505e-231", 10, MPFR_RNDN);
        mpfr_init(r20641);
        mpfr_init(r20642);
        mpfr_init(r20643);
        mpfr_init(r20644);
        mpfr_init(r20645);
        mpfr_init(r20646);
        mpfr_init(r20647);
        mpfr_init_set_str(r20648, "1", 10, MPFR_RNDN);
        mpfr_init(r20649);
        mpfr_init(r20650);
        mpfr_init_set_str(r20651, "5.337070373094781e-149", 10, MPFR_RNDN);
        mpfr_init(r20652);
        mpfr_init(r20653);
        mpfr_init(r20654);
        mpfr_init_set_str(r20655, "7.1366765783691e-108", 10, MPFR_RNDN);
        mpfr_init(r20656);
        mpfr_init_set_str(r20657, "3.2462414837919335e-68", 10, MPFR_RNDN);
        mpfr_init(r20658);
        mpfr_init(r20659);
        mpfr_init(r20660);
        mpfr_init(r20661);
        mpfr_init(r20662);
        mpfr_init(r20663);
        mpfr_init(r20664);
        mpfr_init(r20665);
        mpfr_init(r20666);
        mpfr_init(r20667);
        mpfr_init(r20668);
        mpfr_init(r20669);
        mpfr_init(r20670);
        mpfr_init(r20671);
        mpfr_init(r20672);
        mpfr_init(r20673);
        mpfr_init(r20674);
        mpfr_init(r20675);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r20628, x_im, MPFR_RNDN);
        ;
        mpfr_set_si(r20630, mpfr_cmp(r20628, r20629) <= 0, MPFR_RNDN);
        mpfr_neg(r20631, r20628, MPFR_RNDN);
        mpfr_set_d(r20632, y_re, MPFR_RNDN);
        mpfr_pow(r20633, r20631, r20632, MPFR_RNDN);
        mpfr_set_d(r20634, y_im, MPFR_RNDN);
        mpfr_exp(r20635, r20634, MPFR_RNDN);
        mpfr_set_d(r20636, x_re, MPFR_RNDN);
        mpfr_atan2(r20637, r20628, r20636, MPFR_RNDN);
        mpfr_pow(r20638, r20635, r20637, MPFR_RNDN);
        mpfr_div(r20639, r20633, r20638, MPFR_RNDN);
        ;
        mpfr_set_si(r20641, mpfr_cmp(r20628, r20640) <= 0, MPFR_RNDN);
        mpfr_mul(r20642, r20636, r20636, MPFR_RNDN);
        mpfr_mul(r20643, r20628, r20628, MPFR_RNDN);
        mpfr_add(r20644, r20642, r20643, MPFR_RNDN);
        mpfr_sqrt(r20645, r20644, MPFR_RNDN);
        mpfr_pow(r20646, r20645, r20632, MPFR_RNDN);
        mpfr_mul(r20647, r20637, r20634, MPFR_RNDN);
        ;
        mpfr_add(r20649, r20647, r20648, MPFR_RNDN);
        mpfr_div(r20650, r20646, r20649, MPFR_RNDN);
        ;
        mpfr_set_si(r20652, mpfr_cmp(r20628, r20651) <= 0, MPFR_RNDN);
        mpfr_pow(r20653, r20628, r20632, MPFR_RNDN);
        mpfr_div(r20654, r20653, r20638, MPFR_RNDN);
        ;
        mpfr_set_si(r20656, mpfr_cmp(r20628, r20655) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20658, mpfr_cmp(r20628, r20657) <= 0, MPFR_RNDN);
        mpfr_log(r20659, r20645, MPFR_RNDN);
        mpfr_mul(r20660, r20659, r20632, MPFR_RNDN);
        mpfr_sub(r20661, r20660, r20647, MPFR_RNDN);
        mpfr_exp(r20662, r20661, MPFR_RNDN);
        mpfr_mul(r20663, r20659, r20634, MPFR_RNDN);
        mpfr_mul(r20664, r20637, r20632, MPFR_RNDN);
        mpfr_add(r20665, r20663, r20664, MPFR_RNDN);
        mpfr_cos(r20666, r20665, MPFR_RNDN);
        mpfr_cbrt(r20667, r20666, MPFR_RNDN);
        mpfr_mul(r20668, r20667, r20667, MPFR_RNDN);
        mpfr_mul(r20669, r20668, r20667, MPFR_RNDN);
        mpfr_mul(r20670, r20662, r20669, MPFR_RNDN);
        if (mpfr_get_si(r20658, MPFR_RNDN)) { mpfr_set(r20671, r20670, MPFR_RNDN); } else { mpfr_set(r20671, r20654, MPFR_RNDN); };
        if (mpfr_get_si(r20656, MPFR_RNDN)) { mpfr_set(r20672, r20650, MPFR_RNDN); } else { mpfr_set(r20672, r20671, MPFR_RNDN); };
        if (mpfr_get_si(r20652, MPFR_RNDN)) { mpfr_set(r20673, r20654, MPFR_RNDN); } else { mpfr_set(r20673, r20672, MPFR_RNDN); };
        if (mpfr_get_si(r20641, MPFR_RNDN)) { mpfr_set(r20674, r20650, MPFR_RNDN); } else { mpfr_set(r20674, r20673, MPFR_RNDN); };
        if (mpfr_get_si(r20630, MPFR_RNDN)) { mpfr_set(r20675, r20639, MPFR_RNDN); } else { mpfr_set(r20675, r20674, MPFR_RNDN); };
        return mpfr_get_d(r20675, MPFR_RNDN);
}

