#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "math.sin on complex, imaginary part";

double f_if(float re, float im) {
        float r18535 = 0.5f;
        float r18536 = re;
        float r18537 = cos(r18536);
        float r18538 = r18535 * r18537;
        float r18539 = 0.0f;
        float r18540 = im;
        float r18541 = r18539 - r18540;
        float r18542 = exp(r18541);
        float r18543 = exp(r18540);
        float r18544 = r18542 - r18543;
        float r18545 = r18538 * r18544;
        return r18545;
}

double f_id(double re, double im) {
        double r18546 = 0.5;
        double r18547 = re;
        double r18548 = cos(r18547);
        double r18549 = r18546 * r18548;
        double r18550 = 0.0;
        double r18551 = im;
        double r18552 = r18550 - r18551;
        double r18553 = exp(r18552);
        double r18554 = exp(r18551);
        double r18555 = r18553 - r18554;
        double r18556 = r18549 * r18555;
        return r18556;
}


double f_of(float re, float im) {
        float r18557 = 0.01666666753590107f;
        float r18558 = im;
        float r18559 = 5.0f;
        float r18560 = pow(r18558, r18559);
        float r18561 = r18557 * r18560;
        float r18562 = 2.0f;
        float r18563 = r18562 * r18558;
        float r18564 = 0.3333333432674408f;
        float r18565 = 3.0f;
        float r18566 = pow(r18558, r18565);
        float r18567 = r18564 * r18566;
        float r18568 = r18563 + r18567;
        float r18569 = r18561 + r18568;
        float r18570 = -r18569;
        float r18571 = re;
        float r18572 = cos(r18571);
        float r18573 = 0.5f;
        float r18574 = r18572 * r18573;
        float r18575 = r18570 * r18574;
        return r18575;
}

double f_od(double re, double im) {
        double r18576 = 0.01666666753590107;
        double r18577 = im;
        double r18578 = 5.0;
        double r18579 = pow(r18577, r18578);
        double r18580 = r18576 * r18579;
        double r18581 = 2.0;
        double r18582 = r18581 * r18577;
        double r18583 = 0.3333333432674408;
        double r18584 = 3.0;
        double r18585 = pow(r18577, r18584);
        double r18586 = r18583 * r18585;
        double r18587 = r18582 + r18586;
        double r18588 = r18580 + r18587;
        double r18589 = -r18588;
        double r18590 = re;
        double r18591 = cos(r18590);
        double r18592 = 0.5;
        double r18593 = r18591 * r18592;
        double r18594 = r18589 * r18593;
        return r18594;
}

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 r18595, r18596, r18597, r18598, r18599, r18600, r18601, r18602, r18603, r18604, r18605;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18595, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18596);
        mpfr_init(r18597);
        mpfr_init(r18598);
        mpfr_init_set_str(r18599, "0", 10, MPFR_RNDN);
        mpfr_init(r18600);
        mpfr_init(r18601);
        mpfr_init(r18602);
        mpfr_init(r18603);
        mpfr_init(r18604);
        mpfr_init(r18605);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r18596, re, MPFR_RNDN);
        mpfr_cos(r18597, r18596, MPFR_RNDN);
        mpfr_mul(r18598, r18595, r18597, MPFR_RNDN);
        ;
        mpfr_set_d(r18600, im, MPFR_RNDN);
        mpfr_sub(r18601, r18599, r18600, MPFR_RNDN);
        mpfr_exp(r18602, r18601, MPFR_RNDN);
        mpfr_exp(r18603, r18600, MPFR_RNDN);
        mpfr_sub(r18604, r18602, r18603, MPFR_RNDN);
        mpfr_mul(r18605, r18598, r18604, MPFR_RNDN);
        return mpfr_get_d(r18605, MPFR_RNDN);
}

