#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 r19801 = 0.5f;
        float r19802 = re;
        float r19803 = sin(r19802);
        float r19804 = r19801 * r19803;
        float r19805 = im;
        float r19806 = -r19805;
        float r19807 = exp(r19806);
        float r19808 = exp(r19805);
        float r19809 = r19807 - r19808;
        float r19810 = r19804 * r19809;
        return r19810;
}

double f_id(double re, double im) {
        double r19811 = 0.5;
        double r19812 = re;
        double r19813 = sin(r19812);
        double r19814 = r19811 * r19813;
        double r19815 = im;
        double r19816 = -r19815;
        double r19817 = exp(r19816);
        double r19818 = exp(r19815);
        double r19819 = r19817 - r19818;
        double r19820 = r19814 * r19819;
        return r19820;
}


double f_of(float re, float im) {
        float r19821 = 0.5f;
        float r19822 = re;
        float r19823 = sin(r19822);
        float r19824 = r19821 * r19823;
        float r19825 = 0.016666666666666666f;
        float r19826 = im;
        float r19827 = 5.0f;
        float r19828 = pow(r19826, r19827);
        float r19829 = r19825 * r19828;
        float r19830 = 2.0f;
        float r19831 = r19830 * r19826;
        float r19832 = 0.3333333333333333f;
        float r19833 = 3.0f;
        float r19834 = pow(r19826, r19833);
        float r19835 = r19832 * r19834;
        float r19836 = r19831 + r19835;
        float r19837 = r19829 + r19836;
        float r19838 = -r19837;
        float r19839 = r19824 * r19838;
        return r19839;
}

double f_od(double re, double im) {
        double r19840 = 0.5;
        double r19841 = re;
        double r19842 = sin(r19841);
        double r19843 = r19840 * r19842;
        double r19844 = 0.016666666666666666;
        double r19845 = im;
        double r19846 = 5.0;
        double r19847 = pow(r19845, r19846);
        double r19848 = r19844 * r19847;
        double r19849 = 2.0;
        double r19850 = r19849 * r19845;
        double r19851 = 0.3333333333333333;
        double r19852 = 3.0;
        double r19853 = pow(r19845, r19852);
        double r19854 = r19851 * r19853;
        double r19855 = r19850 + r19854;
        double r19856 = r19848 + r19855;
        double r19857 = -r19856;
        double r19858 = r19843 * r19857;
        return r19858;
}

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 r19859, r19860, r19861, r19862, r19863, r19864, r19865, r19866, r19867, r19868;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19859, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19860);
        mpfr_init(r19861);
        mpfr_init(r19862);
        mpfr_init(r19863);
        mpfr_init(r19864);
        mpfr_init(r19865);
        mpfr_init(r19866);
        mpfr_init(r19867);
        mpfr_init(r19868);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r19860, re, MPFR_RNDN);
        mpfr_sin(r19861, r19860, MPFR_RNDN);
        mpfr_mul(r19862, r19859, r19861, MPFR_RNDN);
        mpfr_set_d(r19863, im, MPFR_RNDN);
        mpfr_neg(r19864, r19863, MPFR_RNDN);
        mpfr_exp(r19865, r19864, MPFR_RNDN);
        mpfr_exp(r19866, r19863, MPFR_RNDN);
        mpfr_sub(r19867, r19865, r19866, MPFR_RNDN);
        mpfr_mul(r19868, r19862, r19867, MPFR_RNDN);
        return mpfr_get_d(r19868, MPFR_RNDN);
}

static mpfr_t r19869, r19870, r19871, r19872, r19873, r19874, r19875, r19876, r19877, r19878, r19879, r19880, r19881, r19882, r19883, r19884, r19885, r19886, r19887;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19869, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19870);
        mpfr_init(r19871);
        mpfr_init(r19872);
        mpfr_init_set_str(r19873, "1/60", 10, MPFR_RNDN);
        mpfr_init(r19874);
        mpfr_init_set_str(r19875, "5", 10, MPFR_RNDN);
        mpfr_init(r19876);
        mpfr_init(r19877);
        mpfr_init_set_str(r19878, "2", 10, MPFR_RNDN);
        mpfr_init(r19879);
        mpfr_init_set_str(r19880, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r19881, "3", 10, MPFR_RNDN);
        mpfr_init(r19882);
        mpfr_init(r19883);
        mpfr_init(r19884);
        mpfr_init(r19885);
        mpfr_init(r19886);
        mpfr_init(r19887);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r19870, re, MPFR_RNDN);
        mpfr_sin(r19871, r19870, MPFR_RNDN);
        mpfr_mul(r19872, r19869, r19871, MPFR_RNDN);
        ;
        mpfr_set_d(r19874, im, MPFR_RNDN);
        ;
        mpfr_pow(r19876, r19874, r19875, MPFR_RNDN);
        mpfr_mul(r19877, r19873, r19876, MPFR_RNDN);
        ;
        mpfr_mul(r19879, r19878, r19874, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r19882, r19874, r19881, MPFR_RNDN);
        mpfr_mul(r19883, r19880, r19882, MPFR_RNDN);
        mpfr_add(r19884, r19879, r19883, MPFR_RNDN);
        mpfr_add(r19885, r19877, r19884, MPFR_RNDN);
        mpfr_neg(r19886, r19885, MPFR_RNDN);
        mpfr_mul(r19887, r19872, r19886, MPFR_RNDN);
        return mpfr_get_d(r19887, MPFR_RNDN);
}

static mpfr_t r19888, r19889, r19890, r19891, r19892, r19893, r19894, r19895, r19896, r19897, r19898, r19899, r19900, r19901, r19902, r19903, r19904, r19905, r19906;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19888, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19889);
        mpfr_init(r19890);
        mpfr_init(r19891);
        mpfr_init_set_str(r19892, "1/60", 10, MPFR_RNDN);
        mpfr_init(r19893);
        mpfr_init_set_str(r19894, "5", 10, MPFR_RNDN);
        mpfr_init(r19895);
        mpfr_init(r19896);
        mpfr_init_set_str(r19897, "2", 10, MPFR_RNDN);
        mpfr_init(r19898);
        mpfr_init_set_str(r19899, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r19900, "3", 10, MPFR_RNDN);
        mpfr_init(r19901);
        mpfr_init(r19902);
        mpfr_init(r19903);
        mpfr_init(r19904);
        mpfr_init(r19905);
        mpfr_init(r19906);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r19889, re, MPFR_RNDN);
        mpfr_sin(r19890, r19889, MPFR_RNDN);
        mpfr_mul(r19891, r19888, r19890, MPFR_RNDN);
        ;
        mpfr_set_d(r19893, im, MPFR_RNDN);
        ;
        mpfr_pow(r19895, r19893, r19894, MPFR_RNDN);
        mpfr_mul(r19896, r19892, r19895, MPFR_RNDN);
        ;
        mpfr_mul(r19898, r19897, r19893, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r19901, r19893, r19900, MPFR_RNDN);
        mpfr_mul(r19902, r19899, r19901, MPFR_RNDN);
        mpfr_add(r19903, r19898, r19902, MPFR_RNDN);
        mpfr_add(r19904, r19896, r19903, MPFR_RNDN);
        mpfr_neg(r19905, r19904, MPFR_RNDN);
        mpfr_mul(r19906, r19891, r19905, MPFR_RNDN);
        return mpfr_get_d(r19906, MPFR_RNDN);
}

