#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 r7445 = x_re;
        float r7446 = r7445 * r7445;
        float r7447 = x_im;
        float r7448 = r7447 * r7447;
        float r7449 = r7446 + r7448;
        float r7450 = sqrt(r7449);
        float r7451 = log(r7450);
        float r7452 = y_re;
        float r7453 = r7451 * r7452;
        float r7454 = atan2(r7447, r7445);
        float r7455 = y_im;
        float r7456 = r7454 * r7455;
        float r7457 = r7453 - r7456;
        float r7458 = exp(r7457);
        float r7459 = r7451 * r7455;
        float r7460 = r7454 * r7452;
        float r7461 = r7459 + r7460;
        float r7462 = cos(r7461);
        float r7463 = r7458 * r7462;
        return r7463;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r7464 = x_re;
        double r7465 = r7464 * r7464;
        double r7466 = x_im;
        double r7467 = r7466 * r7466;
        double r7468 = r7465 + r7467;
        double r7469 = sqrt(r7468);
        double r7470 = log(r7469);
        double r7471 = y_re;
        double r7472 = r7470 * r7471;
        double r7473 = atan2(r7466, r7464);
        double r7474 = y_im;
        double r7475 = r7473 * r7474;
        double r7476 = r7472 - r7475;
        double r7477 = exp(r7476);
        double r7478 = r7470 * r7474;
        double r7479 = r7473 * r7471;
        double r7480 = r7478 + r7479;
        double r7481 = cos(r7480);
        double r7482 = r7477 * r7481;
        return r7482;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r7483 = y_re;
        float r7484 = x_re;
        float r7485 = log(r7484);
        float r7486 = r7483 * r7485;
        float r7487 = x_im;
        float r7488 = atan2(r7487, r7484);
        float r7489 = y_im;
        float r7490 = r7488 * r7489;
        float r7491 = r7486 - r7490;
        float r7492 = 50.68309104632178f;
        bool r7493 = r7491 <= r7492;
        float r7494 = exp(r7491);
        float r7495 = 2.079946189803026e+293f;
        bool r7496 = r7491 <= r7495;
        float r7497 = r7488 * r7483;
        float r7498 = r7485 * r7489;
        float r7499 = r7497 + r7498;
        float r7500 = cos(r7499);
        float r7501 = r7487 * r7487;
        float r7502 = r7484 * r7484;
        float r7503 = r7501 + r7502;
        float r7504 = sqrt(r7503);
        float r7505 = log(r7504);
        float r7506 = r7483 * r7505;
        float r7507 = r7506 - r7490;
        float r7508 = exp(r7507);
        float r7509 = r7500 * r7508;
        float r7510 = -r7484;
        float r7511 = log(r7510);
        float r7512 = r7483 * r7511;
        float r7513 = r7512 - r7490;
        float r7514 = exp(r7513);
        float r7515 = r7496 ? r7509 : r7514;
        float r7516 = r7493 ? r7494 : r7515;
        return r7516;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r7517 = y_re;
        double r7518 = x_re;
        double r7519 = log(r7518);
        double r7520 = r7517 * r7519;
        double r7521 = x_im;
        double r7522 = atan2(r7521, r7518);
        double r7523 = y_im;
        double r7524 = r7522 * r7523;
        double r7525 = r7520 - r7524;
        double r7526 = 50.68309104632178;
        bool r7527 = r7525 <= r7526;
        double r7528 = exp(r7525);
        double r7529 = 2.079946189803026e+293;
        bool r7530 = r7525 <= r7529;
        double r7531 = r7522 * r7517;
        double r7532 = r7519 * r7523;
        double r7533 = r7531 + r7532;
        double r7534 = cos(r7533);
        double r7535 = r7521 * r7521;
        double r7536 = r7518 * r7518;
        double r7537 = r7535 + r7536;
        double r7538 = sqrt(r7537);
        double r7539 = log(r7538);
        double r7540 = r7517 * r7539;
        double r7541 = r7540 - r7524;
        double r7542 = exp(r7541);
        double r7543 = r7534 * r7542;
        double r7544 = -r7518;
        double r7545 = log(r7544);
        double r7546 = r7517 * r7545;
        double r7547 = r7546 - r7524;
        double r7548 = exp(r7547);
        double r7549 = r7530 ? r7543 : r7548;
        double r7550 = r7527 ? r7528 : r7549;
        return r7550;
}

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 r7551, r7552, r7553, r7554, r7555, r7556, r7557, r7558, r7559, r7560, r7561, r7562, r7563, r7564, r7565, r7566, r7567, r7568, r7569;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7551);
        mpfr_init(r7552);
        mpfr_init(r7553);
        mpfr_init(r7554);
        mpfr_init(r7555);
        mpfr_init(r7556);
        mpfr_init(r7557);
        mpfr_init(r7558);
        mpfr_init(r7559);
        mpfr_init(r7560);
        mpfr_init(r7561);
        mpfr_init(r7562);
        mpfr_init(r7563);
        mpfr_init(r7564);
        mpfr_init(r7565);
        mpfr_init(r7566);
        mpfr_init(r7567);
        mpfr_init(r7568);
        mpfr_init(r7569);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r7551, x_re, MPFR_RNDN);
        mpfr_mul(r7552, r7551, r7551, MPFR_RNDN);
        mpfr_set_d(r7553, x_im, MPFR_RNDN);
        mpfr_mul(r7554, r7553, r7553, MPFR_RNDN);
        mpfr_add(r7555, r7552, r7554, MPFR_RNDN);
        mpfr_sqrt(r7556, r7555, MPFR_RNDN);
        mpfr_log(r7557, r7556, MPFR_RNDN);
        mpfr_set_d(r7558, y_re, MPFR_RNDN);
        mpfr_mul(r7559, r7557, r7558, MPFR_RNDN);
        mpfr_atan2(r7560, r7553, r7551, MPFR_RNDN);
        mpfr_set_d(r7561, y_im, MPFR_RNDN);
        mpfr_mul(r7562, r7560, r7561, MPFR_RNDN);
        mpfr_sub(r7563, r7559, r7562, MPFR_RNDN);
        mpfr_exp(r7564, r7563, MPFR_RNDN);
        mpfr_mul(r7565, r7557, r7561, MPFR_RNDN);
        mpfr_mul(r7566, r7560, r7558, MPFR_RNDN);
        mpfr_add(r7567, r7565, r7566, MPFR_RNDN);
        mpfr_cos(r7568, r7567, MPFR_RNDN);
        mpfr_mul(r7569, r7564, r7568, MPFR_RNDN);
        return mpfr_get_d(r7569, MPFR_RNDN);
}

