#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 r26158 = 0.5;
        float r26159 = re;
        float r26160 = cos(r26159);
        float r26161 = r26158 * r26160;
        float r26162 = 0;
        float r26163 = im;
        float r26164 = r26162 - r26163;
        float r26165 = exp(r26164);
        float r26166 = exp(r26163);
        float r26167 = r26165 - r26166;
        float r26168 = r26161 * r26167;
        return r26168;
}

double f_id(double re, double im) {
        double r26169 = 0.5;
        double r26170 = re;
        double r26171 = cos(r26170);
        double r26172 = r26169 * r26171;
        double r26173 = 0;
        double r26174 = im;
        double r26175 = r26173 - r26174;
        double r26176 = exp(r26175);
        double r26177 = exp(r26174);
        double r26178 = r26176 - r26177;
        double r26179 = r26172 * r26178;
        return r26179;
}


double f_of(float re, float im) {
        float r26180 = 0.5;
        float r26181 = re;
        float r26182 = cos(r26181);
        float r26183 = r26180 * r26182;
        float r26184 = 1/60;
        float r26185 = im;
        float r26186 = 5;
        float r26187 = pow(r26185, r26186);
        float r26188 = r26184 * r26187;
        float r26189 = 2;
        float r26190 = r26189 * r26185;
        float r26191 = 1/3;
        float r26192 = 3;
        float r26193 = pow(r26185, r26192);
        float r26194 = r26191 * r26193;
        float r26195 = r26190 + r26194;
        float r26196 = r26188 + r26195;
        float r26197 = -r26196;
        float r26198 = r26183 * r26197;
        return r26198;
}

double f_od(double re, double im) {
        double r26199 = 0.5;
        double r26200 = re;
        double r26201 = cos(r26200);
        double r26202 = r26199 * r26201;
        double r26203 = 1/60;
        double r26204 = im;
        double r26205 = 5;
        double r26206 = pow(r26204, r26205);
        double r26207 = r26203 * r26206;
        double r26208 = 2;
        double r26209 = r26208 * r26204;
        double r26210 = 1/3;
        double r26211 = 3;
        double r26212 = pow(r26204, r26211);
        double r26213 = r26210 * r26212;
        double r26214 = r26209 + r26213;
        double r26215 = r26207 + r26214;
        double r26216 = -r26215;
        double r26217 = r26202 * r26216;
        return r26217;
}

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 r26218, r26219, r26220, r26221, r26222, r26223, r26224, r26225, r26226, r26227, r26228;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r26218, "0.5", 10, MPFR_RNDN);
        mpfr_init(r26219);
        mpfr_init(r26220);
        mpfr_init(r26221);
        mpfr_init_set_str(r26222, "0", 10, MPFR_RNDN);
        mpfr_init(r26223);
        mpfr_init(r26224);
        mpfr_init(r26225);
        mpfr_init(r26226);
        mpfr_init(r26227);
        mpfr_init(r26228);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r26219, re, MPFR_RNDN);
        mpfr_cos(r26220, r26219, MPFR_RNDN);
        mpfr_mul(r26221, r26218, r26220, MPFR_RNDN);
        ;
        mpfr_set_d(r26223, im, MPFR_RNDN);
        mpfr_sub(r26224, r26222, r26223, MPFR_RNDN);
        mpfr_exp(r26225, r26224, MPFR_RNDN);
        mpfr_exp(r26226, r26223, MPFR_RNDN);
        mpfr_sub(r26227, r26225, r26226, MPFR_RNDN);
        mpfr_mul(r26228, r26221, r26227, MPFR_RNDN);
        return mpfr_get_d(r26228, MPFR_RNDN);
}

