#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 r20475 = x_re;
        float r20476 = r20475 * r20475;
        float r20477 = x_im;
        float r20478 = r20477 * r20477;
        float r20479 = r20476 + r20478;
        float r20480 = sqrt(r20479);
        float r20481 = log(r20480);
        float r20482 = y_re;
        float r20483 = r20481 * r20482;
        float r20484 = atan2(r20477, r20475);
        float r20485 = y_im;
        float r20486 = r20484 * r20485;
        float r20487 = r20483 - r20486;
        float r20488 = exp(r20487);
        float r20489 = r20481 * r20485;
        float r20490 = r20484 * r20482;
        float r20491 = r20489 + r20490;
        float r20492 = cos(r20491);
        float r20493 = r20488 * r20492;
        return r20493;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r20494 = x_re;
        double r20495 = r20494 * r20494;
        double r20496 = x_im;
        double r20497 = r20496 * r20496;
        double r20498 = r20495 + r20497;
        double r20499 = sqrt(r20498);
        double r20500 = log(r20499);
        double r20501 = y_re;
        double r20502 = r20500 * r20501;
        double r20503 = atan2(r20496, r20494);
        double r20504 = y_im;
        double r20505 = r20503 * r20504;
        double r20506 = r20502 - r20505;
        double r20507 = exp(r20506);
        double r20508 = r20500 * r20504;
        double r20509 = r20503 * r20501;
        double r20510 = r20508 + r20509;
        double r20511 = cos(r20510);
        double r20512 = r20507 * r20511;
        return r20512;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r20513 = x_im;
        float r20514 = -1.6027616921874595e-224;
        bool r20515 = r20513 <= r20514;
        float r20516 = -1;
        float r20517 = r20516 / r20513;
        float r20518 = y_re;
        float r20519 = -r20518;
        float r20520 = pow(r20517, r20519);
        float r20521 = y_im;
        float r20522 = x_re;
        float r20523 = atan2(r20513, r20522);
        float r20524 = r20521 * r20523;
        float r20525 = exp(r20524);
        float r20526 = r20520 / r20525;
        float r20527 = 2.3121315604054924e-249;
        bool r20528 = r20513 <= r20527;
        float r20529 = r20513 * r20513;
        float r20530 = r20522 * r20522;
        float r20531 = r20529 + r20530;
        float r20532 = sqrt(r20531);
        float r20533 = log(r20532);
        float r20534 = r20533 * r20518;
        float r20535 = r20534 - r20524;
        float r20536 = exp(r20535);
        float r20537 = 1.3148291958115144e-177;
        bool r20538 = r20513 <= r20537;
        float r20539 = pow(r20513, r20518);
        float r20540 = exp(r20521);
        float r20541 = pow(r20540, r20523);
        float r20542 = r20539 / r20541;
        float r20543 = 4.9733483225402754e+135;
        bool r20544 = r20513 <= r20543;
        float r20545 = +inf.0;
        bool r20546 = r20513 <= r20545;
        float r20547 = r20546 ? r20542 : r20542;
        float r20548 = r20544 ? r20536 : r20547;
        float r20549 = r20538 ? r20542 : r20548;
        float r20550 = r20528 ? r20536 : r20549;
        float r20551 = r20515 ? r20526 : r20550;
        return r20551;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r20552 = x_im;
        double r20553 = -1.6027616921874595e-224;
        bool r20554 = r20552 <= r20553;
        double r20555 = -1;
        double r20556 = r20555 / r20552;
        double r20557 = y_re;
        double r20558 = -r20557;
        double r20559 = pow(r20556, r20558);
        double r20560 = y_im;
        double r20561 = x_re;
        double r20562 = atan2(r20552, r20561);
        double r20563 = r20560 * r20562;
        double r20564 = exp(r20563);
        double r20565 = r20559 / r20564;
        double r20566 = 2.3121315604054924e-249;
        bool r20567 = r20552 <= r20566;
        double r20568 = r20552 * r20552;
        double r20569 = r20561 * r20561;
        double r20570 = r20568 + r20569;
        double r20571 = sqrt(r20570);
        double r20572 = log(r20571);
        double r20573 = r20572 * r20557;
        double r20574 = r20573 - r20563;
        double r20575 = exp(r20574);
        double r20576 = 1.3148291958115144e-177;
        bool r20577 = r20552 <= r20576;
        double r20578 = pow(r20552, r20557);
        double r20579 = exp(r20560);
        double r20580 = pow(r20579, r20562);
        double r20581 = r20578 / r20580;
        double r20582 = 4.9733483225402754e+135;
        bool r20583 = r20552 <= r20582;
        double r20584 = +inf.0;
        bool r20585 = r20552 <= r20584;
        double r20586 = r20585 ? r20581 : r20581;
        double r20587 = r20583 ? r20575 : r20586;
        double r20588 = r20577 ? r20581 : r20587;
        double r20589 = r20567 ? r20575 : r20588;
        double r20590 = r20554 ? r20565 : r20589;
        return r20590;
}

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 r20591, r20592, r20593, r20594, r20595, r20596, r20597, r20598, r20599, r20600, r20601, r20602, r20603, r20604, r20605, r20606, r20607, r20608, r20609;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20591);
        mpfr_init(r20592);
        mpfr_init(r20593);
        mpfr_init(r20594);
        mpfr_init(r20595);
        mpfr_init(r20596);
        mpfr_init(r20597);
        mpfr_init(r20598);
        mpfr_init(r20599);
        mpfr_init(r20600);
        mpfr_init(r20601);
        mpfr_init(r20602);
        mpfr_init(r20603);
        mpfr_init(r20604);
        mpfr_init(r20605);
        mpfr_init(r20606);
        mpfr_init(r20607);
        mpfr_init(r20608);
        mpfr_init(r20609);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r20591, x_re, MPFR_RNDN);
        mpfr_mul(r20592, r20591, r20591, MPFR_RNDN);
        mpfr_set_d(r20593, x_im, MPFR_RNDN);
        mpfr_mul(r20594, r20593, r20593, MPFR_RNDN);
        mpfr_add(r20595, r20592, r20594, MPFR_RNDN);
        mpfr_sqrt(r20596, r20595, MPFR_RNDN);
        mpfr_log(r20597, r20596, MPFR_RNDN);
        mpfr_set_d(r20598, y_re, MPFR_RNDN);
        mpfr_mul(r20599, r20597, r20598, MPFR_RNDN);
        mpfr_atan2(r20600, r20593, r20591, MPFR_RNDN);
        mpfr_set_d(r20601, y_im, MPFR_RNDN);
        mpfr_mul(r20602, r20600, r20601, MPFR_RNDN);
        mpfr_sub(r20603, r20599, r20602, MPFR_RNDN);
        mpfr_exp(r20604, r20603, MPFR_RNDN);
        mpfr_mul(r20605, r20597, r20601, MPFR_RNDN);
        mpfr_mul(r20606, r20600, r20598, MPFR_RNDN);
        mpfr_add(r20607, r20605, r20606, MPFR_RNDN);
        mpfr_cos(r20608, r20607, MPFR_RNDN);
        mpfr_mul(r20609, r20604, r20608, MPFR_RNDN);
        return mpfr_get_d(r20609, MPFR_RNDN);
}

