#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 r28662 = 0.5;
        float r28663 = re;
        float r28664 = sin(r28663);
        float r28665 = r28662 * r28664;
        float r28666 = im;
        float r28667 = -r28666;
        float r28668 = exp(r28667);
        float r28669 = exp(r28666);
        float r28670 = r28668 - r28669;
        float r28671 = r28665 * r28670;
        return r28671;
}

double f_id(double re, double im) {
        double r28672 = 0.5;
        double r28673 = re;
        double r28674 = sin(r28673);
        double r28675 = r28672 * r28674;
        double r28676 = im;
        double r28677 = -r28676;
        double r28678 = exp(r28677);
        double r28679 = exp(r28676);
        double r28680 = r28678 - r28679;
        double r28681 = r28675 * r28680;
        return r28681;
}


double f_of(float re, float im) {
        float r28682 = 0.5;
        float r28683 = re;
        float r28684 = sin(r28683);
        float r28685 = r28682 * r28684;
        float r28686 = 1/60;
        float r28687 = im;
        float r28688 = 5;
        float r28689 = pow(r28687, r28688);
        float r28690 = r28686 * r28689;
        float r28691 = 2;
        float r28692 = r28691 * r28687;
        float r28693 = 1/3;
        float r28694 = 3;
        float r28695 = pow(r28687, r28694);
        float r28696 = r28693 * r28695;
        float r28697 = r28692 + r28696;
        float r28698 = r28690 + r28697;
        float r28699 = -r28698;
        float r28700 = r28685 * r28699;
        return r28700;
}

double f_od(double re, double im) {
        double r28701 = 0.5;
        double r28702 = re;
        double r28703 = sin(r28702);
        double r28704 = r28701 * r28703;
        double r28705 = 1/60;
        double r28706 = im;
        double r28707 = 5;
        double r28708 = pow(r28706, r28707);
        double r28709 = r28705 * r28708;
        double r28710 = 2;
        double r28711 = r28710 * r28706;
        double r28712 = 1/3;
        double r28713 = 3;
        double r28714 = pow(r28706, r28713);
        double r28715 = r28712 * r28714;
        double r28716 = r28711 + r28715;
        double r28717 = r28709 + r28716;
        double r28718 = -r28717;
        double r28719 = r28704 * r28718;
        return r28719;
}

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 r28720, r28721, r28722, r28723, r28724, r28725, r28726, r28727, r28728, r28729;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28720, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28721);
        mpfr_init(r28722);
        mpfr_init(r28723);
        mpfr_init(r28724);
        mpfr_init(r28725);
        mpfr_init(r28726);
        mpfr_init(r28727);
        mpfr_init(r28728);
        mpfr_init(r28729);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r28721, re, MPFR_RNDN);
        mpfr_sin(r28722, r28721, MPFR_RNDN);
        mpfr_mul(r28723, r28720, r28722, MPFR_RNDN);
        mpfr_set_d(r28724, im, MPFR_RNDN);
        mpfr_neg(r28725, r28724, MPFR_RNDN);
        mpfr_exp(r28726, r28725, MPFR_RNDN);
        mpfr_exp(r28727, r28724, MPFR_RNDN);
        mpfr_sub(r28728, r28726, r28727, MPFR_RNDN);
        mpfr_mul(r28729, r28723, r28728, MPFR_RNDN);
        return mpfr_get_d(r28729, MPFR_RNDN);
}

static mpfr_t r28730, r28731, r28732, r28733, r28734, r28735, r28736, r28737, r28738, r28739, r28740, r28741, r28742, r28743, r28744, r28745, r28746, r28747, r28748;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28730, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28731);
        mpfr_init(r28732);
        mpfr_init(r28733);
        mpfr_init_set_str(r28734, "1/60", 10, MPFR_RNDN);
        mpfr_init(r28735);
        mpfr_init_set_str(r28736, "5", 10, MPFR_RNDN);
        mpfr_init(r28737);
        mpfr_init(r28738);
        mpfr_init_set_str(r28739, "2", 10, MPFR_RNDN);
        mpfr_init(r28740);
        mpfr_init_set_str(r28741, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28742, "3", 10, MPFR_RNDN);
        mpfr_init(r28743);
        mpfr_init(r28744);
        mpfr_init(r28745);
        mpfr_init(r28746);
        mpfr_init(r28747);
        mpfr_init(r28748);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r28731, re, MPFR_RNDN);
        mpfr_sin(r28732, r28731, MPFR_RNDN);
        mpfr_mul(r28733, r28730, r28732, MPFR_RNDN);
        ;
        mpfr_set_d(r28735, im, MPFR_RNDN);
        ;
        mpfr_pow(r28737, r28735, r28736, MPFR_RNDN);
        mpfr_mul(r28738, r28734, r28737, MPFR_RNDN);
        ;
        mpfr_mul(r28740, r28739, r28735, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28743, r28735, r28742, MPFR_RNDN);
        mpfr_mul(r28744, r28741, r28743, MPFR_RNDN);
        mpfr_add(r28745, r28740, r28744, MPFR_RNDN);
        mpfr_add(r28746, r28738, r28745, MPFR_RNDN);
        mpfr_neg(r28747, r28746, MPFR_RNDN);
        mpfr_mul(r28748, r28733, r28747, MPFR_RNDN);
        return mpfr_get_d(r28748, MPFR_RNDN);
}

static mpfr_t r28749, r28750, r28751, r28752, r28753, r28754, r28755, r28756, r28757, r28758, r28759, r28760, r28761, r28762, r28763, r28764, r28765, r28766, r28767;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28749, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28750);
        mpfr_init(r28751);
        mpfr_init(r28752);
        mpfr_init_set_str(r28753, "1/60", 10, MPFR_RNDN);
        mpfr_init(r28754);
        mpfr_init_set_str(r28755, "5", 10, MPFR_RNDN);
        mpfr_init(r28756);
        mpfr_init(r28757);
        mpfr_init_set_str(r28758, "2", 10, MPFR_RNDN);
        mpfr_init(r28759);
        mpfr_init_set_str(r28760, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28761, "3", 10, MPFR_RNDN);
        mpfr_init(r28762);
        mpfr_init(r28763);
        mpfr_init(r28764);
        mpfr_init(r28765);
        mpfr_init(r28766);
        mpfr_init(r28767);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r28750, re, MPFR_RNDN);
        mpfr_sin(r28751, r28750, MPFR_RNDN);
        mpfr_mul(r28752, r28749, r28751, MPFR_RNDN);
        ;
        mpfr_set_d(r28754, im, MPFR_RNDN);
        ;
        mpfr_pow(r28756, r28754, r28755, MPFR_RNDN);
        mpfr_mul(r28757, r28753, r28756, MPFR_RNDN);
        ;
        mpfr_mul(r28759, r28758, r28754, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28762, r28754, r28761, MPFR_RNDN);
        mpfr_mul(r28763, r28760, r28762, MPFR_RNDN);
        mpfr_add(r28764, r28759, r28763, MPFR_RNDN);
        mpfr_add(r28765, r28757, r28764, MPFR_RNDN);
        mpfr_neg(r28766, r28765, MPFR_RNDN);
        mpfr_mul(r28767, r28752, r28766, MPFR_RNDN);
        return mpfr_get_d(r28767, MPFR_RNDN);
}

