#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 r19566 = x_re;
        float r19567 = r19566 * r19566;
        float r19568 = x_im;
        float r19569 = r19568 * r19568;
        float r19570 = r19567 + r19569;
        float r19571 = sqrt(r19570);
        float r19572 = log(r19571);
        float r19573 = y_re;
        float r19574 = r19572 * r19573;
        float r19575 = atan2(r19568, r19566);
        float r19576 = y_im;
        float r19577 = r19575 * r19576;
        float r19578 = r19574 - r19577;
        float r19579 = exp(r19578);
        float r19580 = r19572 * r19576;
        float r19581 = r19575 * r19573;
        float r19582 = r19580 + r19581;
        float r19583 = cos(r19582);
        float r19584 = r19579 * r19583;
        return r19584;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r19585 = x_re;
        double r19586 = r19585 * r19585;
        double r19587 = x_im;
        double r19588 = r19587 * r19587;
        double r19589 = r19586 + r19588;
        double r19590 = sqrt(r19589);
        double r19591 = log(r19590);
        double r19592 = y_re;
        double r19593 = r19591 * r19592;
        double r19594 = atan2(r19587, r19585);
        double r19595 = y_im;
        double r19596 = r19594 * r19595;
        double r19597 = r19593 - r19596;
        double r19598 = exp(r19597);
        double r19599 = r19591 * r19595;
        double r19600 = r19594 * r19592;
        double r19601 = r19599 + r19600;
        double r19602 = cos(r19601);
        double r19603 = r19598 * r19602;
        return r19603;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r19604 = x_im;
        float r19605 = -1.430093898044764e-294;
        bool r19606 = r19604 <= r19605;
        float r19607 = y_re;
        float r19608 = x_re;
        float r19609 = atan2(r19604, r19608);
        float r19610 = r19607 * r19609;
        float r19611 = y_im;
        float r19612 = -r19604;
        float r19613 = log(r19612);
        float r19614 = r19611 * r19613;
        float r19615 = r19610 + r19614;
        float r19616 = cos(r19615);
        float r19617 = exp(r19611);
        float r19618 = pow(r19617, r19609);
        float r19619 = r19604 * r19604;
        float r19620 = r19608 * r19608;
        float r19621 = r19619 + r19620;
        float r19622 = sqrt(r19621);
        float r19623 = pow(r19622, r19607);
        float r19624 = r19618 / r19623;
        float r19625 = r19616 / r19624;
        float r19626 = log(r19604);
        float r19627 = r19611 * r19626;
        float r19628 = r19627 + r19610;
        float r19629 = cos(r19628);
        float r19630 = 3;
        float r19631 = pow(r19629, r19630);
        float r19632 = cbrt(r19631);
        float r19633 = r19611 * r19609;
        float r19634 = r19626 * r19607;
        float r19635 = r19633 - r19634;
        float r19636 = exp(r19635);
        float r19637 = r19632 / r19636;
        float r19638 = r19606 ? r19625 : r19637;
        return r19638;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r19639 = x_im;
        double r19640 = -1.430093898044764e-294;
        bool r19641 = r19639 <= r19640;
        double r19642 = y_re;
        double r19643 = x_re;
        double r19644 = atan2(r19639, r19643);
        double r19645 = r19642 * r19644;
        double r19646 = y_im;
        double r19647 = -r19639;
        double r19648 = log(r19647);
        double r19649 = r19646 * r19648;
        double r19650 = r19645 + r19649;
        double r19651 = cos(r19650);
        double r19652 = exp(r19646);
        double r19653 = pow(r19652, r19644);
        double r19654 = r19639 * r19639;
        double r19655 = r19643 * r19643;
        double r19656 = r19654 + r19655;
        double r19657 = sqrt(r19656);
        double r19658 = pow(r19657, r19642);
        double r19659 = r19653 / r19658;
        double r19660 = r19651 / r19659;
        double r19661 = log(r19639);
        double r19662 = r19646 * r19661;
        double r19663 = r19662 + r19645;
        double r19664 = cos(r19663);
        double r19665 = 3;
        double r19666 = pow(r19664, r19665);
        double r19667 = cbrt(r19666);
        double r19668 = r19646 * r19644;
        double r19669 = r19661 * r19642;
        double r19670 = r19668 - r19669;
        double r19671 = exp(r19670);
        double r19672 = r19667 / r19671;
        double r19673 = r19641 ? r19660 : r19672;
        return r19673;
}

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 r19674, r19675, r19676, r19677, r19678, r19679, r19680, r19681, r19682, r19683, r19684, r19685, r19686, r19687, r19688, r19689, r19690, r19691, r19692;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19674);
        mpfr_init(r19675);
        mpfr_init(r19676);
        mpfr_init(r19677);
        mpfr_init(r19678);
        mpfr_init(r19679);
        mpfr_init(r19680);
        mpfr_init(r19681);
        mpfr_init(r19682);
        mpfr_init(r19683);
        mpfr_init(r19684);
        mpfr_init(r19685);
        mpfr_init(r19686);
        mpfr_init(r19687);
        mpfr_init(r19688);
        mpfr_init(r19689);
        mpfr_init(r19690);
        mpfr_init(r19691);
        mpfr_init(r19692);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r19674, x_re, MPFR_RNDN);
        mpfr_mul(r19675, r19674, r19674, MPFR_RNDN);
        mpfr_set_d(r19676, x_im, MPFR_RNDN);
        mpfr_mul(r19677, r19676, r19676, MPFR_RNDN);
        mpfr_add(r19678, r19675, r19677, MPFR_RNDN);
        mpfr_sqrt(r19679, r19678, MPFR_RNDN);
        mpfr_log(r19680, r19679, MPFR_RNDN);
        mpfr_set_d(r19681, y_re, MPFR_RNDN);
        mpfr_mul(r19682, r19680, r19681, MPFR_RNDN);
        mpfr_atan2(r19683, r19676, r19674, MPFR_RNDN);
        mpfr_set_d(r19684, y_im, MPFR_RNDN);
        mpfr_mul(r19685, r19683, r19684, MPFR_RNDN);
        mpfr_sub(r19686, r19682, r19685, MPFR_RNDN);
        mpfr_exp(r19687, r19686, MPFR_RNDN);
        mpfr_mul(r19688, r19680, r19684, MPFR_RNDN);
        mpfr_mul(r19689, r19683, r19681, MPFR_RNDN);
        mpfr_add(r19690, r19688, r19689, MPFR_RNDN);
        mpfr_cos(r19691, r19690, MPFR_RNDN);
        mpfr_mul(r19692, r19687, r19691, MPFR_RNDN);
        return mpfr_get_d(r19692, MPFR_RNDN);
}

