#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 r38530 = 0.5;
        float r38531 = re;
        float r38532 = sin(r38531);
        float r38533 = r38530 * r38532;
        float r38534 = im;
        float r38535 = -r38534;
        float r38536 = exp(r38535);
        float r38537 = exp(r38534);
        float r38538 = r38536 - r38537;
        float r38539 = r38533 * r38538;
        return r38539;
}

double f_id(double re, double im) {
        double r38540 = 0.5;
        double r38541 = re;
        double r38542 = sin(r38541);
        double r38543 = r38540 * r38542;
        double r38544 = im;
        double r38545 = -r38544;
        double r38546 = exp(r38545);
        double r38547 = exp(r38544);
        double r38548 = r38546 - r38547;
        double r38549 = r38543 * r38548;
        return r38549;
}


double f_of(float re, float im) {
        float r38550 = 0.5;
        float r38551 = re;
        float r38552 = sin(r38551);
        float r38553 = r38550 * r38552;
        float r38554 = 1/60;
        float r38555 = im;
        float r38556 = 5;
        float r38557 = pow(r38555, r38556);
        float r38558 = r38554 * r38557;
        float r38559 = 2;
        float r38560 = r38559 * r38555;
        float r38561 = 1/3;
        float r38562 = 3;
        float r38563 = pow(r38555, r38562);
        float r38564 = r38561 * r38563;
        float r38565 = r38560 + r38564;
        float r38566 = r38558 + r38565;
        float r38567 = -r38566;
        float r38568 = r38553 * r38567;
        return r38568;
}

double f_od(double re, double im) {
        double r38569 = 0.5;
        double r38570 = re;
        double r38571 = sin(r38570);
        double r38572 = r38569 * r38571;
        double r38573 = 1/60;
        double r38574 = im;
        double r38575 = 5;
        double r38576 = pow(r38574, r38575);
        double r38577 = r38573 * r38576;
        double r38578 = 2;
        double r38579 = r38578 * r38574;
        double r38580 = 1/3;
        double r38581 = 3;
        double r38582 = pow(r38574, r38581);
        double r38583 = r38580 * r38582;
        double r38584 = r38579 + r38583;
        double r38585 = r38577 + r38584;
        double r38586 = -r38585;
        double r38587 = r38572 * r38586;
        return r38587;
}

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 r38588, r38589, r38590, r38591, r38592, r38593, r38594, r38595, r38596, r38597;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38588, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38589);
        mpfr_init(r38590);
        mpfr_init(r38591);
        mpfr_init(r38592);
        mpfr_init(r38593);
        mpfr_init(r38594);
        mpfr_init(r38595);
        mpfr_init(r38596);
        mpfr_init(r38597);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r38589, re, MPFR_RNDN);
        mpfr_sin(r38590, r38589, MPFR_RNDN);
        mpfr_mul(r38591, r38588, r38590, MPFR_RNDN);
        mpfr_set_d(r38592, im, MPFR_RNDN);
        mpfr_neg(r38593, r38592, MPFR_RNDN);
        mpfr_exp(r38594, r38593, MPFR_RNDN);
        mpfr_exp(r38595, r38592, MPFR_RNDN);
        mpfr_sub(r38596, r38594, r38595, MPFR_RNDN);
        mpfr_mul(r38597, r38591, r38596, MPFR_RNDN);
        return mpfr_get_d(r38597, MPFR_RNDN);
}

static mpfr_t r38598, r38599, r38600, r38601, r38602, r38603, r38604, r38605, r38606, r38607, r38608, r38609, r38610, r38611, r38612, r38613, r38614, r38615, r38616;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38598, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38599);
        mpfr_init(r38600);
        mpfr_init(r38601);
        mpfr_init_set_str(r38602, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38603);
        mpfr_init_set_str(r38604, "5", 10, MPFR_RNDN);
        mpfr_init(r38605);
        mpfr_init(r38606);
        mpfr_init_set_str(r38607, "2", 10, MPFR_RNDN);
        mpfr_init(r38608);
        mpfr_init_set_str(r38609, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38610, "3", 10, MPFR_RNDN);
        mpfr_init(r38611);
        mpfr_init(r38612);
        mpfr_init(r38613);
        mpfr_init(r38614);
        mpfr_init(r38615);
        mpfr_init(r38616);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r38599, re, MPFR_RNDN);
        mpfr_sin(r38600, r38599, MPFR_RNDN);
        mpfr_mul(r38601, r38598, r38600, MPFR_RNDN);
        ;
        mpfr_set_d(r38603, im, MPFR_RNDN);
        ;
        mpfr_pow(r38605, r38603, r38604, MPFR_RNDN);
        mpfr_mul(r38606, r38602, r38605, MPFR_RNDN);
        ;
        mpfr_mul(r38608, r38607, r38603, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38611, r38603, r38610, MPFR_RNDN);
        mpfr_mul(r38612, r38609, r38611, MPFR_RNDN);
        mpfr_add(r38613, r38608, r38612, MPFR_RNDN);
        mpfr_add(r38614, r38606, r38613, MPFR_RNDN);
        mpfr_neg(r38615, r38614, MPFR_RNDN);
        mpfr_mul(r38616, r38601, r38615, MPFR_RNDN);
        return mpfr_get_d(r38616, MPFR_RNDN);
}

static mpfr_t r38617, r38618, r38619, r38620, r38621, r38622, r38623, r38624, r38625, r38626, r38627, r38628, r38629, r38630, r38631, r38632, r38633, r38634, r38635;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38617, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38618);
        mpfr_init(r38619);
        mpfr_init(r38620);
        mpfr_init_set_str(r38621, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38622);
        mpfr_init_set_str(r38623, "5", 10, MPFR_RNDN);
        mpfr_init(r38624);
        mpfr_init(r38625);
        mpfr_init_set_str(r38626, "2", 10, MPFR_RNDN);
        mpfr_init(r38627);
        mpfr_init_set_str(r38628, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38629, "3", 10, MPFR_RNDN);
        mpfr_init(r38630);
        mpfr_init(r38631);
        mpfr_init(r38632);
        mpfr_init(r38633);
        mpfr_init(r38634);
        mpfr_init(r38635);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r38618, re, MPFR_RNDN);
        mpfr_sin(r38619, r38618, MPFR_RNDN);
        mpfr_mul(r38620, r38617, r38619, MPFR_RNDN);
        ;
        mpfr_set_d(r38622, im, MPFR_RNDN);
        ;
        mpfr_pow(r38624, r38622, r38623, MPFR_RNDN);
        mpfr_mul(r38625, r38621, r38624, MPFR_RNDN);
        ;
        mpfr_mul(r38627, r38626, r38622, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38630, r38622, r38629, MPFR_RNDN);
        mpfr_mul(r38631, r38628, r38630, MPFR_RNDN);
        mpfr_add(r38632, r38627, r38631, MPFR_RNDN);
        mpfr_add(r38633, r38625, r38632, MPFR_RNDN);
        mpfr_neg(r38634, r38633, MPFR_RNDN);
        mpfr_mul(r38635, r38620, r38634, MPFR_RNDN);
        return mpfr_get_d(r38635, MPFR_RNDN);
}

