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

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

double f_if(float re, float im) {
        float r38610 = 0.5;
        float r38611 = re;
        float r38612 = sin(r38611);
        float r38613 = r38610 * r38612;
        float r38614 = im;
        float r38615 = -r38614;
        float r38616 = exp(r38615);
        float r38617 = exp(r38614);
        float r38618 = r38616 - r38617;
        float r38619 = r38613 * r38618;
        return r38619;
}

double f_id(double re, double im) {
        double r38620 = 0.5;
        double r38621 = re;
        double r38622 = sin(r38621);
        double r38623 = r38620 * r38622;
        double r38624 = im;
        double r38625 = -r38624;
        double r38626 = exp(r38625);
        double r38627 = exp(r38624);
        double r38628 = r38626 - r38627;
        double r38629 = r38623 * r38628;
        return r38629;
}


double f_of(float re, float im) {
        float r38630 = 0.5;
        float r38631 = re;
        float r38632 = sin(r38631);
        float r38633 = r38630 * r38632;
        float r38634 = 1/60;
        float r38635 = im;
        float r38636 = 5;
        float r38637 = pow(r38635, r38636);
        float r38638 = r38634 * r38637;
        float r38639 = 2;
        float r38640 = r38639 * r38635;
        float r38641 = 1/3;
        float r38642 = 3;
        float r38643 = pow(r38635, r38642);
        float r38644 = r38641 * r38643;
        float r38645 = r38640 + r38644;
        float r38646 = r38638 + r38645;
        float r38647 = -r38646;
        float r38648 = r38633 * r38647;
        return r38648;
}

double f_od(double re, double im) {
        double r38649 = 0.5;
        double r38650 = re;
        double r38651 = sin(r38650);
        double r38652 = r38649 * r38651;
        double r38653 = 1/60;
        double r38654 = im;
        double r38655 = 5;
        double r38656 = pow(r38654, r38655);
        double r38657 = r38653 * r38656;
        double r38658 = 2;
        double r38659 = r38658 * r38654;
        double r38660 = 1/3;
        double r38661 = 3;
        double r38662 = pow(r38654, r38661);
        double r38663 = r38660 * r38662;
        double r38664 = r38659 + r38663;
        double r38665 = r38657 + r38664;
        double r38666 = -r38665;
        double r38667 = r38652 * r38666;
        return r38667;
}

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 r38668, r38669, r38670, r38671, r38672, r38673, r38674, r38675, r38676, r38677;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38668, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38669);
        mpfr_init(r38670);
        mpfr_init(r38671);
        mpfr_init(r38672);
        mpfr_init(r38673);
        mpfr_init(r38674);
        mpfr_init(r38675);
        mpfr_init(r38676);
        mpfr_init(r38677);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r38669, re, MPFR_RNDN);
        mpfr_sin(r38670, r38669, MPFR_RNDN);
        mpfr_mul(r38671, r38668, r38670, MPFR_RNDN);
        mpfr_set_d(r38672, im, MPFR_RNDN);
        mpfr_neg(r38673, r38672, MPFR_RNDN);
        mpfr_exp(r38674, r38673, MPFR_RNDN);
        mpfr_exp(r38675, r38672, MPFR_RNDN);
        mpfr_sub(r38676, r38674, r38675, MPFR_RNDN);
        mpfr_mul(r38677, r38671, r38676, MPFR_RNDN);
        return mpfr_get_d(r38677, MPFR_RNDN);
}

static mpfr_t r38678, r38679, r38680, r38681, r38682, r38683, r38684, r38685, r38686, r38687, r38688, r38689, r38690, r38691, r38692, r38693, r38694, r38695, r38696;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38678, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38679);
        mpfr_init(r38680);
        mpfr_init(r38681);
        mpfr_init_set_str(r38682, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38683);
        mpfr_init_set_str(r38684, "5", 10, MPFR_RNDN);
        mpfr_init(r38685);
        mpfr_init(r38686);
        mpfr_init_set_str(r38687, "2", 10, MPFR_RNDN);
        mpfr_init(r38688);
        mpfr_init_set_str(r38689, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38690, "3", 10, MPFR_RNDN);
        mpfr_init(r38691);
        mpfr_init(r38692);
        mpfr_init(r38693);
        mpfr_init(r38694);
        mpfr_init(r38695);
        mpfr_init(r38696);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r38679, re, MPFR_RNDN);
        mpfr_sin(r38680, r38679, MPFR_RNDN);
        mpfr_mul(r38681, r38678, r38680, MPFR_RNDN);
        ;
        mpfr_set_d(r38683, im, MPFR_RNDN);
        ;
        mpfr_pow(r38685, r38683, r38684, MPFR_RNDN);
        mpfr_mul(r38686, r38682, r38685, MPFR_RNDN);
        ;
        mpfr_mul(r38688, r38687, r38683, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38691, r38683, r38690, MPFR_RNDN);
        mpfr_mul(r38692, r38689, r38691, MPFR_RNDN);
        mpfr_add(r38693, r38688, r38692, MPFR_RNDN);
        mpfr_add(r38694, r38686, r38693, MPFR_RNDN);
        mpfr_neg(r38695, r38694, MPFR_RNDN);
        mpfr_mul(r38696, r38681, r38695, MPFR_RNDN);
        return mpfr_get_d(r38696, MPFR_RNDN);
}

static mpfr_t r38697, r38698, r38699, r38700, r38701, r38702, r38703, r38704, r38705, r38706, r38707, r38708, r38709, r38710, r38711, r38712, r38713, r38714, r38715;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38697, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38698);
        mpfr_init(r38699);
        mpfr_init(r38700);
        mpfr_init_set_str(r38701, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38702);
        mpfr_init_set_str(r38703, "5", 10, MPFR_RNDN);
        mpfr_init(r38704);
        mpfr_init(r38705);
        mpfr_init_set_str(r38706, "2", 10, MPFR_RNDN);
        mpfr_init(r38707);
        mpfr_init_set_str(r38708, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38709, "3", 10, MPFR_RNDN);
        mpfr_init(r38710);
        mpfr_init(r38711);
        mpfr_init(r38712);
        mpfr_init(r38713);
        mpfr_init(r38714);
        mpfr_init(r38715);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r38698, re, MPFR_RNDN);
        mpfr_sin(r38699, r38698, MPFR_RNDN);
        mpfr_mul(r38700, r38697, r38699, MPFR_RNDN);
        ;
        mpfr_set_d(r38702, im, MPFR_RNDN);
        ;
        mpfr_pow(r38704, r38702, r38703, MPFR_RNDN);
        mpfr_mul(r38705, r38701, r38704, MPFR_RNDN);
        ;
        mpfr_mul(r38707, r38706, r38702, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38710, r38702, r38709, MPFR_RNDN);
        mpfr_mul(r38711, r38708, r38710, MPFR_RNDN);
        mpfr_add(r38712, r38707, r38711, MPFR_RNDN);
        mpfr_add(r38713, r38705, r38712, MPFR_RNDN);
        mpfr_neg(r38714, r38713, MPFR_RNDN);
        mpfr_mul(r38715, r38700, r38714, MPFR_RNDN);
        return mpfr_get_d(r38715, MPFR_RNDN);
}

