#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 r12199 = 0.5;
        float r12200 = re;
        float r12201 = sin(r12200);
        float r12202 = r12199 * r12201;
        float r12203 = im;
        float r12204 = -r12203;
        float r12205 = exp(r12204);
        float r12206 = exp(r12203);
        float r12207 = r12205 - r12206;
        float r12208 = r12202 * r12207;
        return r12208;
}

double f_id(double re, double im) {
        double r12209 = 0.5;
        double r12210 = re;
        double r12211 = sin(r12210);
        double r12212 = r12209 * r12211;
        double r12213 = im;
        double r12214 = -r12213;
        double r12215 = exp(r12214);
        double r12216 = exp(r12213);
        double r12217 = r12215 - r12216;
        double r12218 = r12212 * r12217;
        return r12218;
}


double f_of(float re, float im) {
        float r12219 = 0.5;
        float r12220 = re;
        float r12221 = sin(r12220);
        float r12222 = r12219 * r12221;
        float r12223 = im;
        float r12224 = -r12223;
        float r12225 = exp(r12224);
        float r12226 = exp(r12223);
        float r12227 = r12225 - r12226;
        float r12228 = exp(r12227);
        float r12229 = log(r12228);
        float r12230 = r12222 * r12229;
        float r12231 = -0.7470955502318206;
        bool r12232 = r12230 <= r12231;
        float r12233 = r12225 * r12225;
        float r12234 = r12226 * r12226;
        float r12235 = r12233 - r12234;
        float r12236 = r12225 + r12226;
        float r12237 = r12235 / r12236;
        float r12238 = r12222 * r12237;
        float r12239 = -r12219;
        float r12240 = r12221 * r12239;
        float r12241 = 1/3;
        float r12242 = r12241 * r12223;
        float r12243 = 2;
        float r12244 = fma(r12223, r12242, r12243);
        float r12245 = 5;
        float r12246 = pow(r12223, r12245);
        float r12247 = 1/60;
        float r12248 = r12246 * r12247;
        float r12249 = fma(r12223, r12244, r12248);
        float r12250 = r12240 * r12249;
        float r12251 = r12232 ? r12238 : r12250;
        return r12251;
}

double f_od(double re, double im) {
        double r12252 = 0.5;
        double r12253 = re;
        double r12254 = sin(r12253);
        double r12255 = r12252 * r12254;
        double r12256 = im;
        double r12257 = -r12256;
        double r12258 = exp(r12257);
        double r12259 = exp(r12256);
        double r12260 = r12258 - r12259;
        double r12261 = exp(r12260);
        double r12262 = log(r12261);
        double r12263 = r12255 * r12262;
        double r12264 = -0.7470955502318206;
        bool r12265 = r12263 <= r12264;
        double r12266 = r12258 * r12258;
        double r12267 = r12259 * r12259;
        double r12268 = r12266 - r12267;
        double r12269 = r12258 + r12259;
        double r12270 = r12268 / r12269;
        double r12271 = r12255 * r12270;
        double r12272 = -r12252;
        double r12273 = r12254 * r12272;
        double r12274 = 1/3;
        double r12275 = r12274 * r12256;
        double r12276 = 2;
        double r12277 = fma(r12256, r12275, r12276);
        double r12278 = 5;
        double r12279 = pow(r12256, r12278);
        double r12280 = 1/60;
        double r12281 = r12279 * r12280;
        double r12282 = fma(r12256, r12277, r12281);
        double r12283 = r12273 * r12282;
        double r12284 = r12265 ? r12271 : r12283;
        return r12284;
}

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 r12285, r12286, r12287, r12288, r12289, r12290, r12291, r12292, r12293, r12294;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r12285, "0.5", 10, MPFR_RNDN);
        mpfr_init(r12286);
        mpfr_init(r12287);
        mpfr_init(r12288);
        mpfr_init(r12289);
        mpfr_init(r12290);
        mpfr_init(r12291);
        mpfr_init(r12292);
        mpfr_init(r12293);
        mpfr_init(r12294);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r12286, re, MPFR_RNDN);
        mpfr_sin(r12287, r12286, MPFR_RNDN);
        mpfr_mul(r12288, r12285, r12287, MPFR_RNDN);
        mpfr_set_d(r12289, im, MPFR_RNDN);
        mpfr_neg(r12290, r12289, MPFR_RNDN);
        mpfr_exp(r12291, r12290, MPFR_RNDN);
        mpfr_exp(r12292, r12289, MPFR_RNDN);
        mpfr_sub(r12293, r12291, r12292, MPFR_RNDN);
        mpfr_mul(r12294, r12288, r12293, MPFR_RNDN);
        return mpfr_get_d(r12294, MPFR_RNDN);
}