static mpfr_t r20610, r20611, r20612, r20613, r20614, r20615, r20616, r20617, r20618, r20619, r20620, r20621, r20622, r20623, r20624, r20625, r20626, r20627, r20628, r20629, r20630, r20631, r20632, r20633, r20634, r20635, r20636, r20637, r20638, r20639, r20640, r20641, r20642, r20643, r20644, r20645, r20646, r20647, r20648;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20610);
        mpfr_init_set_str(r20611, "-1.6027616921874595e-224", 10, MPFR_RNDN);
        mpfr_init(r20612);
        mpfr_init_set_str(r20613, "-1", 10, MPFR_RNDN);
        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_set_str(r20624, "2.3121315604054924e-249", 10, MPFR_RNDN);
        mpfr_init(r20625);
        mpfr_init(r20626);
        mpfr_init(r20627);
        mpfr_init(r20628);
        mpfr_init(r20629);
        mpfr_init(r20630);
        mpfr_init(r20631);
        mpfr_init(r20632);
        mpfr_init(r20633);
        mpfr_init_set_str(r20634, "1.3148291958115144e-177", 10, MPFR_RNDN);
        mpfr_init(r20635);
        mpfr_init(r20636);
        mpfr_init(r20637);
        mpfr_init(r20638);
        mpfr_init(r20639);
        mpfr_init_set_str(r20640, "4.9733483225402754e+135", 10, MPFR_RNDN);
        mpfr_init(r20641);
        mpfr_init_set_str(r20642, "+inf.0", 10, MPFR_RNDN);
        mpfr_init(r20643);
        mpfr_init(r20644);
        mpfr_init(r20645);
        mpfr_init(r20646);
        mpfr_init(r20647);
        mpfr_init(r20648);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r20610, x_im, MPFR_RNDN);
        ;
        mpfr_set_si(r20612, mpfr_cmp(r20610, r20611) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r20614, r20613, r20610, MPFR_RNDN);
        mpfr_set_d(r20615, y_re, MPFR_RNDN);
        mpfr_neg(r20616, r20615, MPFR_RNDN);
        mpfr_pow(r20617, r20614, r20616, MPFR_RNDN);
        mpfr_set_d(r20618, y_im, MPFR_RNDN);
        mpfr_set_d(r20619, x_re, MPFR_RNDN);
        mpfr_atan2(r20620, r20610, r20619, MPFR_RNDN);
        mpfr_mul(r20621, r20618, r20620, MPFR_RNDN);
        mpfr_exp(r20622, r20621, MPFR_RNDN);
        mpfr_div(r20623, r20617, r20622, MPFR_RNDN);
        ;
        mpfr_set_si(r20625, mpfr_cmp(r20610, r20624) <= 0, MPFR_RNDN);
        mpfr_mul(r20626, r20610, r20610, MPFR_RNDN);
        mpfr_mul(r20627, r20619, r20619, MPFR_RNDN);
        mpfr_add(r20628, r20626, r20627, MPFR_RNDN);
        mpfr_sqrt(r20629, r20628, MPFR_RNDN);
        mpfr_log(r20630, r20629, MPFR_RNDN);
        mpfr_mul(r20631, r20630, r20615, MPFR_RNDN);
        mpfr_sub(r20632, r20631, r20621, MPFR_RNDN);
        mpfr_exp(r20633, r20632, MPFR_RNDN);
        ;
        mpfr_set_si(r20635, mpfr_cmp(r20610, r20634) <= 0, MPFR_RNDN);
        mpfr_pow(r20636, r20610, r20615, MPFR_RNDN);
        mpfr_exp(r20637, r20618, MPFR_RNDN);
        mpfr_pow(r20638, r20637, r20620, MPFR_RNDN);
        mpfr_div(r20639, r20636, r20638, MPFR_RNDN);
        ;
        mpfr_set_si(r20641, mpfr_cmp(r20610, r20640) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20643, mpfr_cmp(r20610, r20642) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r20643, MPFR_RNDN)) { mpfr_set(r20644, r20639, MPFR_RNDN); } else { mpfr_set(r20644, r20639, MPFR_RNDN); };
        if (mpfr_get_si(r20641, MPFR_RNDN)) { mpfr_set(r20645, r20633, MPFR_RNDN); } else { mpfr_set(r20645, r20644, MPFR_RNDN); };
        if (mpfr_get_si(r20635, MPFR_RNDN)) { mpfr_set(r20646, r20639, MPFR_RNDN); } else { mpfr_set(r20646, r20645, MPFR_RNDN); };
        if (mpfr_get_si(r20625, MPFR_RNDN)) { mpfr_set(r20647, r20633, MPFR_RNDN); } else { mpfr_set(r20647, r20646, MPFR_RNDN); };
        if (mpfr_get_si(r20612, MPFR_RNDN)) { mpfr_set(r20648, r20623, MPFR_RNDN); } else { mpfr_set(r20648, r20647, MPFR_RNDN); };
        return mpfr_get_d(r20648, MPFR_RNDN);
}

