#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 r28092 = 0.5;
        float r28093 = re;
        float r28094 = sin(r28093);
        float r28095 = r28092 * r28094;
        float r28096 = im;
        float r28097 = -r28096;
        float r28098 = exp(r28097);
        float r28099 = exp(r28096);
        float r28100 = r28098 - r28099;
        float r28101 = r28095 * r28100;
        return r28101;
}

double f_id(double re, double im) {
        double r28102 = 0.5;
        double r28103 = re;
        double r28104 = sin(r28103);
        double r28105 = r28102 * r28104;
        double r28106 = im;
        double r28107 = -r28106;
        double r28108 = exp(r28107);
        double r28109 = exp(r28106);
        double r28110 = r28108 - r28109;
        double r28111 = r28105 * r28110;
        return r28111;
}


double f_of(float re, float im) {
        float r28112 = 0.5;
        float r28113 = re;
        float r28114 = sin(r28113);
        float r28115 = r28112 * r28114;
        float r28116 = 1/60;
        float r28117 = im;
        float r28118 = 5;
        float r28119 = pow(r28117, r28118);
        float r28120 = r28116 * r28119;
        float r28121 = 2;
        float r28122 = r28121 * r28117;
        float r28123 = 1/3;
        float r28124 = 3;
        float r28125 = pow(r28117, r28124);
        float r28126 = r28123 * r28125;
        float r28127 = r28122 + r28126;
        float r28128 = r28120 + r28127;
        float r28129 = -r28128;
        float r28130 = r28115 * r28129;
        return r28130;
}

double f_od(double re, double im) {
        double r28131 = 0.5;
        double r28132 = re;
        double r28133 = sin(r28132);
        double r28134 = r28131 * r28133;
        double r28135 = 1/60;
        double r28136 = im;
        double r28137 = 5;
        double r28138 = pow(r28136, r28137);
        double r28139 = r28135 * r28138;
        double r28140 = 2;
        double r28141 = r28140 * r28136;
        double r28142 = 1/3;
        double r28143 = 3;
        double r28144 = pow(r28136, r28143);
        double r28145 = r28142 * r28144;
        double r28146 = r28141 + r28145;
        double r28147 = r28139 + r28146;
        double r28148 = -r28147;
        double r28149 = r28134 * r28148;
        return r28149;
}

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 r28150, r28151, r28152, r28153, r28154, r28155, r28156, r28157, r28158, r28159;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28150, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28151);
        mpfr_init(r28152);
        mpfr_init(r28153);
        mpfr_init(r28154);
        mpfr_init(r28155);
        mpfr_init(r28156);
        mpfr_init(r28157);
        mpfr_init(r28158);
        mpfr_init(r28159);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r28151, re, MPFR_RNDN);
        mpfr_sin(r28152, r28151, MPFR_RNDN);
        mpfr_mul(r28153, r28150, r28152, MPFR_RNDN);
        mpfr_set_d(r28154, im, MPFR_RNDN);
        mpfr_neg(r28155, r28154, MPFR_RNDN);
        mpfr_exp(r28156, r28155, MPFR_RNDN);
        mpfr_exp(r28157, r28154, MPFR_RNDN);
        mpfr_sub(r28158, r28156, r28157, MPFR_RNDN);
        mpfr_mul(r28159, r28153, r28158, MPFR_RNDN);
        return mpfr_get_d(r28159, MPFR_RNDN);
}

static mpfr_t r28160, r28161, r28162, r28163, r28164, r28165, r28166, r28167, r28168, r28169, r28170, r28171, r28172, r28173, r28174, r28175, r28176, r28177, r28178;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28160, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28161);
        mpfr_init(r28162);
        mpfr_init(r28163);
        mpfr_init_set_str(r28164, "1/60", 10, MPFR_RNDN);
        mpfr_init(r28165);
        mpfr_init_set_str(r28166, "5", 10, MPFR_RNDN);
        mpfr_init(r28167);
        mpfr_init(r28168);
        mpfr_init_set_str(r28169, "2", 10, MPFR_RNDN);
        mpfr_init(r28170);
        mpfr_init_set_str(r28171, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28172, "3", 10, MPFR_RNDN);
        mpfr_init(r28173);
        mpfr_init(r28174);
        mpfr_init(r28175);
        mpfr_init(r28176);
        mpfr_init(r28177);
        mpfr_init(r28178);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r28161, re, MPFR_RNDN);
        mpfr_sin(r28162, r28161, MPFR_RNDN);
        mpfr_mul(r28163, r28160, r28162, MPFR_RNDN);
        ;
        mpfr_set_d(r28165, im, MPFR_RNDN);
        ;
        mpfr_pow(r28167, r28165, r28166, MPFR_RNDN);
        mpfr_mul(r28168, r28164, r28167, MPFR_RNDN);
        ;
        mpfr_mul(r28170, r28169, r28165, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28173, r28165, r28172, MPFR_RNDN);
        mpfr_mul(r28174, r28171, r28173, MPFR_RNDN);
        mpfr_add(r28175, r28170, r28174, MPFR_RNDN);
        mpfr_add(r28176, r28168, r28175, MPFR_RNDN);
        mpfr_neg(r28177, r28176, MPFR_RNDN);
        mpfr_mul(r28178, r28163, r28177, MPFR_RNDN);
        return mpfr_get_d(r28178, MPFR_RNDN);
}

static mpfr_t r28179, r28180, r28181, r28182, r28183, r28184, r28185, r28186, r28187, r28188, r28189, r28190, r28191, r28192, r28193, r28194, r28195, r28196, r28197;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28179, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28180);
        mpfr_init(r28181);
        mpfr_init(r28182);
        mpfr_init_set_str(r28183, "1/60", 10, MPFR_RNDN);
        mpfr_init(r28184);
        mpfr_init_set_str(r28185, "5", 10, MPFR_RNDN);
        mpfr_init(r28186);
        mpfr_init(r28187);
        mpfr_init_set_str(r28188, "2", 10, MPFR_RNDN);
        mpfr_init(r28189);
        mpfr_init_set_str(r28190, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28191, "3", 10, MPFR_RNDN);
        mpfr_init(r28192);
        mpfr_init(r28193);
        mpfr_init(r28194);
        mpfr_init(r28195);
        mpfr_init(r28196);
        mpfr_init(r28197);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r28180, re, MPFR_RNDN);
        mpfr_sin(r28181, r28180, MPFR_RNDN);
        mpfr_mul(r28182, r28179, r28181, MPFR_RNDN);
        ;
        mpfr_set_d(r28184, im, MPFR_RNDN);
        ;
        mpfr_pow(r28186, r28184, r28185, MPFR_RNDN);
        mpfr_mul(r28187, r28183, r28186, MPFR_RNDN);
        ;
        mpfr_mul(r28189, r28188, r28184, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28192, r28184, r28191, MPFR_RNDN);
        mpfr_mul(r28193, r28190, r28192, MPFR_RNDN);
        mpfr_add(r28194, r28189, r28193, MPFR_RNDN);
        mpfr_add(r28195, r28187, r28194, MPFR_RNDN);
        mpfr_neg(r28196, r28195, MPFR_RNDN);
        mpfr_mul(r28197, r28182, r28196, MPFR_RNDN);
        return mpfr_get_d(r28197, MPFR_RNDN);
}