static mpfr_t r12295, r12296, r12297, r12298, r12299, r12300, r12301, r12302, r12303, r12304, r12305, r12306, r12307, r12308, r12309, r12310, r12311, r12312, r12313, r12314, r12315, r12316, r12317, r12318, r12319, r12320, r12321, r12322, r12323, r12324, r12325, r12326, r12327;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r12295, "0.5", 10, MPFR_RNDN);
        mpfr_init(r12296);
        mpfr_init(r12297);
        mpfr_init(r12298);
        mpfr_init(r12299);
        mpfr_init(r12300);
        mpfr_init(r12301);
        mpfr_init(r12302);
        mpfr_init(r12303);
        mpfr_init(r12304);
        mpfr_init(r12305);
        mpfr_init(r12306);
        mpfr_init_set_str(r12307, "-0.7470955502318206", 10, MPFR_RNDN);
        mpfr_init(r12308);
        mpfr_init(r12309);
        mpfr_init(r12310);
        mpfr_init(r12311);
        mpfr_init(r12312);
        mpfr_init(r12313);
        mpfr_init(r12314);
        mpfr_init(r12315);
        mpfr_init(r12316);
        mpfr_init_set_str(r12317, "1/3", 10, MPFR_RNDN);
        mpfr_init(r12318);
        mpfr_init_set_str(r12319, "2", 10, MPFR_RNDN);
        mpfr_init(r12320);
        mpfr_init_set_str(r12321, "5", 10, MPFR_RNDN);
        mpfr_init(r12322);
        mpfr_init_set_str(r12323, "1/60", 10, MPFR_RNDN);
        mpfr_init(r12324);
        mpfr_init(r12325);
        mpfr_init(r12326);
        mpfr_init(r12327);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r12296, re, MPFR_RNDN);
        mpfr_sin(r12297, r12296, MPFR_RNDN);
        mpfr_mul(r12298, r12295, r12297, MPFR_RNDN);
        mpfr_set_d(r12299, im, MPFR_RNDN);
        mpfr_neg(r12300, r12299, MPFR_RNDN);
        mpfr_exp(r12301, r12300, MPFR_RNDN);
        mpfr_exp(r12302, r12299, MPFR_RNDN);
        mpfr_sub(r12303, r12301, r12302, MPFR_RNDN);
        mpfr_exp(r12304, r12303, MPFR_RNDN);
        mpfr_log(r12305, r12304, MPFR_RNDN);
        mpfr_mul(r12306, r12298, r12305, MPFR_RNDN);
        ;
        mpfr_set_si(r12308, mpfr_cmp(r12306, r12307) <= 0, MPFR_RNDN);
        mpfr_mul(r12309, r12301, r12301, MPFR_RNDN);
        mpfr_mul(r12310, r12302, r12302, MPFR_RNDN);
        mpfr_sub(r12311, r12309, r12310, MPFR_RNDN);
        mpfr_add(r12312, r12301, r12302, MPFR_RNDN);
        mpfr_div(r12313, r12311, r12312, MPFR_RNDN);
        mpfr_mul(r12314, r12298, r12313, MPFR_RNDN);
        mpfr_neg(r12315, r12295, MPFR_RNDN);
        mpfr_mul(r12316, r12297, r12315, MPFR_RNDN);
        ;
        mpfr_mul(r12318, r12317, r12299, MPFR_RNDN);
        ;
        mpfr_fma(r12320, r12299, r12318, r12319, MPFR_RNDN);
        ;
        mpfr_pow(r12322, r12299, r12321, MPFR_RNDN);
        ;
        mpfr_mul(r12324, r12322, r12323, MPFR_RNDN);
        mpfr_fma(r12325, r12299, r12320, r12324, MPFR_RNDN);
        mpfr_mul(r12326, r12316, r12325, MPFR_RNDN);
        if (mpfr_get_si(r12308, MPFR_RNDN)) { mpfr_set(r12327, r12314, MPFR_RNDN); } else { mpfr_set(r12327, r12326, MPFR_RNDN); };
        return mpfr_get_d(r12327, MPFR_RNDN);
}

