#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 r38693 = 0.5;
        float r38694 = re;
        float r38695 = sin(r38694);
        float r38696 = r38693 * r38695;
        float r38697 = im;
        float r38698 = -r38697;
        float r38699 = exp(r38698);
        float r38700 = exp(r38697);
        float r38701 = r38699 - r38700;
        float r38702 = r38696 * r38701;
        return r38702;
}

double f_id(double re, double im) {
        double r38703 = 0.5;
        double r38704 = re;
        double r38705 = sin(r38704);
        double r38706 = r38703 * r38705;
        double r38707 = im;
        double r38708 = -r38707;
        double r38709 = exp(r38708);
        double r38710 = exp(r38707);
        double r38711 = r38709 - r38710;
        double r38712 = r38706 * r38711;
        return r38712;
}


double f_of(float re, float im) {
        float r38713 = 0.5;
        float r38714 = re;
        float r38715 = sin(r38714);
        float r38716 = r38713 * r38715;
        float r38717 = 1/60;
        float r38718 = im;
        float r38719 = 5;
        float r38720 = pow(r38718, r38719);
        float r38721 = r38717 * r38720;
        float r38722 = 2;
        float r38723 = r38722 * r38718;
        float r38724 = 1/3;
        float r38725 = 3;
        float r38726 = pow(r38718, r38725);
        float r38727 = r38724 * r38726;
        float r38728 = r38723 + r38727;
        float r38729 = r38721 + r38728;
        float r38730 = -r38729;
        float r38731 = r38716 * r38730;
        return r38731;
}

double f_od(double re, double im) {
        double r38732 = 0.5;
        double r38733 = re;
        double r38734 = sin(r38733);
        double r38735 = r38732 * r38734;
        double r38736 = 1/60;
        double r38737 = im;
        double r38738 = 5;
        double r38739 = pow(r38737, r38738);
        double r38740 = r38736 * r38739;
        double r38741 = 2;
        double r38742 = r38741 * r38737;
        double r38743 = 1/3;
        double r38744 = 3;
        double r38745 = pow(r38737, r38744);
        double r38746 = r38743 * r38745;
        double r38747 = r38742 + r38746;
        double r38748 = r38740 + r38747;
        double r38749 = -r38748;
        double r38750 = r38735 * r38749;
        return r38750;
}

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 r38751, r38752, r38753, r38754, r38755, r38756, r38757, r38758, r38759, r38760;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38751, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38752);
        mpfr_init(r38753);
        mpfr_init(r38754);
        mpfr_init(r38755);
        mpfr_init(r38756);
        mpfr_init(r38757);
        mpfr_init(r38758);
        mpfr_init(r38759);
        mpfr_init(r38760);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r38752, re, MPFR_RNDN);
        mpfr_sin(r38753, r38752, MPFR_RNDN);
        mpfr_mul(r38754, r38751, r38753, MPFR_RNDN);
        mpfr_set_d(r38755, im, MPFR_RNDN);
        mpfr_neg(r38756, r38755, MPFR_RNDN);
        mpfr_exp(r38757, r38756, MPFR_RNDN);
        mpfr_exp(r38758, r38755, MPFR_RNDN);
        mpfr_sub(r38759, r38757, r38758, MPFR_RNDN);
        mpfr_mul(r38760, r38754, r38759, MPFR_RNDN);
        return mpfr_get_d(r38760, MPFR_RNDN);
}

static mpfr_t r38761, r38762, r38763, r38764, r38765, r38766, r38767, r38768, r38769, r38770, r38771, r38772, r38773, r38774, r38775, r38776, r38777, r38778, r38779;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38761, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38762);
        mpfr_init(r38763);
        mpfr_init(r38764);
        mpfr_init_set_str(r38765, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38766);
        mpfr_init_set_str(r38767, "5", 10, MPFR_RNDN);
        mpfr_init(r38768);
        mpfr_init(r38769);
        mpfr_init_set_str(r38770, "2", 10, MPFR_RNDN);
        mpfr_init(r38771);
        mpfr_init_set_str(r38772, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38773, "3", 10, MPFR_RNDN);
        mpfr_init(r38774);
        mpfr_init(r38775);
        mpfr_init(r38776);
        mpfr_init(r38777);
        mpfr_init(r38778);
        mpfr_init(r38779);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r38762, re, MPFR_RNDN);
        mpfr_sin(r38763, r38762, MPFR_RNDN);
        mpfr_mul(r38764, r38761, r38763, MPFR_RNDN);
        ;
        mpfr_set_d(r38766, im, MPFR_RNDN);
        ;
        mpfr_pow(r38768, r38766, r38767, MPFR_RNDN);
        mpfr_mul(r38769, r38765, r38768, MPFR_RNDN);
        ;
        mpfr_mul(r38771, r38770, r38766, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38774, r38766, r38773, MPFR_RNDN);
        mpfr_mul(r38775, r38772, r38774, MPFR_RNDN);
        mpfr_add(r38776, r38771, r38775, MPFR_RNDN);
        mpfr_add(r38777, r38769, r38776, MPFR_RNDN);
        mpfr_neg(r38778, r38777, MPFR_RNDN);
        mpfr_mul(r38779, r38764, r38778, MPFR_RNDN);
        return mpfr_get_d(r38779, MPFR_RNDN);
}

static mpfr_t r38780, r38781, r38782, r38783, r38784, r38785, r38786, r38787, r38788, r38789, r38790, r38791, r38792, r38793, r38794, r38795, r38796, r38797, r38798;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38780, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38781);
        mpfr_init(r38782);
        mpfr_init(r38783);
        mpfr_init_set_str(r38784, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38785);
        mpfr_init_set_str(r38786, "5", 10, MPFR_RNDN);
        mpfr_init(r38787);
        mpfr_init(r38788);
        mpfr_init_set_str(r38789, "2", 10, MPFR_RNDN);
        mpfr_init(r38790);
        mpfr_init_set_str(r38791, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38792, "3", 10, MPFR_RNDN);
        mpfr_init(r38793);
        mpfr_init(r38794);
        mpfr_init(r38795);
        mpfr_init(r38796);
        mpfr_init(r38797);
        mpfr_init(r38798);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r38781, re, MPFR_RNDN);
        mpfr_sin(r38782, r38781, MPFR_RNDN);
        mpfr_mul(r38783, r38780, r38782, MPFR_RNDN);
        ;
        mpfr_set_d(r38785, im, MPFR_RNDN);
        ;
        mpfr_pow(r38787, r38785, r38786, MPFR_RNDN);
        mpfr_mul(r38788, r38784, r38787, MPFR_RNDN);
        ;
        mpfr_mul(r38790, r38789, r38785, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38793, r38785, r38792, MPFR_RNDN);
        mpfr_mul(r38794, r38791, r38793, MPFR_RNDN);
        mpfr_add(r38795, r38790, r38794, MPFR_RNDN);
        mpfr_add(r38796, r38788, r38795, MPFR_RNDN);
        mpfr_neg(r38797, r38796, MPFR_RNDN);
        mpfr_mul(r38798, r38783, r38797, MPFR_RNDN);
        return mpfr_get_d(r38798, MPFR_RNDN);
}

