#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 r20537 = 0.5f;
        float r20538 = re;
        float r20539 = sin(r20538);
        float r20540 = r20537 * r20539;
        float r20541 = im;
        float r20542 = -r20541;
        float r20543 = exp(r20542);
        float r20544 = exp(r20541);
        float r20545 = r20543 - r20544;
        float r20546 = r20540 * r20545;
        return r20546;
}

double f_id(double re, double im) {
        double r20547 = 0.5;
        double r20548 = re;
        double r20549 = sin(r20548);
        double r20550 = r20547 * r20549;
        double r20551 = im;
        double r20552 = -r20551;
        double r20553 = exp(r20552);
        double r20554 = exp(r20551);
        double r20555 = r20553 - r20554;
        double r20556 = r20550 * r20555;
        return r20556;
}


double f_of(float re, float im) {
        float r20557 = 0.5f;
        float r20558 = re;
        float r20559 = sin(r20558);
        float r20560 = r20557 * r20559;
        float r20561 = 0.016666666666666666f;
        float r20562 = im;
        float r20563 = 5.0f;
        float r20564 = pow(r20562, r20563);
        float r20565 = r20561 * r20564;
        float r20566 = 2.0f;
        float r20567 = r20566 * r20562;
        float r20568 = 0.3333333333333333f;
        float r20569 = 3.0f;
        float r20570 = pow(r20562, r20569);
        float r20571 = r20568 * r20570;
        float r20572 = r20567 + r20571;
        float r20573 = r20565 + r20572;
        float r20574 = -r20573;
        float r20575 = r20560 * r20574;
        return r20575;
}

double f_od(double re, double im) {
        double r20576 = 0.5;
        double r20577 = re;
        double r20578 = sin(r20577);
        double r20579 = r20576 * r20578;
        double r20580 = 0.016666666666666666;
        double r20581 = im;
        double r20582 = 5.0;
        double r20583 = pow(r20581, r20582);
        double r20584 = r20580 * r20583;
        double r20585 = 2.0;
        double r20586 = r20585 * r20581;
        double r20587 = 0.3333333333333333;
        double r20588 = 3.0;
        double r20589 = pow(r20581, r20588);
        double r20590 = r20587 * r20589;
        double r20591 = r20586 + r20590;
        double r20592 = r20584 + r20591;
        double r20593 = -r20592;
        double r20594 = r20579 * r20593;
        return r20594;
}

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 r20595, r20596, r20597, r20598, r20599, r20600, r20601, r20602, r20603, r20604;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20595, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20596);
        mpfr_init(r20597);
        mpfr_init(r20598);
        mpfr_init(r20599);
        mpfr_init(r20600);
        mpfr_init(r20601);
        mpfr_init(r20602);
        mpfr_init(r20603);
        mpfr_init(r20604);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r20596, re, MPFR_RNDN);
        mpfr_sin(r20597, r20596, MPFR_RNDN);
        mpfr_mul(r20598, r20595, r20597, MPFR_RNDN);
        mpfr_set_d(r20599, im, MPFR_RNDN);
        mpfr_neg(r20600, r20599, MPFR_RNDN);
        mpfr_exp(r20601, r20600, MPFR_RNDN);
        mpfr_exp(r20602, r20599, MPFR_RNDN);
        mpfr_sub(r20603, r20601, r20602, MPFR_RNDN);
        mpfr_mul(r20604, r20598, r20603, MPFR_RNDN);
        return mpfr_get_d(r20604, MPFR_RNDN);
}

static mpfr_t r20605, r20606, r20607, r20608, r20609, r20610, r20611, r20612, r20613, r20614, r20615, r20616, r20617, r20618, r20619, r20620, r20621, r20622, r20623;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20605, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20606);
        mpfr_init(r20607);
        mpfr_init(r20608);
        mpfr_init_set_str(r20609, "1/60", 10, MPFR_RNDN);
        mpfr_init(r20610);
        mpfr_init_set_str(r20611, "5", 10, MPFR_RNDN);
        mpfr_init(r20612);
        mpfr_init(r20613);
        mpfr_init_set_str(r20614, "2", 10, MPFR_RNDN);
        mpfr_init(r20615);
        mpfr_init_set_str(r20616, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r20617, "3", 10, MPFR_RNDN);
        mpfr_init(r20618);
        mpfr_init(r20619);
        mpfr_init(r20620);
        mpfr_init(r20621);
        mpfr_init(r20622);
        mpfr_init(r20623);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r20606, re, MPFR_RNDN);
        mpfr_sin(r20607, r20606, MPFR_RNDN);
        mpfr_mul(r20608, r20605, r20607, MPFR_RNDN);
        ;
        mpfr_set_d(r20610, im, MPFR_RNDN);
        ;
        mpfr_pow(r20612, r20610, r20611, MPFR_RNDN);
        mpfr_mul(r20613, r20609, r20612, MPFR_RNDN);
        ;
        mpfr_mul(r20615, r20614, r20610, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r20618, r20610, r20617, MPFR_RNDN);
        mpfr_mul(r20619, r20616, r20618, MPFR_RNDN);
        mpfr_add(r20620, r20615, r20619, MPFR_RNDN);
        mpfr_add(r20621, r20613, r20620, MPFR_RNDN);
        mpfr_neg(r20622, r20621, MPFR_RNDN);
        mpfr_mul(r20623, r20608, r20622, MPFR_RNDN);
        return mpfr_get_d(r20623, MPFR_RNDN);
}

static mpfr_t r20624, r20625, r20626, r20627, r20628, r20629, r20630, r20631, r20632, r20633, r20634, r20635, r20636, r20637, r20638, r20639, r20640, r20641, r20642;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r20624, "0.5", 10, MPFR_RNDN);
        mpfr_init(r20625);
        mpfr_init(r20626);
        mpfr_init(r20627);
        mpfr_init_set_str(r20628, "1/60", 10, MPFR_RNDN);
        mpfr_init(r20629);
        mpfr_init_set_str(r20630, "5", 10, MPFR_RNDN);
        mpfr_init(r20631);
        mpfr_init(r20632);
        mpfr_init_set_str(r20633, "2", 10, MPFR_RNDN);
        mpfr_init(r20634);
        mpfr_init_set_str(r20635, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r20636, "3", 10, MPFR_RNDN);
        mpfr_init(r20637);
        mpfr_init(r20638);
        mpfr_init(r20639);
        mpfr_init(r20640);
        mpfr_init(r20641);
        mpfr_init(r20642);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r20625, re, MPFR_RNDN);
        mpfr_sin(r20626, r20625, MPFR_RNDN);
        mpfr_mul(r20627, r20624, r20626, MPFR_RNDN);
        ;
        mpfr_set_d(r20629, im, MPFR_RNDN);
        ;
        mpfr_pow(r20631, r20629, r20630, MPFR_RNDN);
        mpfr_mul(r20632, r20628, r20631, MPFR_RNDN);
        ;
        mpfr_mul(r20634, r20633, r20629, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r20637, r20629, r20636, MPFR_RNDN);
        mpfr_mul(r20638, r20635, r20637, MPFR_RNDN);
        mpfr_add(r20639, r20634, r20638, MPFR_RNDN);
        mpfr_add(r20640, r20632, r20639, MPFR_RNDN);
        mpfr_neg(r20641, r20640, MPFR_RNDN);
        mpfr_mul(r20642, r20627, r20641, MPFR_RNDN);
        return mpfr_get_d(r20642, MPFR_RNDN);
}