static mpfr_t r26229, r26230, r26231, r26232, r26233, r26234, r26235, r26236, r26237, r26238, r26239, r26240, r26241, r26242, r26243, r26244, r26245, r26246, r26247;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r26229, "0.5", 10, MPFR_RNDN);
        mpfr_init(r26230);
        mpfr_init(r26231);
        mpfr_init(r26232);
        mpfr_init_set_str(r26233, "1/60", 10, MPFR_RNDN);
        mpfr_init(r26234);
        mpfr_init_set_str(r26235, "5", 10, MPFR_RNDN);
        mpfr_init(r26236);
        mpfr_init(r26237);
        mpfr_init_set_str(r26238, "2", 10, MPFR_RNDN);
        mpfr_init(r26239);
        mpfr_init_set_str(r26240, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r26241, "3", 10, MPFR_RNDN);
        mpfr_init(r26242);
        mpfr_init(r26243);
        mpfr_init(r26244);
        mpfr_init(r26245);
        mpfr_init(r26246);
        mpfr_init(r26247);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r26230, re, MPFR_RNDN);
        mpfr_cos(r26231, r26230, MPFR_RNDN);
        mpfr_mul(r26232, r26229, r26231, MPFR_RNDN);
        ;
        mpfr_set_d(r26234, im, MPFR_RNDN);
        ;
        mpfr_pow(r26236, r26234, r26235, MPFR_RNDN);
        mpfr_mul(r26237, r26233, r26236, MPFR_RNDN);
        ;
        mpfr_mul(r26239, r26238, r26234, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26242, r26234, r26241, MPFR_RNDN);
        mpfr_mul(r26243, r26240, r26242, MPFR_RNDN);
        mpfr_add(r26244, r26239, r26243, MPFR_RNDN);
        mpfr_add(r26245, r26237, r26244, MPFR_RNDN);
        mpfr_neg(r26246, r26245, MPFR_RNDN);
        mpfr_mul(r26247, r26232, r26246, MPFR_RNDN);
        return mpfr_get_d(r26247, MPFR_RNDN);
}

static mpfr_t r26248, r26249, r26250, r26251, r26252, r26253, r26254, r26255, r26256, r26257, r26258, r26259, r26260, r26261, r26262, r26263, r26264, r26265, r26266;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r26248, "0.5", 10, MPFR_RNDN);
        mpfr_init(r26249);
        mpfr_init(r26250);
        mpfr_init(r26251);
        mpfr_init_set_str(r26252, "1/60", 10, MPFR_RNDN);
        mpfr_init(r26253);
        mpfr_init_set_str(r26254, "5", 10, MPFR_RNDN);
        mpfr_init(r26255);
        mpfr_init(r26256);
        mpfr_init_set_str(r26257, "2", 10, MPFR_RNDN);
        mpfr_init(r26258);
        mpfr_init_set_str(r26259, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r26260, "3", 10, MPFR_RNDN);
        mpfr_init(r26261);
        mpfr_init(r26262);
        mpfr_init(r26263);
        mpfr_init(r26264);
        mpfr_init(r26265);
        mpfr_init(r26266);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r26249, re, MPFR_RNDN);
        mpfr_cos(r26250, r26249, MPFR_RNDN);
        mpfr_mul(r26251, r26248, r26250, MPFR_RNDN);
        ;
        mpfr_set_d(r26253, im, MPFR_RNDN);
        ;
        mpfr_pow(r26255, r26253, r26254, MPFR_RNDN);
        mpfr_mul(r26256, r26252, r26255, MPFR_RNDN);
        ;
        mpfr_mul(r26258, r26257, r26253, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26261, r26253, r26260, MPFR_RNDN);
        mpfr_mul(r26262, r26259, r26261, MPFR_RNDN);
        mpfr_add(r26263, r26258, r26262, MPFR_RNDN);
        mpfr_add(r26264, r26256, r26263, MPFR_RNDN);
        mpfr_neg(r26265, r26264, MPFR_RNDN);
        mpfr_mul(r26266, r26251, r26265, MPFR_RNDN);
        return mpfr_get_d(r26266, MPFR_RNDN);
}

