#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 r39042 = 0.5;
        float r39043 = re;
        float r39044 = sin(r39043);
        float r39045 = r39042 * r39044;
        float r39046 = im;
        float r39047 = -r39046;
        float r39048 = exp(r39047);
        float r39049 = exp(r39046);
        float r39050 = r39048 - r39049;
        float r39051 = r39045 * r39050;
        return r39051;
}

double f_id(double re, double im) {
        double r39052 = 0.5;
        double r39053 = re;
        double r39054 = sin(r39053);
        double r39055 = r39052 * r39054;
        double r39056 = im;
        double r39057 = -r39056;
        double r39058 = exp(r39057);
        double r39059 = exp(r39056);
        double r39060 = r39058 - r39059;
        double r39061 = r39055 * r39060;
        return r39061;
}


double f_of(float re, float im) {
        float r39062 = 0.5;
        float r39063 = re;
        float r39064 = sin(r39063);
        float r39065 = r39062 * r39064;
        float r39066 = 1/60;
        float r39067 = im;
        float r39068 = 5;
        float r39069 = pow(r39067, r39068);
        float r39070 = r39066 * r39069;
        float r39071 = 2;
        float r39072 = r39071 * r39067;
        float r39073 = 1/3;
        float r39074 = 3;
        float r39075 = pow(r39067, r39074);
        float r39076 = r39073 * r39075;
        float r39077 = r39072 + r39076;
        float r39078 = r39070 + r39077;
        float r39079 = -r39078;
        float r39080 = r39065 * r39079;
        return r39080;
}

double f_od(double re, double im) {
        double r39081 = 0.5;
        double r39082 = re;
        double r39083 = sin(r39082);
        double r39084 = r39081 * r39083;
        double r39085 = 1/60;
        double r39086 = im;
        double r39087 = 5;
        double r39088 = pow(r39086, r39087);
        double r39089 = r39085 * r39088;
        double r39090 = 2;
        double r39091 = r39090 * r39086;
        double r39092 = 1/3;
        double r39093 = 3;
        double r39094 = pow(r39086, r39093);
        double r39095 = r39092 * r39094;
        double r39096 = r39091 + r39095;
        double r39097 = r39089 + r39096;
        double r39098 = -r39097;
        double r39099 = r39084 * r39098;
        return r39099;
}

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 r39100, r39101, r39102, r39103, r39104, r39105, r39106, r39107, r39108, r39109;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r39100, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39101);
        mpfr_init(r39102);
        mpfr_init(r39103);
        mpfr_init(r39104);
        mpfr_init(r39105);
        mpfr_init(r39106);
        mpfr_init(r39107);
        mpfr_init(r39108);
        mpfr_init(r39109);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r39101, re, MPFR_RNDN);
        mpfr_sin(r39102, r39101, MPFR_RNDN);
        mpfr_mul(r39103, r39100, r39102, MPFR_RNDN);
        mpfr_set_d(r39104, im, MPFR_RNDN);
        mpfr_neg(r39105, r39104, MPFR_RNDN);
        mpfr_exp(r39106, r39105, MPFR_RNDN);
        mpfr_exp(r39107, r39104, MPFR_RNDN);
        mpfr_sub(r39108, r39106, r39107, MPFR_RNDN);
        mpfr_mul(r39109, r39103, r39108, MPFR_RNDN);
        return mpfr_get_d(r39109, MPFR_RNDN);
}

static mpfr_t r39110, r39111, r39112, r39113, r39114, r39115, r39116, r39117, r39118, r39119, r39120, r39121, r39122, r39123, r39124, r39125, r39126, r39127, r39128;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r39110, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39111);
        mpfr_init(r39112);
        mpfr_init(r39113);
        mpfr_init_set_str(r39114, "1/60", 10, MPFR_RNDN);
        mpfr_init(r39115);
        mpfr_init_set_str(r39116, "5", 10, MPFR_RNDN);
        mpfr_init(r39117);
        mpfr_init(r39118);
        mpfr_init_set_str(r39119, "2", 10, MPFR_RNDN);
        mpfr_init(r39120);
        mpfr_init_set_str(r39121, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r39122, "3", 10, MPFR_RNDN);
        mpfr_init(r39123);
        mpfr_init(r39124);
        mpfr_init(r39125);
        mpfr_init(r39126);
        mpfr_init(r39127);
        mpfr_init(r39128);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r39111, re, MPFR_RNDN);
        mpfr_sin(r39112, r39111, MPFR_RNDN);
        mpfr_mul(r39113, r39110, r39112, MPFR_RNDN);
        ;
        mpfr_set_d(r39115, im, MPFR_RNDN);
        ;
        mpfr_pow(r39117, r39115, r39116, MPFR_RNDN);
        mpfr_mul(r39118, r39114, r39117, MPFR_RNDN);
        ;
        mpfr_mul(r39120, r39119, r39115, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r39123, r39115, r39122, MPFR_RNDN);
        mpfr_mul(r39124, r39121, r39123, MPFR_RNDN);
        mpfr_add(r39125, r39120, r39124, MPFR_RNDN);
        mpfr_add(r39126, r39118, r39125, MPFR_RNDN);
        mpfr_neg(r39127, r39126, MPFR_RNDN);
        mpfr_mul(r39128, r39113, r39127, MPFR_RNDN);
        return mpfr_get_d(r39128, MPFR_RNDN);
}

static mpfr_t r39129, r39130, r39131, r39132, r39133, r39134, r39135, r39136, r39137, r39138, r39139, r39140, r39141, r39142, r39143, r39144, r39145, r39146, r39147;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r39129, "0.5", 10, MPFR_RNDN);
        mpfr_init(r39130);
        mpfr_init(r39131);
        mpfr_init(r39132);
        mpfr_init_set_str(r39133, "1/60", 10, MPFR_RNDN);
        mpfr_init(r39134);
        mpfr_init_set_str(r39135, "5", 10, MPFR_RNDN);
        mpfr_init(r39136);
        mpfr_init(r39137);
        mpfr_init_set_str(r39138, "2", 10, MPFR_RNDN);
        mpfr_init(r39139);
        mpfr_init_set_str(r39140, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r39141, "3", 10, MPFR_RNDN);
        mpfr_init(r39142);
        mpfr_init(r39143);
        mpfr_init(r39144);
        mpfr_init(r39145);
        mpfr_init(r39146);
        mpfr_init(r39147);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r39130, re, MPFR_RNDN);
        mpfr_sin(r39131, r39130, MPFR_RNDN);
        mpfr_mul(r39132, r39129, r39131, MPFR_RNDN);
        ;
        mpfr_set_d(r39134, im, MPFR_RNDN);
        ;
        mpfr_pow(r39136, r39134, r39135, MPFR_RNDN);
        mpfr_mul(r39137, r39133, r39136, MPFR_RNDN);
        ;
        mpfr_mul(r39139, r39138, r39134, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r39142, r39134, r39141, MPFR_RNDN);
        mpfr_mul(r39143, r39140, r39142, MPFR_RNDN);
        mpfr_add(r39144, r39139, r39143, MPFR_RNDN);
        mpfr_add(r39145, r39137, r39144, MPFR_RNDN);
        mpfr_neg(r39146, r39145, MPFR_RNDN);
        mpfr_mul(r39147, r39132, r39146, MPFR_RNDN);
        return mpfr_get_d(r39147, MPFR_RNDN);
}

