#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 r12685 = 0.5;
        float r12686 = re;
        float r12687 = sin(r12686);
        float r12688 = r12685 * r12687;
        float r12689 = im;
        float r12690 = -r12689;
        float r12691 = exp(r12690);
        float r12692 = exp(r12689);
        float r12693 = r12691 - r12692;
        float r12694 = r12688 * r12693;
        return r12694;
}

double f_id(double re, double im) {
        double r12695 = 0.5;
        double r12696 = re;
        double r12697 = sin(r12696);
        double r12698 = r12695 * r12697;
        double r12699 = im;
        double r12700 = -r12699;
        double r12701 = exp(r12700);
        double r12702 = exp(r12699);
        double r12703 = r12701 - r12702;
        double r12704 = r12698 * r12703;
        return r12704;
}


double f_of(float re, float im) {
        float r12705 = 0.5;
        float r12706 = re;
        float r12707 = sin(r12706);
        float r12708 = r12705 * r12707;
        float r12709 = 1/3;
        float r12710 = im;
        float r12711 = 3;
        float r12712 = pow(r12710, r12711);
        float r12713 = r12709 * r12712;
        float r12714 = 1/60;
        float r12715 = 5;
        float r12716 = pow(r12710, r12715);
        float r12717 = r12714 * r12716;
        float r12718 = 2;
        float r12719 = r12718 * r12710;
        float r12720 = r12717 + r12719;
        float r12721 = r12713 + r12720;
        float r12722 = -r12721;
        float r12723 = r12708 * r12722;
        return r12723;
}

double f_od(double re, double im) {
        double r12724 = 0.5;
        double r12725 = re;
        double r12726 = sin(r12725);
        double r12727 = r12724 * r12726;
        double r12728 = 1/3;
        double r12729 = im;
        double r12730 = 3;
        double r12731 = pow(r12729, r12730);
        double r12732 = r12728 * r12731;
        double r12733 = 1/60;
        double r12734 = 5;
        double r12735 = pow(r12729, r12734);
        double r12736 = r12733 * r12735;
        double r12737 = 2;
        double r12738 = r12737 * r12729;
        double r12739 = r12736 + r12738;
        double r12740 = r12732 + r12739;
        double r12741 = -r12740;
        double r12742 = r12727 * r12741;
        return r12742;
}

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 r12743, r12744, r12745, r12746, r12747, r12748, r12749, r12750, r12751, r12752;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r12743, "0.5", 10, MPFR_RNDN);
        mpfr_init(r12744);
        mpfr_init(r12745);
        mpfr_init(r12746);
        mpfr_init(r12747);
        mpfr_init(r12748);
        mpfr_init(r12749);
        mpfr_init(r12750);
        mpfr_init(r12751);
        mpfr_init(r12752);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r12744, re, MPFR_RNDN);
        mpfr_sin(r12745, r12744, MPFR_RNDN);
        mpfr_mul(r12746, r12743, r12745, MPFR_RNDN);
        mpfr_set_d(r12747, im, MPFR_RNDN);
        mpfr_neg(r12748, r12747, MPFR_RNDN);
        mpfr_exp(r12749, r12748, MPFR_RNDN);
        mpfr_exp(r12750, r12747, MPFR_RNDN);
        mpfr_sub(r12751, r12749, r12750, MPFR_RNDN);
        mpfr_mul(r12752, r12746, r12751, MPFR_RNDN);
        return mpfr_get_d(r12752, MPFR_RNDN);
}

static mpfr_t r12753, r12754, r12755, r12756, r12757, r12758, r12759, r12760, r12761, r12762, r12763, r12764, r12765, r12766, r12767, r12768, r12769, r12770, r12771;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r12753, "0.5", 10, MPFR_RNDN);
        mpfr_init(r12754);
        mpfr_init(r12755);
        mpfr_init(r12756);
        mpfr_init_set_str(r12757, "1/3", 10, MPFR_RNDN);
        mpfr_init(r12758);
        mpfr_init_set_str(r12759, "3", 10, MPFR_RNDN);
        mpfr_init(r12760);
        mpfr_init(r12761);
        mpfr_init_set_str(r12762, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r12763, "5", 10, MPFR_RNDN);
        mpfr_init(r12764);
        mpfr_init(r12765);
        mpfr_init_set_str(r12766, "2", 10, MPFR_RNDN);
        mpfr_init(r12767);
        mpfr_init(r12768);
        mpfr_init(r12769);
        mpfr_init(r12770);
        mpfr_init(r12771);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r12754, re, MPFR_RNDN);
        mpfr_sin(r12755, r12754, MPFR_RNDN);
        mpfr_mul(r12756, r12753, r12755, MPFR_RNDN);
        ;
        mpfr_set_d(r12758, im, MPFR_RNDN);
        ;
        mpfr_pow(r12760, r12758, r12759, MPFR_RNDN);
        mpfr_mul(r12761, r12757, r12760, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r12764, r12758, r12763, MPFR_RNDN);
        mpfr_mul(r12765, r12762, r12764, MPFR_RNDN);
        ;
        mpfr_mul(r12767, r12766, r12758, MPFR_RNDN);
        mpfr_add(r12768, r12765, r12767, MPFR_RNDN);
        mpfr_add(r12769, r12761, r12768, MPFR_RNDN);
        mpfr_neg(r12770, r12769, MPFR_RNDN);
        mpfr_mul(r12771, r12756, r12770, MPFR_RNDN);
        return mpfr_get_d(r12771, MPFR_RNDN);
}

static mpfr_t r12772, r12773, r12774, r12775, r12776, r12777, r12778, r12779, r12780, r12781, r12782, r12783, r12784, r12785, r12786, r12787, r12788, r12789, r12790;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r12772, "0.5", 10, MPFR_RNDN);
        mpfr_init(r12773);
        mpfr_init(r12774);
        mpfr_init(r12775);
        mpfr_init_set_str(r12776, "1/3", 10, MPFR_RNDN);
        mpfr_init(r12777);
        mpfr_init_set_str(r12778, "3", 10, MPFR_RNDN);
        mpfr_init(r12779);
        mpfr_init(r12780);
        mpfr_init_set_str(r12781, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r12782, "5", 10, MPFR_RNDN);
        mpfr_init(r12783);
        mpfr_init(r12784);
        mpfr_init_set_str(r12785, "2", 10, MPFR_RNDN);
        mpfr_init(r12786);
        mpfr_init(r12787);
        mpfr_init(r12788);
        mpfr_init(r12789);
        mpfr_init(r12790);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r12773, re, MPFR_RNDN);
        mpfr_sin(r12774, r12773, MPFR_RNDN);
        mpfr_mul(r12775, r12772, r12774, MPFR_RNDN);
        ;
        mpfr_set_d(r12777, im, MPFR_RNDN);
        ;
        mpfr_pow(r12779, r12777, r12778, MPFR_RNDN);
        mpfr_mul(r12780, r12776, r12779, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r12783, r12777, r12782, MPFR_RNDN);
        mpfr_mul(r12784, r12781, r12783, MPFR_RNDN);
        ;
        mpfr_mul(r12786, r12785, r12777, MPFR_RNDN);
        mpfr_add(r12787, r12784, r12786, MPFR_RNDN);
        mpfr_add(r12788, r12780, r12787, MPFR_RNDN);
        mpfr_neg(r12789, r12788, MPFR_RNDN);
        mpfr_mul(r12790, r12775, r12789, MPFR_RNDN);
        return mpfr_get_d(r12790, MPFR_RNDN);
}

