#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 r12281 = 0.5f;
        float r12282 = re;
        float r12283 = sin(r12282);
        float r12284 = r12281 * r12283;
        float r12285 = im;
        float r12286 = -r12285;
        float r12287 = exp(r12286);
        float r12288 = exp(r12285);
        float r12289 = r12287 - r12288;
        float r12290 = r12284 * r12289;
        return r12290;
}

double f_id(double re, double im) {
        double r12291 = 0.5;
        double r12292 = re;
        double r12293 = sin(r12292);
        double r12294 = r12291 * r12293;
        double r12295 = im;
        double r12296 = -r12295;
        double r12297 = exp(r12296);
        double r12298 = exp(r12295);
        double r12299 = r12297 - r12298;
        double r12300 = r12294 * r12299;
        return r12300;
}


double f_of(float re, float im) {
        float r12301 = im;
        float r12302 = 2.0f;
        float r12303 = r12301 * r12302;
        float r12304 = 5.0f;
        float r12305 = pow(r12301, r12304);
        float r12306 = 0.016666666666666666f;
        float r12307 = r12305 * r12306;
        float r12308 = r12303 + r12307;
        float r12309 = 3.0f;
        float r12310 = pow(r12301, r12309);
        float r12311 = 0.3333333333333333f;
        float r12312 = r12310 * r12311;
        float r12313 = r12308 + r12312;
        float r12314 = re;
        float r12315 = sin(r12314);
        float r12316 = 0.5f;
        float r12317 = -r12316;
        float r12318 = r12315 * r12317;
        float r12319 = r12313 * r12318;
        return r12319;
}

double f_od(double re, double im) {
        double r12320 = im;
        double r12321 = 2.0;
        double r12322 = r12320 * r12321;
        double r12323 = 5.0;
        double r12324 = pow(r12320, r12323);
        double r12325 = 0.016666666666666666;
        double r12326 = r12324 * r12325;
        double r12327 = r12322 + r12326;
        double r12328 = 3.0;
        double r12329 = pow(r12320, r12328);
        double r12330 = 0.3333333333333333;
        double r12331 = r12329 * r12330;
        double r12332 = r12327 + r12331;
        double r12333 = re;
        double r12334 = sin(r12333);
        double r12335 = 0.5;
        double r12336 = -r12335;
        double r12337 = r12334 * r12336;
        double r12338 = r12332 * r12337;
        return r12338;
}

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 r12339, r12340, r12341, r12342, r12343, r12344, r12345, r12346, r12347, r12348;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r12339, "0.5", 10, MPFR_RNDN);
        mpfr_init(r12340);
        mpfr_init(r12341);
        mpfr_init(r12342);
        mpfr_init(r12343);
        mpfr_init(r12344);
        mpfr_init(r12345);
        mpfr_init(r12346);
        mpfr_init(r12347);
        mpfr_init(r12348);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r12340, re, MPFR_RNDN);
        mpfr_sin(r12341, r12340, MPFR_RNDN);
        mpfr_mul(r12342, r12339, r12341, MPFR_RNDN);
        mpfr_set_d(r12343, im, MPFR_RNDN);
        mpfr_neg(r12344, r12343, MPFR_RNDN);
        mpfr_exp(r12345, r12344, MPFR_RNDN);
        mpfr_exp(r12346, r12343, MPFR_RNDN);
        mpfr_sub(r12347, r12345, r12346, MPFR_RNDN);
        mpfr_mul(r12348, r12342, r12347, MPFR_RNDN);
        return mpfr_get_d(r12348, MPFR_RNDN);
}