static mpfr_t r7570, r7571, r7572, r7573, r7574, r7575, r7576, r7577, r7578, r7579, r7580, r7581, r7582, r7583, r7584, r7585, r7586, r7587, r7588, r7589, r7590, r7591, r7592, r7593, r7594, r7595, r7596, r7597, r7598, r7599, r7600, r7601, r7602, r7603;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7570);
        mpfr_init(r7571);
        mpfr_init(r7572);
        mpfr_init(r7573);
        mpfr_init(r7574);
        mpfr_init(r7575);
        mpfr_init(r7576);
        mpfr_init(r7577);
        mpfr_init(r7578);
        mpfr_init_set_str(r7579, "50.68309104632178", 10, MPFR_RNDN);
        mpfr_init(r7580);
        mpfr_init(r7581);
        mpfr_init_set_str(r7582, "2.079946189803026e+293", 10, MPFR_RNDN);
        mpfr_init(r7583);
        mpfr_init(r7584);
        mpfr_init(r7585);
        mpfr_init(r7586);
        mpfr_init(r7587);
        mpfr_init(r7588);
        mpfr_init(r7589);
        mpfr_init(r7590);
        mpfr_init(r7591);
        mpfr_init(r7592);
        mpfr_init(r7593);
        mpfr_init(r7594);
        mpfr_init(r7595);
        mpfr_init(r7596);
        mpfr_init(r7597);
        mpfr_init(r7598);
        mpfr_init(r7599);
        mpfr_init(r7600);
        mpfr_init(r7601);
        mpfr_init(r7602);
        mpfr_init(r7603);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r7570, y_re, MPFR_RNDN);
        mpfr_set_d(r7571, x_re, MPFR_RNDN);
        mpfr_log(r7572, r7571, MPFR_RNDN);
        mpfr_mul(r7573, r7570, r7572, MPFR_RNDN);
        mpfr_set_d(r7574, x_im, MPFR_RNDN);
        mpfr_atan2(r7575, r7574, r7571, MPFR_RNDN);
        mpfr_set_d(r7576, y_im, MPFR_RNDN);
        mpfr_mul(r7577, r7575, r7576, MPFR_RNDN);
        mpfr_sub(r7578, r7573, r7577, MPFR_RNDN);
        ;
        mpfr_set_si(r7580, mpfr_cmp(r7578, r7579) <= 0, MPFR_RNDN);
        mpfr_exp(r7581, r7578, MPFR_RNDN);
        ;
        mpfr_set_si(r7583, mpfr_cmp(r7578, r7582) <= 0, MPFR_RNDN);
        mpfr_mul(r7584, r7575, r7570, MPFR_RNDN);
        mpfr_mul(r7585, r7572, r7576, MPFR_RNDN);
        mpfr_add(r7586, r7584, r7585, MPFR_RNDN);
        mpfr_cos(r7587, r7586, MPFR_RNDN);
        mpfr_mul(r7588, r7574, r7574, MPFR_RNDN);
        mpfr_mul(r7589, r7571, r7571, MPFR_RNDN);
        mpfr_add(r7590, r7588, r7589, MPFR_RNDN);
        mpfr_sqrt(r7591, r7590, MPFR_RNDN);
        mpfr_log(r7592, r7591, MPFR_RNDN);
        mpfr_mul(r7593, r7570, r7592, MPFR_RNDN);
        mpfr_sub(r7594, r7593, r7577, MPFR_RNDN);
        mpfr_exp(r7595, r7594, MPFR_RNDN);
        mpfr_mul(r7596, r7587, r7595, MPFR_RNDN);
        mpfr_neg(r7597, r7571, MPFR_RNDN);
        mpfr_log(r7598, r7597, MPFR_RNDN);
        mpfr_mul(r7599, r7570, r7598, MPFR_RNDN);
        mpfr_sub(r7600, r7599, r7577, MPFR_RNDN);
        mpfr_exp(r7601, r7600, MPFR_RNDN);
        if (mpfr_get_si(r7583, MPFR_RNDN)) { mpfr_set(r7602, r7596, MPFR_RNDN); } else { mpfr_set(r7602, r7601, MPFR_RNDN); };
        if (mpfr_get_si(r7580, MPFR_RNDN)) { mpfr_set(r7603, r7581, MPFR_RNDN); } else { mpfr_set(r7603, r7602, MPFR_RNDN); };
        return mpfr_get_d(r7603, MPFR_RNDN);
}

