#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 r26377 = 0.5;
        float r26378 = re;
        float r26379 = cos(r26378);
        float r26380 = r26377 * r26379;
        float r26381 = 0;
        float r26382 = im;
        float r26383 = r26381 - r26382;
        float r26384 = exp(r26383);
        float r26385 = exp(r26382);
        float r26386 = r26384 - r26385;
        float r26387 = r26380 * r26386;
        return r26387;
}

double f_id(double re, double im) {
        double r26388 = 0.5;
        double r26389 = re;
        double r26390 = cos(r26389);
        double r26391 = r26388 * r26390;
        double r26392 = 0;
        double r26393 = im;
        double r26394 = r26392 - r26393;
        double r26395 = exp(r26394);
        double r26396 = exp(r26393);
        double r26397 = r26395 - r26396;
        double r26398 = r26391 * r26397;
        return r26398;
}


double f_of(float re, float im) {
        float r26399 = 0.5;
        float r26400 = re;
        float r26401 = cos(r26400);
        float r26402 = r26399 * r26401;
        float r26403 = 1/60;
        float r26404 = im;
        float r26405 = 5;
        float r26406 = pow(r26404, r26405);
        float r26407 = r26403 * r26406;
        float r26408 = 2;
        float r26409 = r26408 * r26404;
        float r26410 = 1/3;
        float r26411 = 3;
        float r26412 = pow(r26404, r26411);
        float r26413 = r26410 * r26412;
        float r26414 = r26409 + r26413;
        float r26415 = r26407 + r26414;
        float r26416 = -r26415;
        float r26417 = r26402 * r26416;
        return r26417;
}

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

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 r26437, r26438, r26439, r26440, r26441, r26442, r26443, r26444, r26445, r26446, r26447;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r26437, "0.5", 10, MPFR_RNDN);
        mpfr_init(r26438);
        mpfr_init(r26439);
        mpfr_init(r26440);
        mpfr_init_set_str(r26441, "0", 10, MPFR_RNDN);
        mpfr_init(r26442);
        mpfr_init(r26443);
        mpfr_init(r26444);
        mpfr_init(r26445);
        mpfr_init(r26446);
        mpfr_init(r26447);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r26438, re, MPFR_RNDN);
        mpfr_cos(r26439, r26438, MPFR_RNDN);
        mpfr_mul(r26440, r26437, r26439, MPFR_RNDN);
        ;
        mpfr_set_d(r26442, im, MPFR_RNDN);
        mpfr_sub(r26443, r26441, r26442, MPFR_RNDN);
        mpfr_exp(r26444, r26443, MPFR_RNDN);
        mpfr_exp(r26445, r26442, MPFR_RNDN);
        mpfr_sub(r26446, r26444, r26445, MPFR_RNDN);
        mpfr_mul(r26447, r26440, r26446, MPFR_RNDN);
        return mpfr_get_d(r26447, MPFR_RNDN);
}

static mpfr_t r26448, r26449, r26450, r26451, r26452, r26453, r26454, r26455, r26456, r26457, r26458, r26459, r26460, r26461, r26462, r26463, r26464, r26465, r26466;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r26448, "0.5", 10, MPFR_RNDN);
        mpfr_init(r26449);
        mpfr_init(r26450);
        mpfr_init(r26451);
        mpfr_init_set_str(r26452, "1/60", 10, MPFR_RNDN);
        mpfr_init(r26453);
        mpfr_init_set_str(r26454, "5", 10, MPFR_RNDN);
        mpfr_init(r26455);
        mpfr_init(r26456);
        mpfr_init_set_str(r26457, "2", 10, MPFR_RNDN);
        mpfr_init(r26458);
        mpfr_init_set_str(r26459, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r26460, "3", 10, MPFR_RNDN);
        mpfr_init(r26461);
        mpfr_init(r26462);
        mpfr_init(r26463);
        mpfr_init(r26464);
        mpfr_init(r26465);
        mpfr_init(r26466);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r26449, re, MPFR_RNDN);
        mpfr_cos(r26450, r26449, MPFR_RNDN);
        mpfr_mul(r26451, r26448, r26450, MPFR_RNDN);
        ;
        mpfr_set_d(r26453, im, MPFR_RNDN);
        ;
        mpfr_pow(r26455, r26453, r26454, MPFR_RNDN);
        mpfr_mul(r26456, r26452, r26455, MPFR_RNDN);
        ;
        mpfr_mul(r26458, r26457, r26453, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26461, r26453, r26460, MPFR_RNDN);
        mpfr_mul(r26462, r26459, r26461, MPFR_RNDN);
        mpfr_add(r26463, r26458, r26462, MPFR_RNDN);
        mpfr_add(r26464, r26456, r26463, MPFR_RNDN);
        mpfr_neg(r26465, r26464, MPFR_RNDN);
        mpfr_mul(r26466, r26451, r26465, MPFR_RNDN);
        return mpfr_get_d(r26466, MPFR_RNDN);
}

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

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

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

