#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 r25788 = 0.5;
        float r25789 = re;
        float r25790 = sin(r25789);
        float r25791 = r25788 * r25790;
        float r25792 = im;
        float r25793 = -r25792;
        float r25794 = exp(r25793);
        float r25795 = exp(r25792);
        float r25796 = r25794 - r25795;
        float r25797 = r25791 * r25796;
        return r25797;
}

double f_id(double re, double im) {
        double r25798 = 0.5;
        double r25799 = re;
        double r25800 = sin(r25799);
        double r25801 = r25798 * r25800;
        double r25802 = im;
        double r25803 = -r25802;
        double r25804 = exp(r25803);
        double r25805 = exp(r25802);
        double r25806 = r25804 - r25805;
        double r25807 = r25801 * r25806;
        return r25807;
}


double f_of(float re, float im) {
        float r25808 = 0.5;
        float r25809 = re;
        float r25810 = sin(r25809);
        float r25811 = r25808 * r25810;
        float r25812 = 1/60;
        float r25813 = im;
        float r25814 = 5;
        float r25815 = pow(r25813, r25814);
        float r25816 = r25812 * r25815;
        float r25817 = 2;
        float r25818 = r25817 * r25813;
        float r25819 = 1/3;
        float r25820 = 3;
        float r25821 = pow(r25813, r25820);
        float r25822 = r25819 * r25821;
        float r25823 = r25818 + r25822;
        float r25824 = r25816 + r25823;
        float r25825 = -r25824;
        float r25826 = r25811 * r25825;
        return r25826;
}

double f_od(double re, double im) {
        double r25827 = 0.5;
        double r25828 = re;
        double r25829 = sin(r25828);
        double r25830 = r25827 * r25829;
        double r25831 = 1/60;
        double r25832 = im;
        double r25833 = 5;
        double r25834 = pow(r25832, r25833);
        double r25835 = r25831 * r25834;
        double r25836 = 2;
        double r25837 = r25836 * r25832;
        double r25838 = 1/3;
        double r25839 = 3;
        double r25840 = pow(r25832, r25839);
        double r25841 = r25838 * r25840;
        double r25842 = r25837 + r25841;
        double r25843 = r25835 + r25842;
        double r25844 = -r25843;
        double r25845 = r25830 * r25844;
        return r25845;
}

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 r25846, r25847, r25848, r25849, r25850, r25851, r25852, r25853, r25854, r25855;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r25846, "0.5", 10, MPFR_RNDN);
        mpfr_init(r25847);
        mpfr_init(r25848);
        mpfr_init(r25849);
        mpfr_init(r25850);
        mpfr_init(r25851);
        mpfr_init(r25852);
        mpfr_init(r25853);
        mpfr_init(r25854);
        mpfr_init(r25855);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r25847, re, MPFR_RNDN);
        mpfr_sin(r25848, r25847, MPFR_RNDN);
        mpfr_mul(r25849, r25846, r25848, MPFR_RNDN);
        mpfr_set_d(r25850, im, MPFR_RNDN);
        mpfr_neg(r25851, r25850, MPFR_RNDN);
        mpfr_exp(r25852, r25851, MPFR_RNDN);
        mpfr_exp(r25853, r25850, MPFR_RNDN);
        mpfr_sub(r25854, r25852, r25853, MPFR_RNDN);
        mpfr_mul(r25855, r25849, r25854, MPFR_RNDN);
        return mpfr_get_d(r25855, MPFR_RNDN);
}

static mpfr_t r25856, r25857, r25858, r25859, r25860, r25861, r25862, r25863, r25864, r25865, r25866, r25867, r25868, r25869, r25870, r25871, r25872, r25873, r25874;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r25856, "0.5", 10, MPFR_RNDN);
        mpfr_init(r25857);
        mpfr_init(r25858);
        mpfr_init(r25859);
        mpfr_init_set_str(r25860, "1/60", 10, MPFR_RNDN);
        mpfr_init(r25861);
        mpfr_init_set_str(r25862, "5", 10, MPFR_RNDN);
        mpfr_init(r25863);
        mpfr_init(r25864);
        mpfr_init_set_str(r25865, "2", 10, MPFR_RNDN);
        mpfr_init(r25866);
        mpfr_init_set_str(r25867, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r25868, "3", 10, MPFR_RNDN);
        mpfr_init(r25869);
        mpfr_init(r25870);
        mpfr_init(r25871);
        mpfr_init(r25872);
        mpfr_init(r25873);
        mpfr_init(r25874);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r25857, re, MPFR_RNDN);
        mpfr_sin(r25858, r25857, MPFR_RNDN);
        mpfr_mul(r25859, r25856, r25858, MPFR_RNDN);
        ;
        mpfr_set_d(r25861, im, MPFR_RNDN);
        ;
        mpfr_pow(r25863, r25861, r25862, MPFR_RNDN);
        mpfr_mul(r25864, r25860, r25863, MPFR_RNDN);
        ;
        mpfr_mul(r25866, r25865, r25861, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25869, r25861, r25868, MPFR_RNDN);
        mpfr_mul(r25870, r25867, r25869, MPFR_RNDN);
        mpfr_add(r25871, r25866, r25870, MPFR_RNDN);
        mpfr_add(r25872, r25864, r25871, MPFR_RNDN);
        mpfr_neg(r25873, r25872, MPFR_RNDN);
        mpfr_mul(r25874, r25859, r25873, MPFR_RNDN);
        return mpfr_get_d(r25874, MPFR_RNDN);
}

static mpfr_t r25875, r25876, r25877, r25878, r25879, r25880, r25881, r25882, r25883, r25884, r25885, r25886, r25887, r25888, r25889, r25890, r25891, r25892, r25893;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r25875, "0.5", 10, MPFR_RNDN);
        mpfr_init(r25876);
        mpfr_init(r25877);
        mpfr_init(r25878);
        mpfr_init_set_str(r25879, "1/60", 10, MPFR_RNDN);
        mpfr_init(r25880);
        mpfr_init_set_str(r25881, "5", 10, MPFR_RNDN);
        mpfr_init(r25882);
        mpfr_init(r25883);
        mpfr_init_set_str(r25884, "2", 10, MPFR_RNDN);
        mpfr_init(r25885);
        mpfr_init_set_str(r25886, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r25887, "3", 10, MPFR_RNDN);
        mpfr_init(r25888);
        mpfr_init(r25889);
        mpfr_init(r25890);
        mpfr_init(r25891);
        mpfr_init(r25892);
        mpfr_init(r25893);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r25876, re, MPFR_RNDN);
        mpfr_sin(r25877, r25876, MPFR_RNDN);
        mpfr_mul(r25878, r25875, r25877, MPFR_RNDN);
        ;
        mpfr_set_d(r25880, im, MPFR_RNDN);
        ;
        mpfr_pow(r25882, r25880, r25881, MPFR_RNDN);
        mpfr_mul(r25883, r25879, r25882, MPFR_RNDN);
        ;
        mpfr_mul(r25885, r25884, r25880, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25888, r25880, r25887, MPFR_RNDN);
        mpfr_mul(r25889, r25886, r25888, MPFR_RNDN);
        mpfr_add(r25890, r25885, r25889, MPFR_RNDN);
        mpfr_add(r25891, r25883, r25890, MPFR_RNDN);
        mpfr_neg(r25892, r25891, MPFR_RNDN);
        mpfr_mul(r25893, r25878, r25892, MPFR_RNDN);
        return mpfr_get_d(r25893, MPFR_RNDN);
}

