#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 r9503 = 0.5;
        float r9504 = re;
        float r9505 = cos(r9504);
        float r9506 = r9503 * r9505;
        float r9507 = im;
        float r9508 = -r9507;
        float r9509 = exp(r9508);
        float r9510 = exp(r9507);
        float r9511 = r9509 + r9510;
        float r9512 = r9506 * r9511;
        return r9512;
}

double f_id(double re, double im) {
        double r9513 = 0.5;
        double r9514 = re;
        double r9515 = cos(r9514);
        double r9516 = r9513 * r9515;
        double r9517 = im;
        double r9518 = -r9517;
        double r9519 = exp(r9518);
        double r9520 = exp(r9517);
        double r9521 = r9519 + r9520;
        double r9522 = r9516 * r9521;
        return r9522;
}


double f_of(float re, float im) {
        float r9523 = 0.5;
        float r9524 = re;
        float r9525 = cos(r9524);
        float r9526 = r9523 * r9525;
        float r9527 = im;
        float r9528 = -r9527;
        float r9529 = exp(r9528);
        float r9530 = exp(r9527);
        float r9531 = r9529 + r9530;
        float r9532 = r9526 * r9531;
        return r9532;
}

double f_od(double re, double im) {
        double r9533 = 0.5;
        double r9534 = re;
        double r9535 = cos(r9534);
        double r9536 = r9533 * r9535;
        double r9537 = im;
        double r9538 = -r9537;
        double r9539 = exp(r9538);
        double r9540 = exp(r9537);
        double r9541 = r9539 + r9540;
        double r9542 = r9536 * r9541;
        return r9542;
}

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 r9543, r9544, r9545, r9546, r9547, r9548, r9549, r9550, r9551, r9552;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9543, "0.5", 10, MPFR_RNDN);
        mpfr_init(r9544);
        mpfr_init(r9545);
        mpfr_init(r9546);
        mpfr_init(r9547);
        mpfr_init(r9548);
        mpfr_init(r9549);
        mpfr_init(r9550);
        mpfr_init(r9551);
        mpfr_init(r9552);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r9544, re, MPFR_RNDN);
        mpfr_cos(r9545, r9544, MPFR_RNDN);
        mpfr_mul(r9546, r9543, r9545, MPFR_RNDN);
        mpfr_set_d(r9547, im, MPFR_RNDN);
        mpfr_neg(r9548, r9547, MPFR_RNDN);
        mpfr_exp(r9549, r9548, MPFR_RNDN);
        mpfr_exp(r9550, r9547, MPFR_RNDN);
        mpfr_add(r9551, r9549, r9550, MPFR_RNDN);
        mpfr_mul(r9552, r9546, r9551, MPFR_RNDN);
        return mpfr_get_d(r9552, MPFR_RNDN);
}

static mpfr_t r9553, r9554, r9555, r9556, r9557, r9558, r9559, r9560, r9561, r9562;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9553, "0.5", 10, MPFR_RNDN);
        mpfr_init(r9554);
        mpfr_init(r9555);
        mpfr_init(r9556);
        mpfr_init(r9557);
        mpfr_init(r9558);
        mpfr_init(r9559);
        mpfr_init(r9560);
        mpfr_init(r9561);
        mpfr_init(r9562);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r9554, re, MPFR_RNDN);
        mpfr_cos(r9555, r9554, MPFR_RNDN);
        mpfr_mul(r9556, r9553, r9555, MPFR_RNDN);
        mpfr_set_d(r9557, im, MPFR_RNDN);
        mpfr_neg(r9558, r9557, MPFR_RNDN);
        mpfr_exp(r9559, r9558, MPFR_RNDN);
        mpfr_exp(r9560, r9557, MPFR_RNDN);
        mpfr_add(r9561, r9559, r9560, MPFR_RNDN);
        mpfr_mul(r9562, r9556, r9561, MPFR_RNDN);
        return mpfr_get_d(r9562, MPFR_RNDN);
}

static mpfr_t r9563, r9564, r9565, r9566, r9567, r9568, r9569, r9570, r9571, r9572;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9563, "0.5", 10, MPFR_RNDN);
        mpfr_init(r9564);
        mpfr_init(r9565);
        mpfr_init(r9566);
        mpfr_init(r9567);
        mpfr_init(r9568);
        mpfr_init(r9569);
        mpfr_init(r9570);
        mpfr_init(r9571);
        mpfr_init(r9572);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r9564, re, MPFR_RNDN);
        mpfr_cos(r9565, r9564, MPFR_RNDN);
        mpfr_mul(r9566, r9563, r9565, MPFR_RNDN);
        mpfr_set_d(r9567, im, MPFR_RNDN);
        mpfr_neg(r9568, r9567, MPFR_RNDN);
        mpfr_exp(r9569, r9568, MPFR_RNDN);
        mpfr_exp(r9570, r9567, MPFR_RNDN);
        mpfr_add(r9571, r9569, r9570, MPFR_RNDN);
        mpfr_mul(r9572, r9566, r9571, MPFR_RNDN);
        return mpfr_get_d(r9572, MPFR_RNDN);
}

