#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 r20065 = 0.5f;
        float r20066 = re;
        float r20067 = sin(r20066);
        float r20068 = r20065 * r20067;
        float r20069 = im;
        float r20070 = -r20069;
        float r20071 = exp(r20070);
        float r20072 = exp(r20069);
        float r20073 = r20071 - r20072;
        float r20074 = r20068 * r20073;
        return r20074;
}

double f_id(double re, double im) {
        double r20075 = 0.5;
        double r20076 = re;
        double r20077 = sin(r20076);
        double r20078 = r20075 * r20077;
        double r20079 = im;
        double r20080 = -r20079;
        double r20081 = exp(r20080);
        double r20082 = exp(r20079);
        double r20083 = r20081 - r20082;
        double r20084 = r20078 * r20083;
        return r20084;
}


double f_of(float re, float im) {
        float r20085 = 0.5f;
        float r20086 = re;
        float r20087 = sin(r20086);
        float r20088 = r20085 * r20087;
        float r20089 = 0.01666666753590107f;
        float r20090 = im;
        float r20091 = 5.0f;
        float r20092 = pow(r20090, r20091);
        float r20093 = r20089 * r20092;
        float r20094 = 2.0f;
        float r20095 = r20094 * r20090;
        float r20096 = 0.3333333432674408f;
        float r20097 = 3.0f;
        float r20098 = pow(r20090, r20097);
        float r20099 = r20096 * r20098;
        float r20100 = r20095 + r20099;
        float r20101 = r20093 + r20100;
        float r20102 = -r20101;
        float r20103 = r20088 * r20102;
        return r20103;
}

double f_od(double re, double im) {
        double r20104 = 0.5;
        double r20105 = re;
        double r20106 = sin(r20105);
        double r20107 = r20104 * r20106;
        double r20108 = 0.01666666753590107;
        double r20109 = im;
        double r20110 = 5.0;
        double r20111 = pow(r20109, r20110);
        double r20112 = r20108 * r20111;
        double r20113 = 2.0;
        double r20114 = r20113 * r20109;
        double r20115 = 0.3333333432674408;
        double r20116 = 3.0;
        double r20117 = pow(r20109, r20116);
        double r20118 = r20115 * r20117;
        double r20119 = r20114 + r20118;
        double r20120 = r20112 + r20119;
        double r20121 = -r20120;
        double r20122 = r20107 * r20121;
        return r20122;
}

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 r20123, r20124, r20125, r20126, r20127, r20128, r20129, r20130, r20131, r20132;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20123, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20124);
        mpfr_init(r20125);
        mpfr_init(r20126);
        mpfr_init(r20127);
        mpfr_init(r20128);
        mpfr_init(r20129);
        mpfr_init(r20130);
        mpfr_init(r20131);
        mpfr_init(r20132);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r20124, re, MPFR_RNDN);
        mpfr_sin(r20125, r20124, MPFR_RNDN);
        mpfr_mul(r20126, r20123, r20125, MPFR_RNDN);
        mpfr_set_d(r20127, im, MPFR_RNDN);
        mpfr_neg(r20128, r20127, MPFR_RNDN);
        mpfr_exp(r20129, r20128, MPFR_RNDN);
        mpfr_exp(r20130, r20127, MPFR_RNDN);
        mpfr_sub(r20131, r20129, r20130, MPFR_RNDN);
        mpfr_mul(r20132, r20126, r20131, MPFR_RNDN);
        return mpfr_get_d(r20132, MPFR_RNDN);
}

static mpfr_t r20133, r20134, r20135, r20136, r20137, r20138, r20139, r20140, r20141, r20142, r20143, r20144, r20145, r20146, r20147, r20148, r20149, r20150, r20151;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20133, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20134);
        mpfr_init(r20135);
        mpfr_init(r20136);
        mpfr_init_set_str(r20137, "1/60", 10, MPFR_RNDN);
        mpfr_init(r20138);
        mpfr_init_set_str(r20139, "5", 10, MPFR_RNDN);
        mpfr_init(r20140);
        mpfr_init(r20141);
        mpfr_init_set_str(r20142, "2", 10, MPFR_RNDN);
        mpfr_init(r20143);
        mpfr_init_set_str(r20144, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r20145, "3", 10, MPFR_RNDN);
        mpfr_init(r20146);
        mpfr_init(r20147);
        mpfr_init(r20148);
        mpfr_init(r20149);
        mpfr_init(r20150);
        mpfr_init(r20151);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r20134, re, MPFR_RNDN);
        mpfr_sin(r20135, r20134, MPFR_RNDN);
        mpfr_mul(r20136, r20133, r20135, MPFR_RNDN);
        ;
        mpfr_set_d(r20138, im, MPFR_RNDN);
        ;
        mpfr_pow(r20140, r20138, r20139, MPFR_RNDN);
        mpfr_mul(r20141, r20137, r20140, MPFR_RNDN);
        ;
        mpfr_mul(r20143, r20142, r20138, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r20146, r20138, r20145, MPFR_RNDN);
        mpfr_mul(r20147, r20144, r20146, MPFR_RNDN);
        mpfr_add(r20148, r20143, r20147, MPFR_RNDN);
        mpfr_add(r20149, r20141, r20148, MPFR_RNDN);
        mpfr_neg(r20150, r20149, MPFR_RNDN);
        mpfr_mul(r20151, r20136, r20150, MPFR_RNDN);
        return mpfr_get_d(r20151, MPFR_RNDN);
}

static mpfr_t r20152, r20153, r20154, r20155, r20156, r20157, r20158, r20159, r20160, r20161, r20162, r20163, r20164, r20165, r20166, r20167, r20168, r20169, r20170;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20152, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20153);
        mpfr_init(r20154);
        mpfr_init(r20155);
        mpfr_init_set_str(r20156, "1/60", 10, MPFR_RNDN);
        mpfr_init(r20157);
        mpfr_init_set_str(r20158, "5", 10, MPFR_RNDN);
        mpfr_init(r20159);
        mpfr_init(r20160);
        mpfr_init_set_str(r20161, "2", 10, MPFR_RNDN);
        mpfr_init(r20162);
        mpfr_init_set_str(r20163, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r20164, "3", 10, MPFR_RNDN);
        mpfr_init(r20165);
        mpfr_init(r20166);
        mpfr_init(r20167);
        mpfr_init(r20168);
        mpfr_init(r20169);
        mpfr_init(r20170);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r20153, re, MPFR_RNDN);
        mpfr_sin(r20154, r20153, MPFR_RNDN);
        mpfr_mul(r20155, r20152, r20154, MPFR_RNDN);
        ;
        mpfr_set_d(r20157, im, MPFR_RNDN);
        ;
        mpfr_pow(r20159, r20157, r20158, MPFR_RNDN);
        mpfr_mul(r20160, r20156, r20159, MPFR_RNDN);
        ;
        mpfr_mul(r20162, r20161, r20157, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r20165, r20157, r20164, MPFR_RNDN);
        mpfr_mul(r20166, r20163, r20165, MPFR_RNDN);
        mpfr_add(r20167, r20162, r20166, MPFR_RNDN);
        mpfr_add(r20168, r20160, r20167, MPFR_RNDN);
        mpfr_neg(r20169, r20168, MPFR_RNDN);
        mpfr_mul(r20170, r20155, r20169, MPFR_RNDN);
        return mpfr_get_d(r20170, MPFR_RNDN);
}

