#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 r38400 = 0.5;
        float r38401 = re;
        float r38402 = cos(r38401);
        float r38403 = r38400 * r38402;
        float r38404 = 0;
        float r38405 = im;
        float r38406 = r38404 - r38405;
        float r38407 = exp(r38406);
        float r38408 = exp(r38405);
        float r38409 = r38407 - r38408;
        float r38410 = r38403 * r38409;
        return r38410;
}

double f_id(double re, double im) {
        double r38411 = 0.5;
        double r38412 = re;
        double r38413 = cos(r38412);
        double r38414 = r38411 * r38413;
        double r38415 = 0;
        double r38416 = im;
        double r38417 = r38415 - r38416;
        double r38418 = exp(r38417);
        double r38419 = exp(r38416);
        double r38420 = r38418 - r38419;
        double r38421 = r38414 * r38420;
        return r38421;
}


double f_of(float re, float im) {
        float r38422 = 1/60;
        float r38423 = im;
        float r38424 = 5;
        float r38425 = pow(r38423, r38424);
        float r38426 = r38422 * r38425;
        float r38427 = 2;
        float r38428 = r38427 * r38423;
        float r38429 = 1/3;
        float r38430 = 3;
        float r38431 = pow(r38423, r38430);
        float r38432 = r38429 * r38431;
        float r38433 = r38428 + r38432;
        float r38434 = r38426 + r38433;
        float r38435 = -r38434;
        float r38436 = 0.5;
        float r38437 = re;
        float r38438 = cos(r38437);
        float r38439 = r38436 * r38438;
        float r38440 = r38435 * r38439;
        return r38440;
}

double f_od(double re, double im) {
        double r38441 = 1/60;
        double r38442 = im;
        double r38443 = 5;
        double r38444 = pow(r38442, r38443);
        double r38445 = r38441 * r38444;
        double r38446 = 2;
        double r38447 = r38446 * r38442;
        double r38448 = 1/3;
        double r38449 = 3;
        double r38450 = pow(r38442, r38449);
        double r38451 = r38448 * r38450;
        double r38452 = r38447 + r38451;
        double r38453 = r38445 + r38452;
        double r38454 = -r38453;
        double r38455 = 0.5;
        double r38456 = re;
        double r38457 = cos(r38456);
        double r38458 = r38455 * r38457;
        double r38459 = r38454 * r38458;
        return r38459;
}

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 r38460, r38461, r38462, r38463, r38464, r38465, r38466, r38467, r38468, r38469, r38470;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38460, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38461);
        mpfr_init(r38462);
        mpfr_init(r38463);
        mpfr_init_set_str(r38464, "0", 10, MPFR_RNDN);
        mpfr_init(r38465);
        mpfr_init(r38466);
        mpfr_init(r38467);
        mpfr_init(r38468);
        mpfr_init(r38469);
        mpfr_init(r38470);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r38461, re, MPFR_RNDN);
        mpfr_cos(r38462, r38461, MPFR_RNDN);
        mpfr_mul(r38463, r38460, r38462, MPFR_RNDN);
        ;
        mpfr_set_d(r38465, im, MPFR_RNDN);
        mpfr_sub(r38466, r38464, r38465, MPFR_RNDN);
        mpfr_exp(r38467, r38466, MPFR_RNDN);
        mpfr_exp(r38468, r38465, MPFR_RNDN);
        mpfr_sub(r38469, r38467, r38468, MPFR_RNDN);
        mpfr_mul(r38470, r38463, r38469, MPFR_RNDN);
        return mpfr_get_d(r38470, MPFR_RNDN);
}

static mpfr_t r38471, r38472, r38473, r38474, r38475, r38476, r38477, r38478, r38479, r38480, r38481, r38482, r38483, r38484, r38485, r38486, r38487, r38488, r38489;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38471, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38472);
        mpfr_init_set_str(r38473, "5", 10, MPFR_RNDN);
        mpfr_init(r38474);
        mpfr_init(r38475);
        mpfr_init_set_str(r38476, "2", 10, MPFR_RNDN);
        mpfr_init(r38477);
        mpfr_init_set_str(r38478, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38479, "3", 10, MPFR_RNDN);
        mpfr_init(r38480);
        mpfr_init(r38481);
        mpfr_init(r38482);
        mpfr_init(r38483);
        mpfr_init(r38484);
        mpfr_init_set_str(r38485, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38486);
        mpfr_init(r38487);
        mpfr_init(r38488);
        mpfr_init(r38489);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r38472, im, MPFR_RNDN);
        ;
        mpfr_pow(r38474, r38472, r38473, MPFR_RNDN);
        mpfr_mul(r38475, r38471, r38474, MPFR_RNDN);
        ;
        mpfr_mul(r38477, r38476, r38472, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38480, r38472, r38479, MPFR_RNDN);
        mpfr_mul(r38481, r38478, r38480, MPFR_RNDN);
        mpfr_add(r38482, r38477, r38481, MPFR_RNDN);
        mpfr_add(r38483, r38475, r38482, MPFR_RNDN);
        mpfr_neg(r38484, r38483, MPFR_RNDN);
        ;
        mpfr_set_d(r38486, re, MPFR_RNDN);
        mpfr_cos(r38487, r38486, MPFR_RNDN);
        mpfr_mul(r38488, r38485, r38487, MPFR_RNDN);
        mpfr_mul(r38489, r38484, r38488, MPFR_RNDN);
        return mpfr_get_d(r38489, MPFR_RNDN);
}

static mpfr_t r38490, r38491, r38492, r38493, r38494, r38495, r38496, r38497, r38498, r38499, r38500, r38501, r38502, r38503, r38504, r38505, r38506, r38507, r38508;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38490, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38491);
        mpfr_init_set_str(r38492, "5", 10, MPFR_RNDN);
        mpfr_init(r38493);
        mpfr_init(r38494);
        mpfr_init_set_str(r38495, "2", 10, MPFR_RNDN);
        mpfr_init(r38496);
        mpfr_init_set_str(r38497, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38498, "3", 10, MPFR_RNDN);
        mpfr_init(r38499);
        mpfr_init(r38500);
        mpfr_init(r38501);
        mpfr_init(r38502);
        mpfr_init(r38503);
        mpfr_init_set_str(r38504, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38505);
        mpfr_init(r38506);
        mpfr_init(r38507);
        mpfr_init(r38508);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r38491, im, MPFR_RNDN);
        ;
        mpfr_pow(r38493, r38491, r38492, MPFR_RNDN);
        mpfr_mul(r38494, r38490, r38493, MPFR_RNDN);
        ;
        mpfr_mul(r38496, r38495, r38491, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38499, r38491, r38498, MPFR_RNDN);
        mpfr_mul(r38500, r38497, r38499, MPFR_RNDN);
        mpfr_add(r38501, r38496, r38500, MPFR_RNDN);
        mpfr_add(r38502, r38494, r38501, MPFR_RNDN);
        mpfr_neg(r38503, r38502, MPFR_RNDN);
        ;
        mpfr_set_d(r38505, re, MPFR_RNDN);
        mpfr_cos(r38506, r38505, MPFR_RNDN);
        mpfr_mul(r38507, r38504, r38506, MPFR_RNDN);
        mpfr_mul(r38508, r38503, r38507, MPFR_RNDN);
        return mpfr_get_d(r38508, MPFR_RNDN);
}

