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

char *name = "math.sin on complex, imaginary part";

double f_if(float re, float im) {
        float r38563 = 0.5;
        float r38564 = re;
        float r38565 = cos(r38564);
        float r38566 = r38563 * r38565;
        float r38567 = 0;
        float r38568 = im;
        float r38569 = r38567 - r38568;
        float r38570 = exp(r38569);
        float r38571 = exp(r38568);
        float r38572 = r38570 - r38571;
        float r38573 = r38566 * r38572;
        return r38573;
}

double f_id(double re, double im) {
        double r38574 = 0.5;
        double r38575 = re;
        double r38576 = cos(r38575);
        double r38577 = r38574 * r38576;
        double r38578 = 0;
        double r38579 = im;
        double r38580 = r38578 - r38579;
        double r38581 = exp(r38580);
        double r38582 = exp(r38579);
        double r38583 = r38581 - r38582;
        double r38584 = r38577 * r38583;
        return r38584;
}


double f_of(float re, float im) {
        float r38585 = 1/60;
        float r38586 = im;
        float r38587 = 5;
        float r38588 = pow(r38586, r38587);
        float r38589 = r38585 * r38588;
        float r38590 = 2;
        float r38591 = r38590 * r38586;
        float r38592 = 1/3;
        float r38593 = 3;
        float r38594 = pow(r38586, r38593);
        float r38595 = r38592 * r38594;
        float r38596 = r38591 + r38595;
        float r38597 = r38589 + r38596;
        float r38598 = -r38597;
        float r38599 = 0.5;
        float r38600 = re;
        float r38601 = cos(r38600);
        float r38602 = r38599 * r38601;
        float r38603 = r38598 * r38602;
        return r38603;
}

double f_od(double re, double im) {
        double r38604 = 1/60;
        double r38605 = im;
        double r38606 = 5;
        double r38607 = pow(r38605, r38606);
        double r38608 = r38604 * r38607;
        double r38609 = 2;
        double r38610 = r38609 * r38605;
        double r38611 = 1/3;
        double r38612 = 3;
        double r38613 = pow(r38605, r38612);
        double r38614 = r38611 * r38613;
        double r38615 = r38610 + r38614;
        double r38616 = r38608 + r38615;
        double r38617 = -r38616;
        double r38618 = 0.5;
        double r38619 = re;
        double r38620 = cos(r38619);
        double r38621 = r38618 * r38620;
        double r38622 = r38617 * r38621;
        return r38622;
}

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 r38623, r38624, r38625, r38626, r38627, r38628, r38629, r38630, r38631, r38632, r38633;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38623, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38624);
        mpfr_init(r38625);
        mpfr_init(r38626);
        mpfr_init_set_str(r38627, "0", 10, MPFR_RNDN);
        mpfr_init(r38628);
        mpfr_init(r38629);
        mpfr_init(r38630);
        mpfr_init(r38631);
        mpfr_init(r38632);
        mpfr_init(r38633);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r38624, re, MPFR_RNDN);
        mpfr_cos(r38625, r38624, MPFR_RNDN);
        mpfr_mul(r38626, r38623, r38625, MPFR_RNDN);
        ;
        mpfr_set_d(r38628, im, MPFR_RNDN);
        mpfr_sub(r38629, r38627, r38628, MPFR_RNDN);
        mpfr_exp(r38630, r38629, MPFR_RNDN);
        mpfr_exp(r38631, r38628, MPFR_RNDN);
        mpfr_sub(r38632, r38630, r38631, MPFR_RNDN);
        mpfr_mul(r38633, r38626, r38632, MPFR_RNDN);
        return mpfr_get_d(r38633, MPFR_RNDN);
}

static mpfr_t r38634, r38635, r38636, r38637, r38638, r38639, r38640, r38641, r38642, r38643, r38644, r38645, r38646, r38647, r38648, r38649, r38650, r38651, r38652;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38634, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38635);
        mpfr_init_set_str(r38636, "5", 10, MPFR_RNDN);
        mpfr_init(r38637);
        mpfr_init(r38638);
        mpfr_init_set_str(r38639, "2", 10, MPFR_RNDN);
        mpfr_init(r38640);
        mpfr_init_set_str(r38641, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38642, "3", 10, MPFR_RNDN);
        mpfr_init(r38643);
        mpfr_init(r38644);
        mpfr_init(r38645);
        mpfr_init(r38646);
        mpfr_init(r38647);
        mpfr_init_set_str(r38648, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38649);
        mpfr_init(r38650);
        mpfr_init(r38651);
        mpfr_init(r38652);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r38635, im, MPFR_RNDN);
        ;
        mpfr_pow(r38637, r38635, r38636, MPFR_RNDN);
        mpfr_mul(r38638, r38634, r38637, MPFR_RNDN);
        ;
        mpfr_mul(r38640, r38639, r38635, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38643, r38635, r38642, MPFR_RNDN);
        mpfr_mul(r38644, r38641, r38643, MPFR_RNDN);
        mpfr_add(r38645, r38640, r38644, MPFR_RNDN);
        mpfr_add(r38646, r38638, r38645, MPFR_RNDN);
        mpfr_neg(r38647, r38646, MPFR_RNDN);
        ;
        mpfr_set_d(r38649, re, MPFR_RNDN);
        mpfr_cos(r38650, r38649, MPFR_RNDN);
        mpfr_mul(r38651, r38648, r38650, MPFR_RNDN);
        mpfr_mul(r38652, r38647, r38651, MPFR_RNDN);
        return mpfr_get_d(r38652, MPFR_RNDN);
}

static mpfr_t r38653, r38654, r38655, r38656, r38657, r38658, r38659, r38660, r38661, r38662, r38663, r38664, r38665, r38666, r38667, r38668, r38669, r38670, r38671;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38653, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38654);
        mpfr_init_set_str(r38655, "5", 10, MPFR_RNDN);
        mpfr_init(r38656);
        mpfr_init(r38657);
        mpfr_init_set_str(r38658, "2", 10, MPFR_RNDN);
        mpfr_init(r38659);
        mpfr_init_set_str(r38660, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38661, "3", 10, MPFR_RNDN);
        mpfr_init(r38662);
        mpfr_init(r38663);
        mpfr_init(r38664);
        mpfr_init(r38665);
        mpfr_init(r38666);
        mpfr_init_set_str(r38667, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38668);
        mpfr_init(r38669);
        mpfr_init(r38670);
        mpfr_init(r38671);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r38654, im, MPFR_RNDN);
        ;
        mpfr_pow(r38656, r38654, r38655, MPFR_RNDN);
        mpfr_mul(r38657, r38653, r38656, MPFR_RNDN);
        ;
        mpfr_mul(r38659, r38658, r38654, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38662, r38654, r38661, MPFR_RNDN);
        mpfr_mul(r38663, r38660, r38662, MPFR_RNDN);
        mpfr_add(r38664, r38659, r38663, MPFR_RNDN);
        mpfr_add(r38665, r38657, r38664, MPFR_RNDN);
        mpfr_neg(r38666, r38665, MPFR_RNDN);
        ;
        mpfr_set_d(r38668, re, MPFR_RNDN);
        mpfr_cos(r38669, r38668, MPFR_RNDN);
        mpfr_mul(r38670, r38667, r38669, MPFR_RNDN);
        mpfr_mul(r38671, r38666, r38670, MPFR_RNDN);
        return mpfr_get_d(r38671, MPFR_RNDN);
}

