#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 r11431 = 0.5f;
        float r11432 = re;
        float r11433 = sin(r11432);
        float r11434 = r11431 * r11433;
        float r11435 = im;
        float r11436 = -r11435;
        float r11437 = exp(r11436);
        float r11438 = exp(r11435);
        float r11439 = r11437 - r11438;
        float r11440 = r11434 * r11439;
        return r11440;
}

double f_id(double re, double im) {
        double r11441 = 0.5;
        double r11442 = re;
        double r11443 = sin(r11442);
        double r11444 = r11441 * r11443;
        double r11445 = im;
        double r11446 = -r11445;
        double r11447 = exp(r11446);
        double r11448 = exp(r11445);
        double r11449 = r11447 - r11448;
        double r11450 = r11444 * r11449;
        return r11450;
}


double f_of(float re, float im) {
        float r11451 = im;
        float r11452 = 2.0f;
        float r11453 = r11451 * r11452;
        float r11454 = 5.0f;
        float r11455 = pow(r11451, r11454);
        float r11456 = 0.016666666666666666f;
        float r11457 = r11455 * r11456;
        float r11458 = r11453 + r11457;
        float r11459 = 3.0f;
        float r11460 = pow(r11451, r11459);
        float r11461 = 0.3333333333333333f;
        float r11462 = r11460 * r11461;
        float r11463 = r11458 + r11462;
        float r11464 = re;
        float r11465 = sin(r11464);
        float r11466 = 0.5f;
        float r11467 = -r11466;
        float r11468 = r11465 * r11467;
        float r11469 = r11463 * r11468;
        return r11469;
}

double f_od(double re, double im) {
        double r11470 = im;
        double r11471 = 2.0;
        double r11472 = r11470 * r11471;
        double r11473 = 5.0;
        double r11474 = pow(r11470, r11473);
        double r11475 = 0.016666666666666666;
        double r11476 = r11474 * r11475;
        double r11477 = r11472 + r11476;
        double r11478 = 3.0;
        double r11479 = pow(r11470, r11478);
        double r11480 = 0.3333333333333333;
        double r11481 = r11479 * r11480;
        double r11482 = r11477 + r11481;
        double r11483 = re;
        double r11484 = sin(r11483);
        double r11485 = 0.5;
        double r11486 = -r11485;
        double r11487 = r11484 * r11486;
        double r11488 = r11482 * r11487;
        return r11488;
}

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 r11489, r11490, r11491, r11492, r11493, r11494, r11495, r11496, r11497, r11498;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11489, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11490);
        mpfr_init(r11491);
        mpfr_init(r11492);
        mpfr_init(r11493);
        mpfr_init(r11494);
        mpfr_init(r11495);
        mpfr_init(r11496);
        mpfr_init(r11497);
        mpfr_init(r11498);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r11490, re, MPFR_RNDN);
        mpfr_sin(r11491, r11490, MPFR_RNDN);
        mpfr_mul(r11492, r11489, r11491, MPFR_RNDN);
        mpfr_set_d(r11493, im, MPFR_RNDN);
        mpfr_neg(r11494, r11493, MPFR_RNDN);
        mpfr_exp(r11495, r11494, MPFR_RNDN);
        mpfr_exp(r11496, r11493, MPFR_RNDN);
        mpfr_sub(r11497, r11495, r11496, MPFR_RNDN);
        mpfr_mul(r11498, r11492, r11497, MPFR_RNDN);
        return mpfr_get_d(r11498, MPFR_RNDN);
}

