#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 r38440 = 0.5;
        float r38441 = re;
        float r38442 = sin(r38441);
        float r38443 = r38440 * r38442;
        float r38444 = im;
        float r38445 = -r38444;
        float r38446 = exp(r38445);
        float r38447 = exp(r38444);
        float r38448 = r38446 - r38447;
        float r38449 = r38443 * r38448;
        return r38449;
}

double f_id(double re, double im) {
        double r38450 = 0.5;
        double r38451 = re;
        double r38452 = sin(r38451);
        double r38453 = r38450 * r38452;
        double r38454 = im;
        double r38455 = -r38454;
        double r38456 = exp(r38455);
        double r38457 = exp(r38454);
        double r38458 = r38456 - r38457;
        double r38459 = r38453 * r38458;
        return r38459;
}


double f_of(float re, float im) {
        float r38460 = 0.5;
        float r38461 = re;
        float r38462 = sin(r38461);
        float r38463 = r38460 * r38462;
        float r38464 = 1/60;
        float r38465 = im;
        float r38466 = 5;
        float r38467 = pow(r38465, r38466);
        float r38468 = r38464 * r38467;
        float r38469 = 2;
        float r38470 = r38469 * r38465;
        float r38471 = 1/3;
        float r38472 = 3;
        float r38473 = pow(r38465, r38472);
        float r38474 = r38471 * r38473;
        float r38475 = r38470 + r38474;
        float r38476 = r38468 + r38475;
        float r38477 = -r38476;
        float r38478 = r38463 * r38477;
        return r38478;
}

double f_od(double re, double im) {
        double r38479 = 0.5;
        double r38480 = re;
        double r38481 = sin(r38480);
        double r38482 = r38479 * r38481;
        double r38483 = 1/60;
        double r38484 = im;
        double r38485 = 5;
        double r38486 = pow(r38484, r38485);
        double r38487 = r38483 * r38486;
        double r38488 = 2;
        double r38489 = r38488 * r38484;
        double r38490 = 1/3;
        double r38491 = 3;
        double r38492 = pow(r38484, r38491);
        double r38493 = r38490 * r38492;
        double r38494 = r38489 + r38493;
        double r38495 = r38487 + r38494;
        double r38496 = -r38495;
        double r38497 = r38482 * r38496;
        return r38497;
}

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 r38498, r38499, r38500, r38501, r38502, r38503, r38504, r38505, r38506, r38507;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38498, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38499);
        mpfr_init(r38500);
        mpfr_init(r38501);
        mpfr_init(r38502);
        mpfr_init(r38503);
        mpfr_init(r38504);
        mpfr_init(r38505);
        mpfr_init(r38506);
        mpfr_init(r38507);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r38499, re, MPFR_RNDN);
        mpfr_sin(r38500, r38499, MPFR_RNDN);
        mpfr_mul(r38501, r38498, r38500, MPFR_RNDN);
        mpfr_set_d(r38502, im, MPFR_RNDN);
        mpfr_neg(r38503, r38502, MPFR_RNDN);
        mpfr_exp(r38504, r38503, MPFR_RNDN);
        mpfr_exp(r38505, r38502, MPFR_RNDN);
        mpfr_sub(r38506, r38504, r38505, MPFR_RNDN);
        mpfr_mul(r38507, r38501, r38506, MPFR_RNDN);
        return mpfr_get_d(r38507, MPFR_RNDN);
}

static mpfr_t r38508, r38509, r38510, r38511, r38512, r38513, r38514, r38515, r38516, r38517, r38518, r38519, r38520, r38521, r38522, r38523, r38524, r38525, r38526;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38508, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38509);
        mpfr_init(r38510);
        mpfr_init(r38511);
        mpfr_init_set_str(r38512, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38513);
        mpfr_init_set_str(r38514, "5", 10, MPFR_RNDN);
        mpfr_init(r38515);
        mpfr_init(r38516);
        mpfr_init_set_str(r38517, "2", 10, MPFR_RNDN);
        mpfr_init(r38518);
        mpfr_init_set_str(r38519, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38520, "3", 10, MPFR_RNDN);
        mpfr_init(r38521);
        mpfr_init(r38522);
        mpfr_init(r38523);
        mpfr_init(r38524);
        mpfr_init(r38525);
        mpfr_init(r38526);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r38509, re, MPFR_RNDN);
        mpfr_sin(r38510, r38509, MPFR_RNDN);
        mpfr_mul(r38511, r38508, r38510, MPFR_RNDN);
        ;
        mpfr_set_d(r38513, im, MPFR_RNDN);
        ;
        mpfr_pow(r38515, r38513, r38514, MPFR_RNDN);
        mpfr_mul(r38516, r38512, r38515, MPFR_RNDN);
        ;
        mpfr_mul(r38518, r38517, r38513, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38521, r38513, r38520, MPFR_RNDN);
        mpfr_mul(r38522, r38519, r38521, MPFR_RNDN);
        mpfr_add(r38523, r38518, r38522, MPFR_RNDN);
        mpfr_add(r38524, r38516, r38523, MPFR_RNDN);
        mpfr_neg(r38525, r38524, MPFR_RNDN);
        mpfr_mul(r38526, r38511, r38525, MPFR_RNDN);
        return mpfr_get_d(r38526, MPFR_RNDN);
}

static mpfr_t r38527, r38528, r38529, r38530, r38531, r38532, r38533, r38534, r38535, r38536, r38537, r38538, r38539, r38540, r38541, r38542, r38543, r38544, r38545;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38527, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38528);
        mpfr_init(r38529);
        mpfr_init(r38530);
        mpfr_init_set_str(r38531, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38532);
        mpfr_init_set_str(r38533, "5", 10, MPFR_RNDN);
        mpfr_init(r38534);
        mpfr_init(r38535);
        mpfr_init_set_str(r38536, "2", 10, MPFR_RNDN);
        mpfr_init(r38537);
        mpfr_init_set_str(r38538, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38539, "3", 10, MPFR_RNDN);
        mpfr_init(r38540);
        mpfr_init(r38541);
        mpfr_init(r38542);
        mpfr_init(r38543);
        mpfr_init(r38544);
        mpfr_init(r38545);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r38528, re, MPFR_RNDN);
        mpfr_sin(r38529, r38528, MPFR_RNDN);
        mpfr_mul(r38530, r38527, r38529, MPFR_RNDN);
        ;
        mpfr_set_d(r38532, im, MPFR_RNDN);
        ;
        mpfr_pow(r38534, r38532, r38533, MPFR_RNDN);
        mpfr_mul(r38535, r38531, r38534, MPFR_RNDN);
        ;
        mpfr_mul(r38537, r38536, r38532, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38540, r38532, r38539, MPFR_RNDN);
        mpfr_mul(r38541, r38538, r38540, MPFR_RNDN);
        mpfr_add(r38542, r38537, r38541, MPFR_RNDN);
        mpfr_add(r38543, r38535, r38542, MPFR_RNDN);
        mpfr_neg(r38544, r38543, MPFR_RNDN);
        mpfr_mul(r38545, r38530, r38544, MPFR_RNDN);
        return mpfr_get_d(r38545, MPFR_RNDN);
}

