#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "math.cos on complex, real part";

double f_if(float re, float im) {
        float r9181 = 0.5;
        float r9182 = re;
        float r9183 = cos(r9182);
        float r9184 = r9181 * r9183;
        float r9185 = im;
        float r9186 = -r9185;
        float r9187 = exp(r9186);
        float r9188 = exp(r9185);
        float r9189 = r9187 + r9188;
        float r9190 = r9184 * r9189;
        return r9190;
}

double f_id(double re, double im) {
        double r9191 = 0.5;
        double r9192 = re;
        double r9193 = cos(r9192);
        double r9194 = r9191 * r9193;
        double r9195 = im;
        double r9196 = -r9195;
        double r9197 = exp(r9196);
        double r9198 = exp(r9195);
        double r9199 = r9197 + r9198;
        double r9200 = r9194 * r9199;
        return r9200;
}


double f_of(float re, float im) {
        float r9201 = 0.5;
        float r9202 = re;
        float r9203 = cos(r9202);
        float r9204 = r9201 * r9203;
        float r9205 = im;
        float r9206 = -r9205;
        float r9207 = exp(r9206);
        float r9208 = exp(r9205);
        float r9209 = r9207 + r9208;
        float r9210 = r9204 * r9209;
        return r9210;
}

double f_od(double re, double im) {
        double r9211 = 0.5;
        double r9212 = re;
        double r9213 = cos(r9212);
        double r9214 = r9211 * r9213;
        double r9215 = im;
        double r9216 = -r9215;
        double r9217 = exp(r9216);
        double r9218 = exp(r9215);
        double r9219 = r9217 + r9218;
        double r9220 = r9214 * r9219;
        return r9220;
}

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 r9221, r9222, r9223, r9224, r9225, r9226, r9227, r9228, r9229, r9230;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9221, "0.5", 10, MPFR_RNDN);
        mpfr_init(r9222);
        mpfr_init(r9223);
        mpfr_init(r9224);
        mpfr_init(r9225);
        mpfr_init(r9226);
        mpfr_init(r9227);
        mpfr_init(r9228);
        mpfr_init(r9229);
        mpfr_init(r9230);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r9222, re, MPFR_RNDN);
        mpfr_cos(r9223, r9222, MPFR_RNDN);
        mpfr_mul(r9224, r9221, r9223, MPFR_RNDN);
        mpfr_set_d(r9225, im, MPFR_RNDN);
        mpfr_neg(r9226, r9225, MPFR_RNDN);
        mpfr_exp(r9227, r9226, MPFR_RNDN);
        mpfr_exp(r9228, r9225, MPFR_RNDN);
        mpfr_add(r9229, r9227, r9228, MPFR_RNDN);
        mpfr_mul(r9230, r9224, r9229, MPFR_RNDN);
        return mpfr_get_d(r9230, MPFR_RNDN);
}

static mpfr_t r9231, r9232, r9233, r9234, r9235, r9236, r9237, r9238, r9239, r9240;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9231, "0.5", 10, MPFR_RNDN);
        mpfr_init(r9232);
        mpfr_init(r9233);
        mpfr_init(r9234);
        mpfr_init(r9235);
        mpfr_init(r9236);
        mpfr_init(r9237);
        mpfr_init(r9238);
        mpfr_init(r9239);
        mpfr_init(r9240);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r9232, re, MPFR_RNDN);
        mpfr_cos(r9233, r9232, MPFR_RNDN);
        mpfr_mul(r9234, r9231, r9233, MPFR_RNDN);
        mpfr_set_d(r9235, im, MPFR_RNDN);
        mpfr_neg(r9236, r9235, MPFR_RNDN);
        mpfr_exp(r9237, r9236, MPFR_RNDN);
        mpfr_exp(r9238, r9235, MPFR_RNDN);
        mpfr_add(r9239, r9237, r9238, MPFR_RNDN);
        mpfr_mul(r9240, r9234, r9239, MPFR_RNDN);
        return mpfr_get_d(r9240, MPFR_RNDN);
}

static mpfr_t r9241, r9242, r9243, r9244, r9245, r9246, r9247, r9248, r9249, r9250;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9241, "0.5", 10, MPFR_RNDN);
        mpfr_init(r9242);
        mpfr_init(r9243);
        mpfr_init(r9244);
        mpfr_init(r9245);
        mpfr_init(r9246);
        mpfr_init(r9247);
        mpfr_init(r9248);
        mpfr_init(r9249);
        mpfr_init(r9250);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r9242, re, MPFR_RNDN);
        mpfr_cos(r9243, r9242, MPFR_RNDN);
        mpfr_mul(r9244, r9241, r9243, MPFR_RNDN);
        mpfr_set_d(r9245, im, MPFR_RNDN);
        mpfr_neg(r9246, r9245, MPFR_RNDN);
        mpfr_exp(r9247, r9246, MPFR_RNDN);
        mpfr_exp(r9248, r9245, MPFR_RNDN);
        mpfr_add(r9249, r9247, r9248, MPFR_RNDN);
        mpfr_mul(r9250, r9244, r9249, MPFR_RNDN);
        return mpfr_get_d(r9250, MPFR_RNDN);
}

