#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 r28526 = 0.5;
        float r28527 = re;
        float r28528 = sin(r28527);
        float r28529 = r28526 * r28528;
        float r28530 = im;
        float r28531 = -r28530;
        float r28532 = exp(r28531);
        float r28533 = exp(r28530);
        float r28534 = r28532 - r28533;
        float r28535 = r28529 * r28534;
        return r28535;
}

double f_id(double re, double im) {
        double r28536 = 0.5;
        double r28537 = re;
        double r28538 = sin(r28537);
        double r28539 = r28536 * r28538;
        double r28540 = im;
        double r28541 = -r28540;
        double r28542 = exp(r28541);
        double r28543 = exp(r28540);
        double r28544 = r28542 - r28543;
        double r28545 = r28539 * r28544;
        return r28545;
}


double f_of(float re, float im) {
        float r28546 = 0.5;
        float r28547 = re;
        float r28548 = sin(r28547);
        float r28549 = r28546 * r28548;
        float r28550 = 1/60;
        float r28551 = im;
        float r28552 = 5;
        float r28553 = pow(r28551, r28552);
        float r28554 = r28550 * r28553;
        float r28555 = 2;
        float r28556 = r28555 * r28551;
        float r28557 = 1/3;
        float r28558 = 3;
        float r28559 = pow(r28551, r28558);
        float r28560 = r28557 * r28559;
        float r28561 = r28556 + r28560;
        float r28562 = r28554 + r28561;
        float r28563 = -r28562;
        float r28564 = r28549 * r28563;
        return r28564;
}

double f_od(double re, double im) {
        double r28565 = 0.5;
        double r28566 = re;
        double r28567 = sin(r28566);
        double r28568 = r28565 * r28567;
        double r28569 = 1/60;
        double r28570 = im;
        double r28571 = 5;
        double r28572 = pow(r28570, r28571);
        double r28573 = r28569 * r28572;
        double r28574 = 2;
        double r28575 = r28574 * r28570;
        double r28576 = 1/3;
        double r28577 = 3;
        double r28578 = pow(r28570, r28577);
        double r28579 = r28576 * r28578;
        double r28580 = r28575 + r28579;
        double r28581 = r28573 + r28580;
        double r28582 = -r28581;
        double r28583 = r28568 * r28582;
        return r28583;
}

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 r28584, r28585, r28586, r28587, r28588, r28589, r28590, r28591, r28592, r28593;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28584, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28585);
        mpfr_init(r28586);
        mpfr_init(r28587);
        mpfr_init(r28588);
        mpfr_init(r28589);
        mpfr_init(r28590);
        mpfr_init(r28591);
        mpfr_init(r28592);
        mpfr_init(r28593);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r28585, re, MPFR_RNDN);
        mpfr_sin(r28586, r28585, MPFR_RNDN);
        mpfr_mul(r28587, r28584, r28586, MPFR_RNDN);
        mpfr_set_d(r28588, im, MPFR_RNDN);
        mpfr_neg(r28589, r28588, MPFR_RNDN);
        mpfr_exp(r28590, r28589, MPFR_RNDN);
        mpfr_exp(r28591, r28588, MPFR_RNDN);
        mpfr_sub(r28592, r28590, r28591, MPFR_RNDN);
        mpfr_mul(r28593, r28587, r28592, MPFR_RNDN);
        return mpfr_get_d(r28593, MPFR_RNDN);
}

static mpfr_t r28594, r28595, r28596, r28597, r28598, r28599, r28600, r28601, r28602, r28603, r28604, r28605, r28606, r28607, r28608, r28609, r28610, r28611, r28612;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28594, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28595);
        mpfr_init(r28596);
        mpfr_init(r28597);
        mpfr_init_set_str(r28598, "1/60", 10, MPFR_RNDN);
        mpfr_init(r28599);
        mpfr_init_set_str(r28600, "5", 10, MPFR_RNDN);
        mpfr_init(r28601);
        mpfr_init(r28602);
        mpfr_init_set_str(r28603, "2", 10, MPFR_RNDN);
        mpfr_init(r28604);
        mpfr_init_set_str(r28605, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28606, "3", 10, MPFR_RNDN);
        mpfr_init(r28607);
        mpfr_init(r28608);
        mpfr_init(r28609);
        mpfr_init(r28610);
        mpfr_init(r28611);
        mpfr_init(r28612);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r28595, re, MPFR_RNDN);
        mpfr_sin(r28596, r28595, MPFR_RNDN);
        mpfr_mul(r28597, r28594, r28596, MPFR_RNDN);
        ;
        mpfr_set_d(r28599, im, MPFR_RNDN);
        ;
        mpfr_pow(r28601, r28599, r28600, MPFR_RNDN);
        mpfr_mul(r28602, r28598, r28601, MPFR_RNDN);
        ;
        mpfr_mul(r28604, r28603, r28599, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28607, r28599, r28606, MPFR_RNDN);
        mpfr_mul(r28608, r28605, r28607, MPFR_RNDN);
        mpfr_add(r28609, r28604, r28608, MPFR_RNDN);
        mpfr_add(r28610, r28602, r28609, MPFR_RNDN);
        mpfr_neg(r28611, r28610, MPFR_RNDN);
        mpfr_mul(r28612, r28597, r28611, MPFR_RNDN);
        return mpfr_get_d(r28612, MPFR_RNDN);
}

static mpfr_t r28613, r28614, r28615, r28616, r28617, r28618, r28619, r28620, r28621, r28622, r28623, r28624, r28625, r28626, r28627, r28628, r28629, r28630, r28631;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28613, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28614);
        mpfr_init(r28615);
        mpfr_init(r28616);
        mpfr_init_set_str(r28617, "1/60", 10, MPFR_RNDN);
        mpfr_init(r28618);
        mpfr_init_set_str(r28619, "5", 10, MPFR_RNDN);
        mpfr_init(r28620);
        mpfr_init(r28621);
        mpfr_init_set_str(r28622, "2", 10, MPFR_RNDN);
        mpfr_init(r28623);
        mpfr_init_set_str(r28624, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28625, "3", 10, MPFR_RNDN);
        mpfr_init(r28626);
        mpfr_init(r28627);
        mpfr_init(r28628);
        mpfr_init(r28629);
        mpfr_init(r28630);
        mpfr_init(r28631);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r28614, re, MPFR_RNDN);
        mpfr_sin(r28615, r28614, MPFR_RNDN);
        mpfr_mul(r28616, r28613, r28615, MPFR_RNDN);
        ;
        mpfr_set_d(r28618, im, MPFR_RNDN);
        ;
        mpfr_pow(r28620, r28618, r28619, MPFR_RNDN);
        mpfr_mul(r28621, r28617, r28620, MPFR_RNDN);
        ;
        mpfr_mul(r28623, r28622, r28618, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28626, r28618, r28625, MPFR_RNDN);
        mpfr_mul(r28627, r28624, r28626, MPFR_RNDN);
        mpfr_add(r28628, r28623, r28627, MPFR_RNDN);
        mpfr_add(r28629, r28621, r28628, MPFR_RNDN);
        mpfr_neg(r28630, r28629, MPFR_RNDN);
        mpfr_mul(r28631, r28616, r28630, MPFR_RNDN);
        return mpfr_get_d(r28631, MPFR_RNDN);
}