static mpfr_t r12328, r12329, r12330, r12331, r12332, r12333, r12334, r12335, r12336, r12337, r12338, r12339, r12340, r12341, r12342, r12343, r12344, r12345, r12346, r12347, r12348, r12349, r12350, r12351, r12352, r12353, r12354, r12355, r12356, r12357, r12358, r12359, r12360;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r12328, "0.5", 10, MPFR_RNDN);
        mpfr_init(r12329);
        mpfr_init(r12330);
        mpfr_init(r12331);
        mpfr_init(r12332);
        mpfr_init(r12333);
        mpfr_init(r12334);
        mpfr_init(r12335);
        mpfr_init(r12336);
        mpfr_init(r12337);
        mpfr_init(r12338);
        mpfr_init(r12339);
        mpfr_init_set_str(r12340, "-0.7470955502318206", 10, MPFR_RNDN);
        mpfr_init(r12341);
        mpfr_init(r12342);
        mpfr_init(r12343);
        mpfr_init(r12344);
        mpfr_init(r12345);
        mpfr_init(r12346);
        mpfr_init(r12347);
        mpfr_init(r12348);
        mpfr_init(r12349);
        mpfr_init_set_str(r12350, "1/3", 10, MPFR_RNDN);
        mpfr_init(r12351);
        mpfr_init_set_str(r12352, "2", 10, MPFR_RNDN);
        mpfr_init(r12353);
        mpfr_init_set_str(r12354, "5", 10, MPFR_RNDN);
        mpfr_init(r12355);
        mpfr_init_set_str(r12356, "1/60", 10, MPFR_RNDN);
        mpfr_init(r12357);
        mpfr_init(r12358);
        mpfr_init(r12359);
        mpfr_init(r12360);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r12329, re, MPFR_RNDN);
        mpfr_sin(r12330, r12329, MPFR_RNDN);
        mpfr_mul(r12331, r12328, r12330, MPFR_RNDN);
        mpfr_set_d(r12332, im, MPFR_RNDN);
        mpfr_neg(r12333, r12332, MPFR_RNDN);
        mpfr_exp(r12334, r12333, MPFR_RNDN);
        mpfr_exp(r12335, r12332, MPFR_RNDN);
        mpfr_sub(r12336, r12334, r12335, MPFR_RNDN);
        mpfr_exp(r12337, r12336, MPFR_RNDN);
        mpfr_log(r12338, r12337, MPFR_RNDN);
        mpfr_mul(r12339, r12331, r12338, MPFR_RNDN);
        ;
        mpfr_set_si(r12341, mpfr_cmp(r12339, r12340) <= 0, MPFR_RNDN);
        mpfr_mul(r12342, r12334, r12334, MPFR_RNDN);
        mpfr_mul(r12343, r12335, r12335, MPFR_RNDN);
        mpfr_sub(r12344, r12342, r12343, MPFR_RNDN);
        mpfr_add(r12345, r12334, r12335, MPFR_RNDN);
        mpfr_div(r12346, r12344, r12345, MPFR_RNDN);
        mpfr_mul(r12347, r12331, r12346, MPFR_RNDN);
        mpfr_neg(r12348, r12328, MPFR_RNDN);
        mpfr_mul(r12349, r12330, r12348, MPFR_RNDN);
        ;
        mpfr_mul(r12351, r12350, r12332, MPFR_RNDN);
        ;
        mpfr_fma(r12353, r12332, r12351, r12352, MPFR_RNDN);
        ;
        mpfr_pow(r12355, r12332, r12354, MPFR_RNDN);
        ;
        mpfr_mul(r12357, r12355, r12356, MPFR_RNDN);
        mpfr_fma(r12358, r12332, r12353, r12357, MPFR_RNDN);
        mpfr_mul(r12359, r12349, r12358, MPFR_RNDN);
        if (mpfr_get_si(r12341, MPFR_RNDN)) { mpfr_set(r12360, r12347, MPFR_RNDN); } else { mpfr_set(r12360, r12359, MPFR_RNDN); };
        return mpfr_get_d(r12360, MPFR_RNDN);
}