static mpfr_t r19693, r19694, r19695, r19696, r19697, r19698, r19699, r19700, r19701, r19702, r19703, r19704, r19705, r19706, r19707, r19708, r19709, r19710, r19711, r19712, r19713, r19714, r19715, r19716, r19717, r19718, r19719, r19720, r19721, r19722, r19723, r19724, r19725, r19726, r19727;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19693);
        mpfr_init_set_str(r19694, "-1.430093898044764e-294", 10, MPFR_RNDN);
        mpfr_init(r19695);
        mpfr_init(r19696);
        mpfr_init(r19697);
        mpfr_init(r19698);
        mpfr_init(r19699);
        mpfr_init(r19700);
        mpfr_init(r19701);
        mpfr_init(r19702);
        mpfr_init(r19703);
        mpfr_init(r19704);
        mpfr_init(r19705);
        mpfr_init(r19706);
        mpfr_init(r19707);
        mpfr_init(r19708);
        mpfr_init(r19709);
        mpfr_init(r19710);
        mpfr_init(r19711);
        mpfr_init(r19712);
        mpfr_init(r19713);
        mpfr_init(r19714);
        mpfr_init(r19715);
        mpfr_init(r19716);
        mpfr_init(r19717);
        mpfr_init(r19718);
        mpfr_init_set_str(r19719, "3", 10, MPFR_RNDN);
        mpfr_init(r19720);
        mpfr_init(r19721);
        mpfr_init(r19722);
        mpfr_init(r19723);
        mpfr_init(r19724);
        mpfr_init(r19725);
        mpfr_init(r19726);
        mpfr_init(r19727);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r19693, x_im, MPFR_RNDN);
        ;
        mpfr_set_si(r19695, mpfr_cmp(r19693, r19694) <= 0, MPFR_RNDN);
        mpfr_set_d(r19696, y_re, MPFR_RNDN);
        mpfr_set_d(r19697, x_re, MPFR_RNDN);
        mpfr_atan2(r19698, r19693, r19697, MPFR_RNDN);
        mpfr_mul(r19699, r19696, r19698, MPFR_RNDN);
        mpfr_set_d(r19700, y_im, MPFR_RNDN);
        mpfr_neg(r19701, r19693, MPFR_RNDN);
        mpfr_log(r19702, r19701, MPFR_RNDN);
        mpfr_mul(r19703, r19700, r19702, MPFR_RNDN);
        mpfr_add(r19704, r19699, r19703, MPFR_RNDN);
        mpfr_cos(r19705, r19704, MPFR_RNDN);
        mpfr_exp(r19706, r19700, MPFR_RNDN);
        mpfr_pow(r19707, r19706, r19698, MPFR_RNDN);
        mpfr_mul(r19708, r19693, r19693, MPFR_RNDN);
        mpfr_mul(r19709, r19697, r19697, MPFR_RNDN);
        mpfr_add(r19710, r19708, r19709, MPFR_RNDN);
        mpfr_sqrt(r19711, r19710, MPFR_RNDN);
        mpfr_pow(r19712, r19711, r19696, MPFR_RNDN);
        mpfr_div(r19713, r19707, r19712, MPFR_RNDN);
        mpfr_div(r19714, r19705, r19713, MPFR_RNDN);
        mpfr_log(r19715, r19693, MPFR_RNDN);
        mpfr_mul(r19716, r19700, r19715, MPFR_RNDN);
        mpfr_add(r19717, r19716, r19699, MPFR_RNDN);
        mpfr_cos(r19718, r19717, MPFR_RNDN);
        ;
        mpfr_pow(r19720, r19718, r19719, MPFR_RNDN);
        mpfr_cbrt(r19721, r19720, MPFR_RNDN);
        mpfr_mul(r19722, r19700, r19698, MPFR_RNDN);
        mpfr_mul(r19723, r19715, r19696, MPFR_RNDN);
        mpfr_sub(r19724, r19722, r19723, MPFR_RNDN);
        mpfr_exp(r19725, r19724, MPFR_RNDN);
        mpfr_div(r19726, r19721, r19725, MPFR_RNDN);
        if (mpfr_get_si(r19695, MPFR_RNDN)) { mpfr_set(r19727, r19714, MPFR_RNDN); } else { mpfr_set(r19727, r19726, MPFR_RNDN); };
        return mpfr_get_d(r19727, MPFR_RNDN);
}

