#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 r28361 = 0.5;
        float r28362 = re;
        float r28363 = sin(r28362);
        float r28364 = r28361 * r28363;
        float r28365 = im;
        float r28366 = -r28365;
        float r28367 = exp(r28366);
        float r28368 = exp(r28365);
        float r28369 = r28367 - r28368;
        float r28370 = r28364 * r28369;
        return r28370;
}

double f_id(double re, double im) {
        double r28371 = 0.5;
        double r28372 = re;
        double r28373 = sin(r28372);
        double r28374 = r28371 * r28373;
        double r28375 = im;
        double r28376 = -r28375;
        double r28377 = exp(r28376);
        double r28378 = exp(r28375);
        double r28379 = r28377 - r28378;
        double r28380 = r28374 * r28379;
        return r28380;
}


double f_of(float re, float im) {
        float r28381 = 0.5;
        float r28382 = re;
        float r28383 = sin(r28382);
        float r28384 = r28381 * r28383;
        float r28385 = 1/60;
        float r28386 = im;
        float r28387 = 5;
        float r28388 = pow(r28386, r28387);
        float r28389 = r28385 * r28388;
        float r28390 = 2;
        float r28391 = r28390 * r28386;
        float r28392 = 1/3;
        float r28393 = 3;
        float r28394 = pow(r28386, r28393);
        float r28395 = r28392 * r28394;
        float r28396 = r28391 + r28395;
        float r28397 = r28389 + r28396;
        float r28398 = -r28397;
        float r28399 = r28384 * r28398;
        return r28399;
}

double f_od(double re, double im) {
        double r28400 = 0.5;
        double r28401 = re;
        double r28402 = sin(r28401);
        double r28403 = r28400 * r28402;
        double r28404 = 1/60;
        double r28405 = im;
        double r28406 = 5;
        double r28407 = pow(r28405, r28406);
        double r28408 = r28404 * r28407;
        double r28409 = 2;
        double r28410 = r28409 * r28405;
        double r28411 = 1/3;
        double r28412 = 3;
        double r28413 = pow(r28405, r28412);
        double r28414 = r28411 * r28413;
        double r28415 = r28410 + r28414;
        double r28416 = r28408 + r28415;
        double r28417 = -r28416;
        double r28418 = r28403 * r28417;
        return r28418;
}

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 r28419, r28420, r28421, r28422, r28423, r28424, r28425, r28426, r28427, r28428;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28419, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28420);
        mpfr_init(r28421);
        mpfr_init(r28422);
        mpfr_init(r28423);
        mpfr_init(r28424);
        mpfr_init(r28425);
        mpfr_init(r28426);
        mpfr_init(r28427);
        mpfr_init(r28428);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r28420, re, MPFR_RNDN);
        mpfr_sin(r28421, r28420, MPFR_RNDN);
        mpfr_mul(r28422, r28419, r28421, MPFR_RNDN);
        mpfr_set_d(r28423, im, MPFR_RNDN);
        mpfr_neg(r28424, r28423, MPFR_RNDN);
        mpfr_exp(r28425, r28424, MPFR_RNDN);
        mpfr_exp(r28426, r28423, MPFR_RNDN);
        mpfr_sub(r28427, r28425, r28426, MPFR_RNDN);
        mpfr_mul(r28428, r28422, r28427, MPFR_RNDN);
        return mpfr_get_d(r28428, MPFR_RNDN);
}

static mpfr_t r28429, r28430, r28431, r28432, r28433, r28434, r28435, r28436, r28437, r28438, r28439, r28440, r28441, r28442, r28443, r28444, r28445, r28446, r28447;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28429, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28430);
        mpfr_init(r28431);
        mpfr_init(r28432);
        mpfr_init_set_str(r28433, "1/60", 10, MPFR_RNDN);
        mpfr_init(r28434);
        mpfr_init_set_str(r28435, "5", 10, MPFR_RNDN);
        mpfr_init(r28436);
        mpfr_init(r28437);
        mpfr_init_set_str(r28438, "2", 10, MPFR_RNDN);
        mpfr_init(r28439);
        mpfr_init_set_str(r28440, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28441, "3", 10, MPFR_RNDN);
        mpfr_init(r28442);
        mpfr_init(r28443);
        mpfr_init(r28444);
        mpfr_init(r28445);
        mpfr_init(r28446);
        mpfr_init(r28447);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r28430, re, MPFR_RNDN);
        mpfr_sin(r28431, r28430, MPFR_RNDN);
        mpfr_mul(r28432, r28429, r28431, MPFR_RNDN);
        ;
        mpfr_set_d(r28434, im, MPFR_RNDN);
        ;
        mpfr_pow(r28436, r28434, r28435, MPFR_RNDN);
        mpfr_mul(r28437, r28433, r28436, MPFR_RNDN);
        ;
        mpfr_mul(r28439, r28438, r28434, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28442, r28434, r28441, MPFR_RNDN);
        mpfr_mul(r28443, r28440, r28442, MPFR_RNDN);
        mpfr_add(r28444, r28439, r28443, MPFR_RNDN);
        mpfr_add(r28445, r28437, r28444, MPFR_RNDN);
        mpfr_neg(r28446, r28445, MPFR_RNDN);
        mpfr_mul(r28447, r28432, r28446, MPFR_RNDN);
        return mpfr_get_d(r28447, MPFR_RNDN);
}

static mpfr_t r28448, r28449, r28450, r28451, r28452, r28453, r28454, r28455, r28456, r28457, r28458, r28459, r28460, r28461, r28462, r28463, r28464, r28465, r28466;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28448, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28449);
        mpfr_init(r28450);
        mpfr_init(r28451);
        mpfr_init_set_str(r28452, "1/60", 10, MPFR_RNDN);
        mpfr_init(r28453);
        mpfr_init_set_str(r28454, "5", 10, MPFR_RNDN);
        mpfr_init(r28455);
        mpfr_init(r28456);
        mpfr_init_set_str(r28457, "2", 10, MPFR_RNDN);
        mpfr_init(r28458);
        mpfr_init_set_str(r28459, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28460, "3", 10, MPFR_RNDN);
        mpfr_init(r28461);
        mpfr_init(r28462);
        mpfr_init(r28463);
        mpfr_init(r28464);
        mpfr_init(r28465);
        mpfr_init(r28466);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r28449, re, MPFR_RNDN);
        mpfr_sin(r28450, r28449, MPFR_RNDN);
        mpfr_mul(r28451, r28448, r28450, MPFR_RNDN);
        ;
        mpfr_set_d(r28453, im, MPFR_RNDN);
        ;
        mpfr_pow(r28455, r28453, r28454, MPFR_RNDN);
        mpfr_mul(r28456, r28452, r28455, MPFR_RNDN);
        ;
        mpfr_mul(r28458, r28457, r28453, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28461, r28453, r28460, MPFR_RNDN);
        mpfr_mul(r28462, r28459, r28461, MPFR_RNDN);
        mpfr_add(r28463, r28458, r28462, MPFR_RNDN);
        mpfr_add(r28464, r28456, r28463, MPFR_RNDN);
        mpfr_neg(r28465, r28464, MPFR_RNDN);
        mpfr_mul(r28466, r28451, r28465, MPFR_RNDN);
        return mpfr_get_d(r28466, MPFR_RNDN);
}

