#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 r20205 = 0.5f;
        float r20206 = re;
        float r20207 = sin(r20206);
        float r20208 = r20205 * r20207;
        float r20209 = im;
        float r20210 = -r20209;
        float r20211 = exp(r20210);
        float r20212 = exp(r20209);
        float r20213 = r20211 - r20212;
        float r20214 = r20208 * r20213;
        return r20214;
}

double f_id(double re, double im) {
        double r20215 = 0.5;
        double r20216 = re;
        double r20217 = sin(r20216);
        double r20218 = r20215 * r20217;
        double r20219 = im;
        double r20220 = -r20219;
        double r20221 = exp(r20220);
        double r20222 = exp(r20219);
        double r20223 = r20221 - r20222;
        double r20224 = r20218 * r20223;
        return r20224;
}


double f_of(float re, float im) {
        float r20225 = 0.5f;
        float r20226 = re;
        float r20227 = sin(r20226);
        float r20228 = r20225 * r20227;
        float r20229 = 0.016666666666666666f;
        float r20230 = im;
        float r20231 = 5.0f;
        float r20232 = pow(r20230, r20231);
        float r20233 = r20229 * r20232;
        float r20234 = 2.0f;
        float r20235 = r20234 * r20230;
        float r20236 = 0.3333333333333333f;
        float r20237 = 3.0f;
        float r20238 = pow(r20230, r20237);
        float r20239 = r20236 * r20238;
        float r20240 = r20235 + r20239;
        float r20241 = r20233 + r20240;
        float r20242 = -r20241;
        float r20243 = r20228 * r20242;
        return r20243;
}

double f_od(double re, double im) {
        double r20244 = 0.5;
        double r20245 = re;
        double r20246 = sin(r20245);
        double r20247 = r20244 * r20246;
        double r20248 = 0.016666666666666666;
        double r20249 = im;
        double r20250 = 5.0;
        double r20251 = pow(r20249, r20250);
        double r20252 = r20248 * r20251;
        double r20253 = 2.0;
        double r20254 = r20253 * r20249;
        double r20255 = 0.3333333333333333;
        double r20256 = 3.0;
        double r20257 = pow(r20249, r20256);
        double r20258 = r20255 * r20257;
        double r20259 = r20254 + r20258;
        double r20260 = r20252 + r20259;
        double r20261 = -r20260;
        double r20262 = r20247 * r20261;
        return r20262;
}

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 r20263, r20264, r20265, r20266, r20267, r20268, r20269, r20270, r20271, r20272;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20263, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20264);
        mpfr_init(r20265);
        mpfr_init(r20266);
        mpfr_init(r20267);
        mpfr_init(r20268);
        mpfr_init(r20269);
        mpfr_init(r20270);
        mpfr_init(r20271);
        mpfr_init(r20272);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r20264, re, MPFR_RNDN);
        mpfr_sin(r20265, r20264, MPFR_RNDN);
        mpfr_mul(r20266, r20263, r20265, MPFR_RNDN);
        mpfr_set_d(r20267, im, MPFR_RNDN);
        mpfr_neg(r20268, r20267, MPFR_RNDN);
        mpfr_exp(r20269, r20268, MPFR_RNDN);
        mpfr_exp(r20270, r20267, MPFR_RNDN);
        mpfr_sub(r20271, r20269, r20270, MPFR_RNDN);
        mpfr_mul(r20272, r20266, r20271, MPFR_RNDN);
        return mpfr_get_d(r20272, MPFR_RNDN);
}

static mpfr_t r20273, r20274, r20275, r20276, r20277, r20278, r20279, r20280, r20281, r20282, r20283, r20284, r20285, r20286, r20287, r20288, r20289, r20290, r20291;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20273, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20274);
        mpfr_init(r20275);
        mpfr_init(r20276);
        mpfr_init_set_str(r20277, "1/60", 10, MPFR_RNDN);
        mpfr_init(r20278);
        mpfr_init_set_str(r20279, "5", 10, MPFR_RNDN);
        mpfr_init(r20280);
        mpfr_init(r20281);
        mpfr_init_set_str(r20282, "2", 10, MPFR_RNDN);
        mpfr_init(r20283);
        mpfr_init_set_str(r20284, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r20285, "3", 10, MPFR_RNDN);
        mpfr_init(r20286);
        mpfr_init(r20287);
        mpfr_init(r20288);
        mpfr_init(r20289);
        mpfr_init(r20290);
        mpfr_init(r20291);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r20274, re, MPFR_RNDN);
        mpfr_sin(r20275, r20274, MPFR_RNDN);
        mpfr_mul(r20276, r20273, r20275, MPFR_RNDN);
        ;
        mpfr_set_d(r20278, im, MPFR_RNDN);
        ;
        mpfr_pow(r20280, r20278, r20279, MPFR_RNDN);
        mpfr_mul(r20281, r20277, r20280, MPFR_RNDN);
        ;
        mpfr_mul(r20283, r20282, r20278, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r20286, r20278, r20285, MPFR_RNDN);
        mpfr_mul(r20287, r20284, r20286, MPFR_RNDN);
        mpfr_add(r20288, r20283, r20287, MPFR_RNDN);
        mpfr_add(r20289, r20281, r20288, MPFR_RNDN);
        mpfr_neg(r20290, r20289, MPFR_RNDN);
        mpfr_mul(r20291, r20276, r20290, MPFR_RNDN);
        return mpfr_get_d(r20291, MPFR_RNDN);
}

static mpfr_t r20292, r20293, r20294, r20295, r20296, r20297, r20298, r20299, r20300, r20301, r20302, r20303, r20304, r20305, r20306, r20307, r20308, r20309, r20310;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20292, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20293);
        mpfr_init(r20294);
        mpfr_init(r20295);
        mpfr_init_set_str(r20296, "1/60", 10, MPFR_RNDN);
        mpfr_init(r20297);
        mpfr_init_set_str(r20298, "5", 10, MPFR_RNDN);
        mpfr_init(r20299);
        mpfr_init(r20300);
        mpfr_init_set_str(r20301, "2", 10, MPFR_RNDN);
        mpfr_init(r20302);
        mpfr_init_set_str(r20303, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r20304, "3", 10, MPFR_RNDN);
        mpfr_init(r20305);
        mpfr_init(r20306);
        mpfr_init(r20307);
        mpfr_init(r20308);
        mpfr_init(r20309);
        mpfr_init(r20310);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r20293, re, MPFR_RNDN);
        mpfr_sin(r20294, r20293, MPFR_RNDN);
        mpfr_mul(r20295, r20292, r20294, MPFR_RNDN);
        ;
        mpfr_set_d(r20297, im, MPFR_RNDN);
        ;
        mpfr_pow(r20299, r20297, r20298, MPFR_RNDN);
        mpfr_mul(r20300, r20296, r20299, MPFR_RNDN);
        ;
        mpfr_mul(r20302, r20301, r20297, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r20305, r20297, r20304, MPFR_RNDN);
        mpfr_mul(r20306, r20303, r20305, MPFR_RNDN);
        mpfr_add(r20307, r20302, r20306, MPFR_RNDN);
        mpfr_add(r20308, r20300, r20307, MPFR_RNDN);
        mpfr_neg(r20309, r20308, MPFR_RNDN);
        mpfr_mul(r20310, r20295, r20309, MPFR_RNDN);
        return mpfr_get_d(r20310, MPFR_RNDN);
}