static mpfr_t r11499, r11500, r11501, r11502, r11503, r11504, r11505, r11506, r11507, r11508, r11509, r11510, r11511, r11512, r11513, r11514, r11515, r11516, r11517;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11499);
        mpfr_init_set_str(r11500, "2", 10, MPFR_RNDN);
        mpfr_init(r11501);
        mpfr_init_set_str(r11502, "5", 10, MPFR_RNDN);
        mpfr_init(r11503);
        mpfr_init_set_str(r11504, "1/60", 10, MPFR_RNDN);
        mpfr_init(r11505);
        mpfr_init(r11506);
        mpfr_init_set_str(r11507, "3", 10, MPFR_RNDN);
        mpfr_init(r11508);
        mpfr_init_set_str(r11509, "1/3", 10, MPFR_RNDN);
        mpfr_init(r11510);
        mpfr_init(r11511);
        mpfr_init(r11512);
        mpfr_init(r11513);
        mpfr_init_set_str(r11514, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11515);
        mpfr_init(r11516);
        mpfr_init(r11517);
}

double f_fm(double re, double im) {
        mpfr_set_d(r11499, im, MPFR_RNDN);
        ;
        mpfr_mul(r11501, r11499, r11500, MPFR_RNDN);
        ;
        mpfr_pow(r11503, r11499, r11502, MPFR_RNDN);
        ;
        mpfr_mul(r11505, r11503, r11504, MPFR_RNDN);
        mpfr_add(r11506, r11501, r11505, MPFR_RNDN);
        ;
        mpfr_pow(r11508, r11499, r11507, MPFR_RNDN);
        ;
        mpfr_mul(r11510, r11508, r11509, MPFR_RNDN);
        mpfr_add(r11511, r11506, r11510, MPFR_RNDN);
        mpfr_set_d(r11512, re, MPFR_RNDN);
        mpfr_sin(r11513, r11512, MPFR_RNDN);
        ;
        mpfr_neg(r11515, r11514, MPFR_RNDN);
        mpfr_mul(r11516, r11513, r11515, MPFR_RNDN);
        mpfr_mul(r11517, r11511, r11516, MPFR_RNDN);
        return mpfr_get_d(r11517, MPFR_RNDN);
}

static mpfr_t r11518, r11519, r11520, r11521, r11522, r11523, r11524, r11525, r11526, r11527, r11528, r11529, r11530, r11531, r11532, r11533, r11534, r11535, r11536;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11518);
        mpfr_init_set_str(r11519, "2", 10, MPFR_RNDN);
        mpfr_init(r11520);
        mpfr_init_set_str(r11521, "5", 10, MPFR_RNDN);
        mpfr_init(r11522);
        mpfr_init_set_str(r11523, "1/60", 10, MPFR_RNDN);
        mpfr_init(r11524);
        mpfr_init(r11525);
        mpfr_init_set_str(r11526, "3", 10, MPFR_RNDN);
        mpfr_init(r11527);
        mpfr_init_set_str(r11528, "1/3", 10, MPFR_RNDN);
        mpfr_init(r11529);
        mpfr_init(r11530);
        mpfr_init(r11531);
        mpfr_init(r11532);
        mpfr_init_set_str(r11533, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11534);
        mpfr_init(r11535);
        mpfr_init(r11536);
}

double f_dm(double re, double im) {
        mpfr_set_d(r11518, im, MPFR_RNDN);
        ;
        mpfr_mul(r11520, r11518, r11519, MPFR_RNDN);
        ;
        mpfr_pow(r11522, r11518, r11521, MPFR_RNDN);
        ;
        mpfr_mul(r11524, r11522, r11523, MPFR_RNDN);
        mpfr_add(r11525, r11520, r11524, MPFR_RNDN);
        ;
        mpfr_pow(r11527, r11518, r11526, MPFR_RNDN);
        ;
        mpfr_mul(r11529, r11527, r11528, MPFR_RNDN);
        mpfr_add(r11530, r11525, r11529, MPFR_RNDN);
        mpfr_set_d(r11531, re, MPFR_RNDN);
        mpfr_sin(r11532, r11531, MPFR_RNDN);
        ;
        mpfr_neg(r11534, r11533, MPFR_RNDN);
        mpfr_mul(r11535, r11532, r11534, MPFR_RNDN);
        mpfr_mul(r11536, r11530, r11535, MPFR_RNDN);
        return mpfr_get_d(r11536, MPFR_RNDN);
}