static mpfr_t r7604, r7605, r7606, r7607, r7608, r7609, r7610, r7611, r7612, r7613, r7614, r7615, r7616, r7617, r7618, r7619, r7620, r7621, r7622, r7623, r7624, r7625, r7626, r7627, r7628, r7629, r7630, r7631, r7632, r7633, r7634, r7635, r7636, r7637;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7604);
        mpfr_init(r7605);
        mpfr_init(r7606);
        mpfr_init(r7607);
        mpfr_init(r7608);
        mpfr_init(r7609);
        mpfr_init(r7610);
        mpfr_init(r7611);
        mpfr_init(r7612);
        mpfr_init_set_str(r7613, "50.68309104632178", 10, MPFR_RNDN);
        mpfr_init(r7614);
        mpfr_init(r7615);
        mpfr_init_set_str(r7616, "2.079946189803026e+293", 10, MPFR_RNDN);
        mpfr_init(r7617);
        mpfr_init(r7618);
        mpfr_init(r7619);
        mpfr_init(r7620);
        mpfr_init(r7621);
        mpfr_init(r7622);
        mpfr_init(r7623);
        mpfr_init(r7624);
        mpfr_init(r7625);
        mpfr_init(r7626);
        mpfr_init(r7627);
        mpfr_init(r7628);
        mpfr_init(r7629);
        mpfr_init(r7630);
        mpfr_init(r7631);
        mpfr_init(r7632);
        mpfr_init(r7633);
        mpfr_init(r7634);
        mpfr_init(r7635);
        mpfr_init(r7636);
        mpfr_init(r7637);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r7604, y_re, MPFR_RNDN);
        mpfr_set_d(r7605, x_re, MPFR_RNDN);
        mpfr_log(r7606, r7605, MPFR_RNDN);
        mpfr_mul(r7607, r7604, r7606, MPFR_RNDN);
        mpfr_set_d(r7608, x_im, MPFR_RNDN);
        mpfr_atan2(r7609, r7608, r7605, MPFR_RNDN);
        mpfr_set_d(r7610, y_im, MPFR_RNDN);
        mpfr_mul(r7611, r7609, r7610, MPFR_RNDN);
        mpfr_sub(r7612, r7607, r7611, MPFR_RNDN);
        ;
        mpfr_set_si(r7614, mpfr_cmp(r7612, r7613) <= 0, MPFR_RNDN);
        mpfr_exp(r7615, r7612, MPFR_RNDN);
        ;
        mpfr_set_si(r7617, mpfr_cmp(r7612, r7616) <= 0, MPFR_RNDN);
        mpfr_mul(r7618, r7609, r7604, MPFR_RNDN);
        mpfr_mul(r7619, r7606, r7610, MPFR_RNDN);
        mpfr_add(r7620, r7618, r7619, MPFR_RNDN);
        mpfr_cos(r7621, r7620, MPFR_RNDN);
        mpfr_mul(r7622, r7608, r7608, MPFR_RNDN);
        mpfr_mul(r7623, r7605, r7605, MPFR_RNDN);
        mpfr_add(r7624, r7622, r7623, MPFR_RNDN);
        mpfr_sqrt(r7625, r7624, MPFR_RNDN);
        mpfr_log(r7626, r7625, MPFR_RNDN);
        mpfr_mul(r7627, r7604, r7626, MPFR_RNDN);
        mpfr_sub(r7628, r7627, r7611, MPFR_RNDN);
        mpfr_exp(r7629, r7628, MPFR_RNDN);
        mpfr_mul(r7630, r7621, r7629, MPFR_RNDN);
        mpfr_neg(r7631, r7605, MPFR_RNDN);
        mpfr_log(r7632, r7631, MPFR_RNDN);
        mpfr_mul(r7633, r7604, r7632, MPFR_RNDN);
        mpfr_sub(r7634, r7633, r7611, MPFR_RNDN);
        mpfr_exp(r7635, r7634, MPFR_RNDN);
        if (mpfr_get_si(r7617, MPFR_RNDN)) { mpfr_set(r7636, r7630, MPFR_RNDN); } else { mpfr_set(r7636, r7635, MPFR_RNDN); };
        if (mpfr_get_si(r7614, MPFR_RNDN)) { mpfr_set(r7637, r7615, MPFR_RNDN); } else { mpfr_set(r7637, r7636, MPFR_RNDN); };
        return mpfr_get_d(r7637, MPFR_RNDN);
}

