#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 r38862 = 0.5;
        float r38863 = re;
        float r38864 = sin(r38863);
        float r38865 = r38862 * r38864;
        float r38866 = im;
        float r38867 = -r38866;
        float r38868 = exp(r38867);
        float r38869 = exp(r38866);
        float r38870 = r38868 - r38869;
        float r38871 = r38865 * r38870;
        return r38871;
}

double f_id(double re, double im) {
        double r38872 = 0.5;
        double r38873 = re;
        double r38874 = sin(r38873);
        double r38875 = r38872 * r38874;
        double r38876 = im;
        double r38877 = -r38876;
        double r38878 = exp(r38877);
        double r38879 = exp(r38876);
        double r38880 = r38878 - r38879;
        double r38881 = r38875 * r38880;
        return r38881;
}


double f_of(float re, float im) {
        float r38882 = 0.5;
        float r38883 = re;
        float r38884 = sin(r38883);
        float r38885 = r38882 * r38884;
        float r38886 = 1/60;
        float r38887 = im;
        float r38888 = 5;
        float r38889 = pow(r38887, r38888);
        float r38890 = r38886 * r38889;
        float r38891 = 2;
        float r38892 = r38891 * r38887;
        float r38893 = 1/3;
        float r38894 = 3;
        float r38895 = pow(r38887, r38894);
        float r38896 = r38893 * r38895;
        float r38897 = r38892 + r38896;
        float r38898 = r38890 + r38897;
        float r38899 = -r38898;
        float r38900 = r38885 * r38899;
        return r38900;
}

double f_od(double re, double im) {
        double r38901 = 0.5;
        double r38902 = re;
        double r38903 = sin(r38902);
        double r38904 = r38901 * r38903;
        double r38905 = 1/60;
        double r38906 = im;
        double r38907 = 5;
        double r38908 = pow(r38906, r38907);
        double r38909 = r38905 * r38908;
        double r38910 = 2;
        double r38911 = r38910 * r38906;
        double r38912 = 1/3;
        double r38913 = 3;
        double r38914 = pow(r38906, r38913);
        double r38915 = r38912 * r38914;
        double r38916 = r38911 + r38915;
        double r38917 = r38909 + r38916;
        double r38918 = -r38917;
        double r38919 = r38904 * r38918;
        return r38919;
}

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 r38920, r38921, r38922, r38923, r38924, r38925, r38926, r38927, r38928, r38929;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38920, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38921);
        mpfr_init(r38922);
        mpfr_init(r38923);
        mpfr_init(r38924);
        mpfr_init(r38925);
        mpfr_init(r38926);
        mpfr_init(r38927);
        mpfr_init(r38928);
        mpfr_init(r38929);
}

double f_im(double re, double im) {
        ;
        mpfr_set_d(r38921, re, MPFR_RNDN);
        mpfr_sin(r38922, r38921, MPFR_RNDN);
        mpfr_mul(r38923, r38920, r38922, MPFR_RNDN);
        mpfr_set_d(r38924, im, MPFR_RNDN);
        mpfr_neg(r38925, r38924, MPFR_RNDN);
        mpfr_exp(r38926, r38925, MPFR_RNDN);
        mpfr_exp(r38927, r38924, MPFR_RNDN);
        mpfr_sub(r38928, r38926, r38927, MPFR_RNDN);
        mpfr_mul(r38929, r38923, r38928, MPFR_RNDN);
        return mpfr_get_d(r38929, MPFR_RNDN);
}

static mpfr_t r38930, r38931, r38932, r38933, r38934, r38935, r38936, r38937, r38938, r38939, r38940, r38941, r38942, r38943, r38944, r38945, r38946, r38947, r38948;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38930, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38931);
        mpfr_init(r38932);
        mpfr_init(r38933);
        mpfr_init_set_str(r38934, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38935);
        mpfr_init_set_str(r38936, "5", 10, MPFR_RNDN);
        mpfr_init(r38937);
        mpfr_init(r38938);
        mpfr_init_set_str(r38939, "2", 10, MPFR_RNDN);
        mpfr_init(r38940);
        mpfr_init_set_str(r38941, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38942, "3", 10, MPFR_RNDN);
        mpfr_init(r38943);
        mpfr_init(r38944);
        mpfr_init(r38945);
        mpfr_init(r38946);
        mpfr_init(r38947);
        mpfr_init(r38948);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r38931, re, MPFR_RNDN);
        mpfr_sin(r38932, r38931, MPFR_RNDN);
        mpfr_mul(r38933, r38930, r38932, MPFR_RNDN);
        ;
        mpfr_set_d(r38935, im, MPFR_RNDN);
        ;
        mpfr_pow(r38937, r38935, r38936, MPFR_RNDN);
        mpfr_mul(r38938, r38934, r38937, MPFR_RNDN);
        ;
        mpfr_mul(r38940, r38939, r38935, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38943, r38935, r38942, MPFR_RNDN);
        mpfr_mul(r38944, r38941, r38943, MPFR_RNDN);
        mpfr_add(r38945, r38940, r38944, MPFR_RNDN);
        mpfr_add(r38946, r38938, r38945, MPFR_RNDN);
        mpfr_neg(r38947, r38946, MPFR_RNDN);
        mpfr_mul(r38948, r38933, r38947, MPFR_RNDN);
        return mpfr_get_d(r38948, MPFR_RNDN);
}

static mpfr_t r38949, r38950, r38951, r38952, r38953, r38954, r38955, r38956, r38957, r38958, r38959, r38960, r38961, r38962, r38963, r38964, r38965, r38966, r38967;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r38949, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38950);
        mpfr_init(r38951);
        mpfr_init(r38952);
        mpfr_init_set_str(r38953, "1/60", 10, MPFR_RNDN);
        mpfr_init(r38954);
        mpfr_init_set_str(r38955, "5", 10, MPFR_RNDN);
        mpfr_init(r38956);
        mpfr_init(r38957);
        mpfr_init_set_str(r38958, "2", 10, MPFR_RNDN);
        mpfr_init(r38959);
        mpfr_init_set_str(r38960, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r38961, "3", 10, MPFR_RNDN);
        mpfr_init(r38962);
        mpfr_init(r38963);
        mpfr_init(r38964);
        mpfr_init(r38965);
        mpfr_init(r38966);
        mpfr_init(r38967);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r38950, re, MPFR_RNDN);
        mpfr_sin(r38951, r38950, MPFR_RNDN);
        mpfr_mul(r38952, r38949, r38951, MPFR_RNDN);
        ;
        mpfr_set_d(r38954, im, MPFR_RNDN);
        ;
        mpfr_pow(r38956, r38954, r38955, MPFR_RNDN);
        mpfr_mul(r38957, r38953, r38956, MPFR_RNDN);
        ;
        mpfr_mul(r38959, r38958, r38954, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38962, r38954, r38961, MPFR_RNDN);
        mpfr_mul(r38963, r38960, r38962, MPFR_RNDN);
        mpfr_add(r38964, r38959, r38963, MPFR_RNDN);
        mpfr_add(r38965, r38957, r38964, MPFR_RNDN);
        mpfr_neg(r38966, r38965, MPFR_RNDN);
        mpfr_mul(r38967, r38952, r38966, MPFR_RNDN);
        return mpfr_get_d(r38967, MPFR_RNDN);
}

