#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 r26394 = 0.5;
        float r26395 = re;
        float r26396 = cos(r26395);
        float r26397 = r26394 * r26396;
        float r26398 = 0;
        float r26399 = im;
        float r26400 = r26398 - r26399;
        float r26401 = exp(r26400);
        float r26402 = exp(r26399);
        float r26403 = r26401 - r26402;
        float r26404 = r26397 * r26403;
        return r26404;
}

double f_id(double re, double im) {
        double r26405 = 0.5;
        double r26406 = re;
        double r26407 = cos(r26406);
        double r26408 = r26405 * r26407;
        double r26409 = 0;
        double r26410 = im;
        double r26411 = r26409 - r26410;
        double r26412 = exp(r26411);
        double r26413 = exp(r26410);
        double r26414 = r26412 - r26413;
        double r26415 = r26408 * r26414;
        return r26415;
}


double f_of(float re, float im) {
        float r26416 = 0.5;
        float r26417 = re;
        float r26418 = cos(r26417);
        float r26419 = r26416 * r26418;
        float r26420 = 1/60;
        float r26421 = im;
        float r26422 = 5;
        float r26423 = pow(r26421, r26422);
        float r26424 = r26420 * r26423;
        float r26425 = 2;
        float r26426 = r26425 * r26421;
        float r26427 = 1/3;
        float r26428 = 3;
        float r26429 = pow(r26421, r26428);
        float r26430 = r26427 * r26429;
        float r26431 = r26426 + r26430;
        float r26432 = r26424 + r26431;
        float r26433 = -r26432;
        float r26434 = r26419 * r26433;
        return r26434;
}

double f_od(double re, double im) {
        double r26435 = 0.5;
        double r26436 = re;
        double r26437 = cos(r26436);
        double r26438 = r26435 * r26437;
        double r26439 = 1/60;
        double r26440 = im;
        double r26441 = 5;
        double r26442 = pow(r26440, r26441);
        double r26443 = r26439 * r26442;
        double r26444 = 2;
        double r26445 = r26444 * r26440;
        double r26446 = 1/3;
        double r26447 = 3;
        double r26448 = pow(r26440, r26447);
        double r26449 = r26446 * r26448;
        double r26450 = r26445 + r26449;
        double r26451 = r26443 + r26450;
        double r26452 = -r26451;
        double r26453 = r26438 * r26452;
        return r26453;
}

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 r26454, r26455, r26456, r26457, r26458, r26459, r26460, r26461, r26462, r26463, r26464;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r26454, "0.5", 10, MPFR_RNDN);
        mpfr_init(r26455);
        mpfr_init(r26456);
        mpfr_init(r26457);
        mpfr_init_set_str(r26458, "0", 10, MPFR_RNDN);
        mpfr_init(r26459);
        mpfr_init(r26460);
        mpfr_init(r26461);
        mpfr_init(r26462);
        mpfr_init(r26463);
        mpfr_init(r26464);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r26455, re, MPFR_RNDN);
        mpfr_cos(r26456, r26455, MPFR_RNDN);
        mpfr_mul(r26457, r26454, r26456, MPFR_RNDN);
        ;
        mpfr_set_d(r26459, im, MPFR_RNDN);
        mpfr_sub(r26460, r26458, r26459, MPFR_RNDN);
        mpfr_exp(r26461, r26460, MPFR_RNDN);
        mpfr_exp(r26462, r26459, MPFR_RNDN);
        mpfr_sub(r26463, r26461, r26462, MPFR_RNDN);
        mpfr_mul(r26464, r26457, r26463, MPFR_RNDN);
        return mpfr_get_d(r26464, MPFR_RNDN);
}

static mpfr_t r26465, r26466, r26467, r26468, r26469, r26470, r26471, r26472, r26473, r26474, r26475, r26476, r26477, r26478, r26479, r26480, r26481, r26482, r26483;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r26465, "0.5", 10, MPFR_RNDN);
        mpfr_init(r26466);
        mpfr_init(r26467);
        mpfr_init(r26468);
        mpfr_init_set_str(r26469, "1/60", 10, MPFR_RNDN);
        mpfr_init(r26470);
        mpfr_init_set_str(r26471, "5", 10, MPFR_RNDN);
        mpfr_init(r26472);
        mpfr_init(r26473);
        mpfr_init_set_str(r26474, "2", 10, MPFR_RNDN);
        mpfr_init(r26475);
        mpfr_init_set_str(r26476, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r26477, "3", 10, MPFR_RNDN);
        mpfr_init(r26478);
        mpfr_init(r26479);
        mpfr_init(r26480);
        mpfr_init(r26481);
        mpfr_init(r26482);
        mpfr_init(r26483);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r26466, re, MPFR_RNDN);
        mpfr_cos(r26467, r26466, MPFR_RNDN);
        mpfr_mul(r26468, r26465, r26467, MPFR_RNDN);
        ;
        mpfr_set_d(r26470, im, MPFR_RNDN);
        ;
        mpfr_pow(r26472, r26470, r26471, MPFR_RNDN);
        mpfr_mul(r26473, r26469, r26472, MPFR_RNDN);
        ;
        mpfr_mul(r26475, r26474, r26470, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26478, r26470, r26477, MPFR_RNDN);
        mpfr_mul(r26479, r26476, r26478, MPFR_RNDN);
        mpfr_add(r26480, r26475, r26479, MPFR_RNDN);
        mpfr_add(r26481, r26473, r26480, MPFR_RNDN);
        mpfr_neg(r26482, r26481, MPFR_RNDN);
        mpfr_mul(r26483, r26468, r26482, MPFR_RNDN);
        return mpfr_get_d(r26483, MPFR_RNDN);
}

static mpfr_t r26484, r26485, r26486, r26487, r26488, r26489, r26490, r26491, r26492, r26493, r26494, r26495, r26496, r26497, r26498, r26499, r26500, r26501, r26502;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r26484, "0.5", 10, MPFR_RNDN);
        mpfr_init(r26485);
        mpfr_init(r26486);
        mpfr_init(r26487);
        mpfr_init_set_str(r26488, "1/60", 10, MPFR_RNDN);
        mpfr_init(r26489);
        mpfr_init_set_str(r26490, "5", 10, MPFR_RNDN);
        mpfr_init(r26491);
        mpfr_init(r26492);
        mpfr_init_set_str(r26493, "2", 10, MPFR_RNDN);
        mpfr_init(r26494);
        mpfr_init_set_str(r26495, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r26496, "3", 10, MPFR_RNDN);
        mpfr_init(r26497);
        mpfr_init(r26498);
        mpfr_init(r26499);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init(r26502);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r26485, re, MPFR_RNDN);
        mpfr_cos(r26486, r26485, MPFR_RNDN);
        mpfr_mul(r26487, r26484, r26486, MPFR_RNDN);
        ;
        mpfr_set_d(r26489, im, MPFR_RNDN);
        ;
        mpfr_pow(r26491, r26489, r26490, MPFR_RNDN);
        mpfr_mul(r26492, r26488, r26491, MPFR_RNDN);
        ;
        mpfr_mul(r26494, r26493, r26489, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26497, r26489, r26496, MPFR_RNDN);
        mpfr_mul(r26498, r26495, r26497, MPFR_RNDN);
        mpfr_add(r26499, r26494, r26498, MPFR_RNDN);
        mpfr_add(r26500, r26492, r26499, MPFR_RNDN);
        mpfr_neg(r26501, r26500, MPFR_RNDN);
        mpfr_mul(r26502, r26487, r26501, MPFR_RNDN);
        return mpfr_get_d(r26502, MPFR_RNDN);
}