static mpfr_t 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, r20676, r20677, r20678, r20679, r20680, r20681, r20682, r20683, r20684, r20685, r20686, r20687;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20649);
        mpfr_init_set_str(r20650, "-1.6027616921874595e-224", 10, MPFR_RNDN);
        mpfr_init(r20651);
        mpfr_init_set_str(r20652, "-1", 10, MPFR_RNDN);
        mpfr_init(r20653);
        mpfr_init(r20654);
        mpfr_init(r20655);
        mpfr_init(r20656);
        mpfr_init(r20657);
        mpfr_init(r20658);
        mpfr_init(r20659);
        mpfr_init(r20660);
        mpfr_init(r20661);
        mpfr_init(r20662);
        mpfr_init_set_str(r20663, "2.3121315604054924e-249", 10, MPFR_RNDN);
        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_set_str(r20673, "1.3148291958115144e-177", 10, MPFR_RNDN);
        mpfr_init(r20674);
        mpfr_init(r20675);
        mpfr_init(r20676);
        mpfr_init(r20677);
        mpfr_init(r20678);
        mpfr_init_set_str(r20679, "4.9733483225402754e+135", 10, MPFR_RNDN);
        mpfr_init(r20680);
        mpfr_init_set_str(r20681, "+inf.0", 10, MPFR_RNDN);
        mpfr_init(r20682);
        mpfr_init(r20683);
        mpfr_init(r20684);
        mpfr_init(r20685);
        mpfr_init(r20686);
        mpfr_init(r20687);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r20649, x_im, MPFR_RNDN);
        ;
        mpfr_set_si(r20651, mpfr_cmp(r20649, r20650) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r20653, r20652, r20649, MPFR_RNDN);
        mpfr_set_d(r20654, y_re, MPFR_RNDN);
        mpfr_neg(r20655, r20654, MPFR_RNDN);
        mpfr_pow(r20656, r20653, r20655, MPFR_RNDN);
        mpfr_set_d(r20657, y_im, MPFR_RNDN);
        mpfr_set_d(r20658, x_re, MPFR_RNDN);
        mpfr_atan2(r20659, r20649, r20658, MPFR_RNDN);
        mpfr_mul(r20660, r20657, r20659, MPFR_RNDN);
        mpfr_exp(r20661, r20660, MPFR_RNDN);
        mpfr_div(r20662, r20656, r20661, MPFR_RNDN);
        ;
        mpfr_set_si(r20664, mpfr_cmp(r20649, r20663) <= 0, MPFR_RNDN);
        mpfr_mul(r20665, r20649, r20649, MPFR_RNDN);
        mpfr_mul(r20666, r20658, r20658, MPFR_RNDN);
        mpfr_add(r20667, r20665, r20666, MPFR_RNDN);
        mpfr_sqrt(r20668, r20667, MPFR_RNDN);
        mpfr_log(r20669, r20668, MPFR_RNDN);
        mpfr_mul(r20670, r20669, r20654, MPFR_RNDN);
        mpfr_sub(r20671, r20670, r20660, MPFR_RNDN);
        mpfr_exp(r20672, r20671, MPFR_RNDN);
        ;
        mpfr_set_si(r20674, mpfr_cmp(r20649, r20673) <= 0, MPFR_RNDN);
        mpfr_pow(r20675, r20649, r20654, MPFR_RNDN);
        mpfr_exp(r20676, r20657, MPFR_RNDN);
        mpfr_pow(r20677, r20676, r20659, MPFR_RNDN);
        mpfr_div(r20678, r20675, r20677, MPFR_RNDN);
        ;
        mpfr_set_si(r20680, mpfr_cmp(r20649, r20679) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20682, mpfr_cmp(r20649, r20681) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r20682, MPFR_RNDN)) { mpfr_set(r20683, r20678, MPFR_RNDN); } else { mpfr_set(r20683, r20678, MPFR_RNDN); };
        if (mpfr_get_si(r20680, MPFR_RNDN)) { mpfr_set(r20684, r20672, MPFR_RNDN); } else { mpfr_set(r20684, r20683, MPFR_RNDN); };
        if (mpfr_get_si(r20674, MPFR_RNDN)) { mpfr_set(r20685, r20678, MPFR_RNDN); } else { mpfr_set(r20685, r20684, MPFR_RNDN); };
        if (mpfr_get_si(r20664, MPFR_RNDN)) { mpfr_set(r20686, r20672, MPFR_RNDN); } else { mpfr_set(r20686, r20685, MPFR_RNDN); };
        if (mpfr_get_si(r20651, MPFR_RNDN)) { mpfr_set(r20687, r20662, MPFR_RNDN); } else { mpfr_set(r20687, r20686, MPFR_RNDN); };
        return mpfr_get_d(r20687, MPFR_RNDN);
}

