#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "2cos (problem 3.3.5)";

double f_if(float x, float eps) {
        float r9680 = x;
        float r9681 = eps;
        float r9682 = r9680 + r9681;
        float r9683 = cos(r9682);
        float r9684 = cos(r9680);
        float r9685 = r9683 - r9684;
        return r9685;
}

double f_id(double x, double eps) {
        double r9686 = x;
        double r9687 = eps;
        double r9688 = r9686 + r9687;
        double r9689 = cos(r9688);
        double r9690 = cos(r9686);
        double r9691 = r9689 - r9690;
        return r9691;
}


double f_of(float x, float eps) {
        float r9692 = -2;
        float r9693 = x;
        float r9694 = sin(r9693);
        float r9695 = 1/2;
        float r9696 = eps;
        float r9697 = r9695 * r9696;
        float r9698 = cos(r9697);
        float r9699 = r9694 * r9698;
        float r9700 = cos(r9693);
        float r9701 = sin(r9697);
        float r9702 = r9700 * r9701;
        float r9703 = r9699 + r9702;
        float r9704 = 2;
        float r9705 = r9696 / r9704;
        float r9706 = sin(r9705);
        float r9707 = r9703 * r9706;
        float r9708 = r9692 * r9707;
        return r9708;
}

double f_od(double x, double eps) {
        double r9709 = -2;
        double r9710 = x;
        double r9711 = sin(r9710);
        double r9712 = 1/2;
        double r9713 = eps;
        double r9714 = r9712 * r9713;
        double r9715 = cos(r9714);
        double r9716 = r9711 * r9715;
        double r9717 = cos(r9710);
        double r9718 = sin(r9714);
        double r9719 = r9717 * r9718;
        double r9720 = r9716 + r9719;
        double r9721 = 2;
        double r9722 = r9713 / r9721;
        double r9723 = sin(r9722);
        double r9724 = r9720 * r9723;
        double r9725 = r9709 * r9724;
        return r9725;
}

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 r9726, r9727, r9728, r9729, r9730, r9731;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r9726);
        mpfr_init(r9727);
        mpfr_init(r9728);
        mpfr_init(r9729);
        mpfr_init(r9730);
        mpfr_init(r9731);
}

double f_im(double x, double eps) {
        mpfr_set_d(r9726, x, MPFR_RNDN);
        mpfr_set_d(r9727, eps, MPFR_RNDN);
        mpfr_add(r9728, r9726, r9727, MPFR_RNDN);
        mpfr_cos(r9729, r9728, MPFR_RNDN);
        mpfr_cos(r9730, r9726, MPFR_RNDN);
        mpfr_sub(r9731, r9729, r9730, MPFR_RNDN);
        return mpfr_get_d(r9731, MPFR_RNDN);
}

static mpfr_t r9732, r9733, r9734, r9735, r9736, r9737, r9738, r9739, r9740, r9741, r9742, r9743, r9744, r9745, r9746, r9747, r9748;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r9732, "-2", 10, MPFR_RNDN);
        mpfr_init(r9733);
        mpfr_init(r9734);
        mpfr_init_set_str(r9735, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9736);
        mpfr_init(r9737);
        mpfr_init(r9738);
        mpfr_init(r9739);
        mpfr_init(r9740);
        mpfr_init(r9741);
        mpfr_init(r9742);
        mpfr_init(r9743);
        mpfr_init_set_str(r9744, "2", 10, MPFR_RNDN);
        mpfr_init(r9745);
        mpfr_init(r9746);
        mpfr_init(r9747);
        mpfr_init(r9748);
}

double f_fm(double x, double eps) {
        ;
        mpfr_set_d(r9733, x, MPFR_RNDN);
        mpfr_sin(r9734, r9733, MPFR_RNDN);
        ;
        mpfr_set_d(r9736, eps, MPFR_RNDN);
        mpfr_mul(r9737, r9735, r9736, MPFR_RNDN);
        mpfr_cos(r9738, r9737, MPFR_RNDN);
        mpfr_mul(r9739, r9734, r9738, MPFR_RNDN);
        mpfr_cos(r9740, r9733, MPFR_RNDN);
        mpfr_sin(r9741, r9737, MPFR_RNDN);
        mpfr_mul(r9742, r9740, r9741, MPFR_RNDN);
        mpfr_add(r9743, r9739, r9742, MPFR_RNDN);
        ;
        mpfr_div(r9745, r9736, r9744, MPFR_RNDN);
        mpfr_sin(r9746, r9745, MPFR_RNDN);
        mpfr_mul(r9747, r9743, r9746, MPFR_RNDN);
        mpfr_mul(r9748, r9732, r9747, MPFR_RNDN);
        return mpfr_get_d(r9748, MPFR_RNDN);
}

static mpfr_t r9749, r9750, r9751, r9752, r9753, r9754, r9755, r9756, r9757, r9758, r9759, r9760, r9761, r9762, r9763, r9764, r9765;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r9749, "-2", 10, MPFR_RNDN);
        mpfr_init(r9750);
        mpfr_init(r9751);
        mpfr_init_set_str(r9752, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9753);
        mpfr_init(r9754);
        mpfr_init(r9755);
        mpfr_init(r9756);
        mpfr_init(r9757);
        mpfr_init(r9758);
        mpfr_init(r9759);
        mpfr_init(r9760);
        mpfr_init_set_str(r9761, "2", 10, MPFR_RNDN);
        mpfr_init(r9762);
        mpfr_init(r9763);
        mpfr_init(r9764);
        mpfr_init(r9765);
}

double f_dm(double x, double eps) {
        ;
        mpfr_set_d(r9750, x, MPFR_RNDN);
        mpfr_sin(r9751, r9750, MPFR_RNDN);
        ;
        mpfr_set_d(r9753, eps, MPFR_RNDN);
        mpfr_mul(r9754, r9752, r9753, MPFR_RNDN);
        mpfr_cos(r9755, r9754, MPFR_RNDN);
        mpfr_mul(r9756, r9751, r9755, MPFR_RNDN);
        mpfr_cos(r9757, r9750, MPFR_RNDN);
        mpfr_sin(r9758, r9754, MPFR_RNDN);
        mpfr_mul(r9759, r9757, r9758, MPFR_RNDN);
        mpfr_add(r9760, r9756, r9759, MPFR_RNDN);
        ;
        mpfr_div(r9762, r9753, r9761, MPFR_RNDN);
        mpfr_sin(r9763, r9762, MPFR_RNDN);
        mpfr_mul(r9764, r9760, r9763, MPFR_RNDN);
        mpfr_mul(r9765, r9749, r9764, MPFR_RNDN);
        return mpfr_get_d(r9765, MPFR_RNDN);
}

