#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 r26359 = 0.5;
        float r26360 = re;
        float r26361 = sin(r26360);
        float r26362 = r26359 * r26361;
        float r26363 = im;
        float r26364 = -r26363;
        float r26365 = exp(r26364);
        float r26366 = exp(r26363);
        float r26367 = r26365 - r26366;
        float r26368 = r26362 * r26367;
        return r26368;
}

double f_id(double re, double im) {
        double r26369 = 0.5;
        double r26370 = re;
        double r26371 = sin(r26370);
        double r26372 = r26369 * r26371;
        double r26373 = im;
        double r26374 = -r26373;
        double r26375 = exp(r26374);
        double r26376 = exp(r26373);
        double r26377 = r26375 - r26376;
        double r26378 = r26372 * r26377;
        return r26378;
}


double f_of(float re, float im) {
        float r26379 = 0.5;
        float r26380 = re;
        float r26381 = sin(r26380);
        float r26382 = r26379 * r26381;
        float r26383 = 1/60;
        float r26384 = im;
        float r26385 = 5;
        float r26386 = pow(r26384, r26385);
        float r26387 = r26383 * r26386;
        float r26388 = 2;
        float r26389 = r26388 * r26384;
        float r26390 = 1/3;
        float r26391 = 3;
        float r26392 = pow(r26384, r26391);
        float r26393 = r26390 * r26392;
        float r26394 = r26389 + r26393;
        float r26395 = r26387 + r26394;
        float r26396 = -r26395;
        float r26397 = r26382 * r26396;
        return r26397;
}

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

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 r26417, r26418, r26419, r26420, r26421, r26422, r26423, r26424, r26425, r26426;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r26417, "0.5", 10, MPFR_RNDN);
        mpfr_init(r26418);
        mpfr_init(r26419);
        mpfr_init(r26420);
        mpfr_init(r26421);
        mpfr_init(r26422);
        mpfr_init(r26423);
        mpfr_init(r26424);
        mpfr_init(r26425);
        mpfr_init(r26426);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r26418, re, MPFR_RNDN);
        mpfr_sin(r26419, r26418, MPFR_RNDN);
        mpfr_mul(r26420, r26417, r26419, MPFR_RNDN);
        mpfr_set_d(r26421, im, MPFR_RNDN);
        mpfr_neg(r26422, r26421, MPFR_RNDN);
        mpfr_exp(r26423, r26422, MPFR_RNDN);
        mpfr_exp(r26424, r26421, MPFR_RNDN);
        mpfr_sub(r26425, r26423, r26424, MPFR_RNDN);
        mpfr_mul(r26426, r26420, r26425, MPFR_RNDN);
        return mpfr_get_d(r26426, MPFR_RNDN);
}

static mpfr_t r26427, r26428, r26429, r26430, r26431, r26432, r26433, r26434, r26435, r26436, r26437, r26438, r26439, r26440, r26441, r26442, r26443, r26444, r26445;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r26427, "0.5", 10, MPFR_RNDN);
        mpfr_init(r26428);
        mpfr_init(r26429);
        mpfr_init(r26430);
        mpfr_init_set_str(r26431, "1/60", 10, MPFR_RNDN);
        mpfr_init(r26432);
        mpfr_init_set_str(r26433, "5", 10, MPFR_RNDN);
        mpfr_init(r26434);
        mpfr_init(r26435);
        mpfr_init_set_str(r26436, "2", 10, MPFR_RNDN);
        mpfr_init(r26437);
        mpfr_init_set_str(r26438, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r26439, "3", 10, MPFR_RNDN);
        mpfr_init(r26440);
        mpfr_init(r26441);
        mpfr_init(r26442);
        mpfr_init(r26443);
        mpfr_init(r26444);
        mpfr_init(r26445);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r26428, re, MPFR_RNDN);
        mpfr_sin(r26429, r26428, MPFR_RNDN);
        mpfr_mul(r26430, r26427, r26429, MPFR_RNDN);
        ;
        mpfr_set_d(r26432, im, MPFR_RNDN);
        ;
        mpfr_pow(r26434, r26432, r26433, MPFR_RNDN);
        mpfr_mul(r26435, r26431, r26434, MPFR_RNDN);
        ;
        mpfr_mul(r26437, r26436, r26432, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26440, r26432, r26439, MPFR_RNDN);
        mpfr_mul(r26441, r26438, r26440, MPFR_RNDN);
        mpfr_add(r26442, r26437, r26441, MPFR_RNDN);
        mpfr_add(r26443, r26435, r26442, MPFR_RNDN);
        mpfr_neg(r26444, r26443, MPFR_RNDN);
        mpfr_mul(r26445, r26430, r26444, MPFR_RNDN);
        return mpfr_get_d(r26445, MPFR_RNDN);
}

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

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

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