static mpfr_t r19728, r19729, r19730, r19731, r19732, r19733, r19734, r19735, r19736, r19737, r19738, r19739, r19740, r19741, r19742, r19743, r19744, r19745, r19746, r19747, r19748, r19749, r19750, r19751, r19752, r19753, r19754, r19755, r19756, r19757, r19758, r19759, r19760, r19761, r19762;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19728);
        mpfr_init_set_str(r19729, "-1.430093898044764e-294", 10, MPFR_RNDN);
        mpfr_init(r19730);
        mpfr_init(r19731);
        mpfr_init(r19732);
        mpfr_init(r19733);
        mpfr_init(r19734);
        mpfr_init(r19735);
        mpfr_init(r19736);
        mpfr_init(r19737);
        mpfr_init(r19738);
        mpfr_init(r19739);
        mpfr_init(r19740);
        mpfr_init(r19741);
        mpfr_init(r19742);
        mpfr_init(r19743);
        mpfr_init(r19744);
        mpfr_init(r19745);
        mpfr_init(r19746);
        mpfr_init(r19747);
        mpfr_init(r19748);
        mpfr_init(r19749);
        mpfr_init(r19750);
        mpfr_init(r19751);
        mpfr_init(r19752);
        mpfr_init(r19753);
        mpfr_init_set_str(r19754, "3", 10, MPFR_RNDN);
        mpfr_init(r19755);
        mpfr_init(r19756);
        mpfr_init(r19757);
        mpfr_init(r19758);
        mpfr_init(r19759);
        mpfr_init(r19760);
        mpfr_init(r19761);
        mpfr_init(r19762);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r19728, x_im, MPFR_RNDN);
        ;
        mpfr_set_si(r19730, mpfr_cmp(r19728, r19729) <= 0, MPFR_RNDN);
        mpfr_set_d(r19731, y_re, MPFR_RNDN);
        mpfr_set_d(r19732, x_re, MPFR_RNDN);
        mpfr_atan2(r19733, r19728, r19732, MPFR_RNDN);
        mpfr_mul(r19734, r19731, r19733, MPFR_RNDN);
        mpfr_set_d(r19735, y_im, MPFR_RNDN);
        mpfr_neg(r19736, r19728, MPFR_RNDN);
        mpfr_log(r19737, r19736, MPFR_RNDN);
        mpfr_mul(r19738, r19735, r19737, MPFR_RNDN);
        mpfr_add(r19739, r19734, r19738, MPFR_RNDN);
        mpfr_cos(r19740, r19739, MPFR_RNDN);
        mpfr_exp(r19741, r19735, MPFR_RNDN);
        mpfr_pow(r19742, r19741, r19733, MPFR_RNDN);
        mpfr_mul(r19743, r19728, r19728, MPFR_RNDN);
        mpfr_mul(r19744, r19732, r19732, MPFR_RNDN);
        mpfr_add(r19745, r19743, r19744, MPFR_RNDN);
        mpfr_sqrt(r19746, r19745, MPFR_RNDN);
        mpfr_pow(r19747, r19746, r19731, MPFR_RNDN);
        mpfr_div(r19748, r19742, r19747, MPFR_RNDN);
        mpfr_div(r19749, r19740, r19748, MPFR_RNDN);
        mpfr_log(r19750, r19728, MPFR_RNDN);
        mpfr_mul(r19751, r19735, r19750, MPFR_RNDN);
        mpfr_add(r19752, r19751, r19734, MPFR_RNDN);
        mpfr_cos(r19753, r19752, MPFR_RNDN);
        ;
        mpfr_pow(r19755, r19753, r19754, MPFR_RNDN);
        mpfr_cbrt(r19756, r19755, MPFR_RNDN);
        mpfr_mul(r19757, r19735, r19733, MPFR_RNDN);
        mpfr_mul(r19758, r19750, r19731, MPFR_RNDN);
        mpfr_sub(r19759, r19757, r19758, MPFR_RNDN);
        mpfr_exp(r19760, r19759, MPFR_RNDN);
        mpfr_div(r19761, r19756, r19760, MPFR_RNDN);
        if (mpfr_get_si(r19730, MPFR_RNDN)) { mpfr_set(r19762, r19749, MPFR_RNDN); } else { mpfr_set(r19762, r19761, MPFR_RNDN); };
        return mpfr_get_d(r19762, MPFR_RNDN);
}

