#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 r38732 = 0.5;
        float r38733 = re;
        float r38734 = cos(r38733);
        float r38735 = r38732 * r38734;
        float r38736 = 0;
        float r38737 = im;
        float r38738 = r38736 - r38737;
        float r38739 = exp(r38738);
        float r38740 = exp(r38737);
        float r38741 = r38739 - r38740;
        float r38742 = r38735 * r38741;
        return r38742;
}

double f_id(double re, double im) {
        double r38743 = 0.5;
        double r38744 = re;
        double r38745 = cos(r38744);
        double r38746 = r38743 * r38745;
        double r38747 = 0;
        double r38748 = im;
        double r38749 = r38747 - r38748;
        double r38750 = exp(r38749);
        double r38751 = exp(r38748);
        double r38752 = r38750 - r38751;
        double r38753 = r38746 * r38752;
        return r38753;
}


double f_of(float re, float im) {
        float r38754 = 1/60;
        float r38755 = im;
        float r38756 = 5;
        float r38757 = pow(r38755, r38756);
        float r38758 = r38754 * r38757;
        float r38759 = 2;
        float r38760 = r38759 * r38755;
        float r38761 = 1/3;
        float r38762 = 3;
        float r38763 = pow(r38755, r38762);
        float r38764 = r38761 * r38763;
        float r38765 = r38760 + r38764;
        float r38766 = r38758 + r38765;
        float r38767 = -r38766;
        float r38768 = 0.5;
        float r38769 = re;
        float r38770 = cos(r38769);
        float r38771 = r38768 * r38770;
        float r38772 = r38767 * r38771;
        return r38772;
}

double f_od(double re, double im) {
        double r38773 = 1/60;
        double r38774 = im;
        double r38775 = 5;
        double r38776 = pow(r38774, r38775);
        double r38777 = r38773 * r38776;
        double r38778 = 2;
        double r38779 = r38778 * r38774;
        double r38780 = 1/3;
        double r38781 = 3;
        double r38782 = pow(r38774, r38781);
        double r38783 = r38780 * r38782;
        double r38784 = r38779 + r38783;
        double r38785 = r38777 + r38784;
        double r38786 = -r38785;
        double r38787 = 0.5;
        double r38788 = re;
        double r38789 = cos(r38788);
        double r38790 = r38787 * r38789;
        double r38791 = r38786 * r38790;
        return r38791;
}

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 r38792, r38793, r38794, r38795, r38796, r38797, r38798, r38799, r38800, r38801, r38802;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38792, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38793);
        mpfr_init(r38794);
        mpfr_init(r38795);
        mpfr_init_set_str(r38796, "0", 10, MPFR_RNDN);
        mpfr_init(r38797);
        mpfr_init(r38798);
        mpfr_init(r38799);
        mpfr_init(r38800);
        mpfr_init(r38801);
        mpfr_init(r38802);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r38793, re, MPFR_RNDN);
        mpfr_cos(r38794, r38793, MPFR_RNDN);
        mpfr_mul(r38795, r38792, r38794, MPFR_RNDN);
        ;
        mpfr_set_d(r38797, im, MPFR_RNDN);
        mpfr_sub(r38798, r38796, r38797, MPFR_RNDN);
        mpfr_exp(r38799, r38798, MPFR_RNDN);
        mpfr_exp(r38800, r38797, MPFR_RNDN);
        mpfr_sub(r38801, r38799, r38800, MPFR_RNDN);
        mpfr_mul(r38802, r38795, r38801, MPFR_RNDN);
        return mpfr_get_d(r38802, MPFR_RNDN);
}

static mpfr_t r38803, r38804, r38805, r38806, r38807, r38808, r38809, r38810, r38811, r38812, r38813, r38814, r38815, r38816, r38817, r38818, r38819, r38820, r38821;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38803, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38804);
        mpfr_init_set_str(r38805, "5", 10, MPFR_RNDN);
        mpfr_init(r38806);
        mpfr_init(r38807);
        mpfr_init_set_str(r38808, "2", 10, MPFR_RNDN);
        mpfr_init(r38809);
        mpfr_init_set_str(r38810, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38811, "3", 10, MPFR_RNDN);
        mpfr_init(r38812);
        mpfr_init(r38813);
        mpfr_init(r38814);
        mpfr_init(r38815);
        mpfr_init(r38816);
        mpfr_init_set_str(r38817, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38818);
        mpfr_init(r38819);
        mpfr_init(r38820);
        mpfr_init(r38821);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r38804, im, MPFR_RNDN);
        ;
        mpfr_pow(r38806, r38804, r38805, MPFR_RNDN);
        mpfr_mul(r38807, r38803, r38806, MPFR_RNDN);
        ;
        mpfr_mul(r38809, r38808, r38804, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38812, r38804, r38811, MPFR_RNDN);
        mpfr_mul(r38813, r38810, r38812, MPFR_RNDN);
        mpfr_add(r38814, r38809, r38813, MPFR_RNDN);
        mpfr_add(r38815, r38807, r38814, MPFR_RNDN);
        mpfr_neg(r38816, r38815, MPFR_RNDN);
        ;
        mpfr_set_d(r38818, re, MPFR_RNDN);
        mpfr_cos(r38819, r38818, MPFR_RNDN);
        mpfr_mul(r38820, r38817, r38819, MPFR_RNDN);
        mpfr_mul(r38821, r38816, r38820, MPFR_RNDN);
        return mpfr_get_d(r38821, MPFR_RNDN);
}

static mpfr_t r38822, r38823, r38824, r38825, r38826, r38827, r38828, r38829, r38830, r38831, r38832, r38833, r38834, r38835, r38836, r38837, r38838, r38839, r38840;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38822, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38823);
        mpfr_init_set_str(r38824, "5", 10, MPFR_RNDN);
        mpfr_init(r38825);
        mpfr_init(r38826);
        mpfr_init_set_str(r38827, "2", 10, MPFR_RNDN);
        mpfr_init(r38828);
        mpfr_init_set_str(r38829, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38830, "3", 10, MPFR_RNDN);
        mpfr_init(r38831);
        mpfr_init(r38832);
        mpfr_init(r38833);
        mpfr_init(r38834);
        mpfr_init(r38835);
        mpfr_init_set_str(r38836, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38837);
        mpfr_init(r38838);
        mpfr_init(r38839);
        mpfr_init(r38840);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r38823, im, MPFR_RNDN);
        ;
        mpfr_pow(r38825, r38823, r38824, MPFR_RNDN);
        mpfr_mul(r38826, r38822, r38825, MPFR_RNDN);
        ;
        mpfr_mul(r38828, r38827, r38823, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38831, r38823, r38830, MPFR_RNDN);
        mpfr_mul(r38832, r38829, r38831, MPFR_RNDN);
        mpfr_add(r38833, r38828, r38832, MPFR_RNDN);
        mpfr_add(r38834, r38826, r38833, MPFR_RNDN);
        mpfr_neg(r38835, r38834, MPFR_RNDN);
        ;
        mpfr_set_d(r38837, re, MPFR_RNDN);
        mpfr_cos(r38838, r38837, MPFR_RNDN);
        mpfr_mul(r38839, r38836, r38838, MPFR_RNDN);
        mpfr_mul(r38840, r38835, r38839, MPFR_RNDN);
        return mpfr_get_d(r38840, MPFR_RNDN);
}