static mpfr_t r18606, r18607, r18608, r18609, r18610, r18611, r18612, r18613, r18614, r18615, r18616, r18617, r18618, r18619, r18620, r18621, r18622, r18623, r18624;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18606, "1/60", 10, MPFR_RNDN);
        mpfr_init(r18607);
        mpfr_init_set_str(r18608, "5", 10, MPFR_RNDN);
        mpfr_init(r18609);
        mpfr_init(r18610);
        mpfr_init_set_str(r18611, "2", 10, MPFR_RNDN);
        mpfr_init(r18612);
        mpfr_init_set_str(r18613, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r18614, "3", 10, MPFR_RNDN);
        mpfr_init(r18615);
        mpfr_init(r18616);
        mpfr_init(r18617);
        mpfr_init(r18618);
        mpfr_init(r18619);
        mpfr_init(r18620);
        mpfr_init(r18621);
        mpfr_init_set_str(r18622, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18623);
        mpfr_init(r18624);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r18607, im, MPFR_RNDN);
        ;
        mpfr_pow(r18609, r18607, r18608, MPFR_RNDN);
        mpfr_mul(r18610, r18606, r18609, MPFR_RNDN);
        ;
        mpfr_mul(r18612, r18611, r18607, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r18615, r18607, r18614, MPFR_RNDN);
        mpfr_mul(r18616, r18613, r18615, MPFR_RNDN);
        mpfr_add(r18617, r18612, r18616, MPFR_RNDN);
        mpfr_add(r18618, r18610, r18617, MPFR_RNDN);
        mpfr_neg(r18619, r18618, MPFR_RNDN);
        mpfr_set_d(r18620, re, MPFR_RNDN);
        mpfr_cos(r18621, r18620, MPFR_RNDN);
        ;
        mpfr_mul(r18623, r18621, r18622, MPFR_RNDN);
        mpfr_mul(r18624, r18619, r18623, MPFR_RNDN);
        return mpfr_get_d(r18624, MPFR_RNDN);
}

static mpfr_t r18625, r18626, r18627, r18628, r18629, r18630, r18631, r18632, r18633, r18634, r18635, r18636, r18637, r18638, r18639, r18640, r18641, r18642, r18643;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18625, "1/60", 10, MPFR_RNDN);
        mpfr_init(r18626);
        mpfr_init_set_str(r18627, "5", 10, MPFR_RNDN);
        mpfr_init(r18628);
        mpfr_init(r18629);
        mpfr_init_set_str(r18630, "2", 10, MPFR_RNDN);
        mpfr_init(r18631);
        mpfr_init_set_str(r18632, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r18633, "3", 10, MPFR_RNDN);
        mpfr_init(r18634);
        mpfr_init(r18635);
        mpfr_init(r18636);
        mpfr_init(r18637);
        mpfr_init(r18638);
        mpfr_init(r18639);
        mpfr_init(r18640);
        mpfr_init_set_str(r18641, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18642);
        mpfr_init(r18643);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r18626, im, MPFR_RNDN);
        ;
        mpfr_pow(r18628, r18626, r18627, MPFR_RNDN);
        mpfr_mul(r18629, r18625, r18628, MPFR_RNDN);
        ;
        mpfr_mul(r18631, r18630, r18626, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r18634, r18626, r18633, MPFR_RNDN);
        mpfr_mul(r18635, r18632, r18634, MPFR_RNDN);
        mpfr_add(r18636, r18631, r18635, MPFR_RNDN);
        mpfr_add(r18637, r18629, r18636, MPFR_RNDN);
        mpfr_neg(r18638, r18637, MPFR_RNDN);
        mpfr_set_d(r18639, re, MPFR_RNDN);
        mpfr_cos(r18640, r18639, MPFR_RNDN);
        ;
        mpfr_mul(r18642, r18640, r18641, MPFR_RNDN);
        mpfr_mul(r18643, r18638, r18642, MPFR_RNDN);
        return mpfr_get_d(r18643, MPFR_RNDN);
}