static mpfr_t r12349, r12350, r12351, r12352, r12353, r12354, r12355, r12356, r12357, r12358, r12359, r12360, r12361, r12362, r12363, r12364, r12365, r12366, r12367;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12349);
        mpfr_init_set_str(r12350, "2", 10, MPFR_RNDN);
        mpfr_init(r12351);
        mpfr_init_set_str(r12352, "5", 10, MPFR_RNDN);
        mpfr_init(r12353);
        mpfr_init_set_str(r12354, "1/60", 10, MPFR_RNDN);
        mpfr_init(r12355);
        mpfr_init(r12356);
        mpfr_init_set_str(r12357, "3", 10, MPFR_RNDN);
        mpfr_init(r12358);
        mpfr_init_set_str(r12359, "1/3", 10, MPFR_RNDN);
        mpfr_init(r12360);
        mpfr_init(r12361);
        mpfr_init(r12362);
        mpfr_init(r12363);
        mpfr_init_set_str(r12364, "0.5", 10, MPFR_RNDN);
        mpfr_init(r12365);
        mpfr_init(r12366);
        mpfr_init(r12367);
}

double f_fm(double re, double im) {
        mpfr_set_d(r12349, im, MPFR_RNDN);
        ;
        mpfr_mul(r12351, r12349, r12350, MPFR_RNDN);
        ;
        mpfr_pow(r12353, r12349, r12352, MPFR_RNDN);
        ;
        mpfr_mul(r12355, r12353, r12354, MPFR_RNDN);
        mpfr_add(r12356, r12351, r12355, MPFR_RNDN);
        ;
        mpfr_pow(r12358, r12349, r12357, MPFR_RNDN);
        ;
        mpfr_mul(r12360, r12358, r12359, MPFR_RNDN);
        mpfr_add(r12361, r12356, r12360, MPFR_RNDN);
        mpfr_set_d(r12362, re, MPFR_RNDN);
        mpfr_sin(r12363, r12362, MPFR_RNDN);
        ;
        mpfr_neg(r12365, r12364, MPFR_RNDN);
        mpfr_mul(r12366, r12363, r12365, MPFR_RNDN);
        mpfr_mul(r12367, r12361, r12366, MPFR_RNDN);
        return mpfr_get_d(r12367, MPFR_RNDN);
}

static mpfr_t r12368, r12369, r12370, r12371, r12372, r12373, r12374, r12375, r12376, r12377, r12378, r12379, r12380, r12381, r12382, r12383, r12384, r12385, r12386;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12368);
        mpfr_init_set_str(r12369, "2", 10, MPFR_RNDN);
        mpfr_init(r12370);
        mpfr_init_set_str(r12371, "5", 10, MPFR_RNDN);
        mpfr_init(r12372);
        mpfr_init_set_str(r12373, "1/60", 10, MPFR_RNDN);
        mpfr_init(r12374);
        mpfr_init(r12375);
        mpfr_init_set_str(r12376, "3", 10, MPFR_RNDN);
        mpfr_init(r12377);
        mpfr_init_set_str(r12378, "1/3", 10, MPFR_RNDN);
        mpfr_init(r12379);
        mpfr_init(r12380);
        mpfr_init(r12381);
        mpfr_init(r12382);
        mpfr_init_set_str(r12383, "0.5", 10, MPFR_RNDN);
        mpfr_init(r12384);
        mpfr_init(r12385);
        mpfr_init(r12386);
}

double f_dm(double re, double im) {
        mpfr_set_d(r12368, im, MPFR_RNDN);
        ;
        mpfr_mul(r12370, r12368, r12369, MPFR_RNDN);
        ;
        mpfr_pow(r12372, r12368, r12371, MPFR_RNDN);
        ;
        mpfr_mul(r12374, r12372, r12373, MPFR_RNDN);
        mpfr_add(r12375, r12370, r12374, MPFR_RNDN);
        ;
        mpfr_pow(r12377, r12368, r12376, MPFR_RNDN);
        ;
        mpfr_mul(r12379, r12377, r12378, MPFR_RNDN);
        mpfr_add(r12380, r12375, r12379, MPFR_RNDN);
        mpfr_set_d(r12381, re, MPFR_RNDN);
        mpfr_sin(r12382, r12381, MPFR_RNDN);
        ;
        mpfr_neg(r12384, r12383, MPFR_RNDN);
        mpfr_mul(r12385, r12382, r12384, MPFR_RNDN);
        mpfr_mul(r12386, r12380, r12385, MPFR_RNDN);
        return mpfr_get_d(r12386, MPFR_RNDN);
}

