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

char *name = "cos2 (problem 3.4.1)";

double f_if(float x) {
        float r4415714 = 1;
        float r4415715 = x;
        float r4415716 = cos(r4415715);
        float r4415717 = r4415714 - r4415716;
        float r4415718 = r4415715 * r4415715;
        float r4415719 = r4415717 / r4415718;
        return r4415719;
}

double f_id(double x) {
        double r4415720 = 1;
        double r4415721 = x;
        double r4415722 = cos(r4415721);
        double r4415723 = r4415720 - r4415722;
        double r4415724 = r4415721 * r4415721;
        double r4415725 = r4415723 / r4415724;
        return r4415725;
}


double f_of(float x) {
        float r4415726 = x;
        float r4415727 = sin(r4415726);
        float r4415728 = r4415727 / r4415726;
        float r4415729 = r4415728 * r4415727;
        float r4415730 = 1;
        float r4415731 = cos(r4415726);
        float r4415732 = 3;
        float r4415733 = pow(r4415731, r4415732);
        float r4415734 = r4415730 + r4415733;
        float r4415735 = r4415729 / r4415734;
        float r4415736 = r4415730 - r4415731;
        float r4415737 = r4415731 * r4415731;
        float r4415738 = r4415736 + r4415737;
        float r4415739 = r4415738 / r4415726;
        float r4415740 = r4415735 * r4415739;
        return r4415740;
}

double f_od(double x) {
        double r4415741 = x;
        double r4415742 = sin(r4415741);
        double r4415743 = r4415742 / r4415741;
        double r4415744 = r4415743 * r4415742;
        double r4415745 = 1;
        double r4415746 = cos(r4415741);
        double r4415747 = 3;
        double r4415748 = pow(r4415746, r4415747);
        double r4415749 = r4415745 + r4415748;
        double r4415750 = r4415744 / r4415749;
        double r4415751 = r4415745 - r4415746;
        double r4415752 = r4415746 * r4415746;
        double r4415753 = r4415751 + r4415752;
        double r4415754 = r4415753 / r4415741;
        double r4415755 = r4415750 * r4415754;
        return r4415755;
}

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 r4415756, r4415757, r4415758, r4415759, r4415760, r4415761;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r4415756, "1", 10, MPFR_RNDN);
        mpfr_init(r4415757);
        mpfr_init(r4415758);
        mpfr_init(r4415759);
        mpfr_init(r4415760);
        mpfr_init(r4415761);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4415757, x, MPFR_RNDN);
        mpfr_cos(r4415758, r4415757, MPFR_RNDN);
        mpfr_sub(r4415759, r4415756, r4415758, MPFR_RNDN);
        mpfr_mul(r4415760, r4415757, r4415757, MPFR_RNDN);
        mpfr_div(r4415761, r4415759, r4415760, MPFR_RNDN);
        return mpfr_get_d(r4415761, MPFR_RNDN);
}

static mpfr_t r4415762, r4415763, r4415764, r4415765, r4415766, r4415767, r4415768, r4415769, r4415770, r4415771, r4415772, r4415773, r4415774, r4415775, r4415776;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4415762);
        mpfr_init(r4415763);
        mpfr_init(r4415764);
        mpfr_init(r4415765);
        mpfr_init_set_str(r4415766, "1", 10, MPFR_RNDN);
        mpfr_init(r4415767);
        mpfr_init_set_str(r4415768, "3", 10, MPFR_RNDN);
        mpfr_init(r4415769);
        mpfr_init(r4415770);
        mpfr_init(r4415771);
        mpfr_init(r4415772);
        mpfr_init(r4415773);
        mpfr_init(r4415774);
        mpfr_init(r4415775);
        mpfr_init(r4415776);
}

double f_fm(double x) {
        mpfr_set_d(r4415762, x, MPFR_RNDN);
        mpfr_sin(r4415763, r4415762, MPFR_RNDN);
        mpfr_div(r4415764, r4415763, r4415762, MPFR_RNDN);
        mpfr_mul(r4415765, r4415764, r4415763, MPFR_RNDN);
        ;
        mpfr_cos(r4415767, r4415762, MPFR_RNDN);
        ;
        mpfr_pow(r4415769, r4415767, r4415768, MPFR_RNDN);
        mpfr_add(r4415770, r4415766, r4415769, MPFR_RNDN);
        mpfr_div(r4415771, r4415765, r4415770, MPFR_RNDN);
        mpfr_sub(r4415772, r4415766, r4415767, MPFR_RNDN);
        mpfr_mul(r4415773, r4415767, r4415767, MPFR_RNDN);
        mpfr_add(r4415774, r4415772, r4415773, MPFR_RNDN);
        mpfr_div(r4415775, r4415774, r4415762, MPFR_RNDN);
        mpfr_mul(r4415776, r4415771, r4415775, MPFR_RNDN);
        return mpfr_get_d(r4415776, MPFR_RNDN);
}

static mpfr_t r4415777, r4415778, r4415779, r4415780, r4415781, r4415782, r4415783, r4415784, r4415785, r4415786, r4415787, r4415788, r4415789, r4415790, r4415791;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4415777);
        mpfr_init(r4415778);
        mpfr_init(r4415779);
        mpfr_init(r4415780);
        mpfr_init_set_str(r4415781, "1", 10, MPFR_RNDN);
        mpfr_init(r4415782);
        mpfr_init_set_str(r4415783, "3", 10, MPFR_RNDN);
        mpfr_init(r4415784);
        mpfr_init(r4415785);
        mpfr_init(r4415786);
        mpfr_init(r4415787);
        mpfr_init(r4415788);
        mpfr_init(r4415789);
        mpfr_init(r4415790);
        mpfr_init(r4415791);
}

double f_dm(double x) {
        mpfr_set_d(r4415777, x, MPFR_RNDN);
        mpfr_sin(r4415778, r4415777, MPFR_RNDN);
        mpfr_div(r4415779, r4415778, r4415777, MPFR_RNDN);
        mpfr_mul(r4415780, r4415779, r4415778, MPFR_RNDN);
        ;
        mpfr_cos(r4415782, r4415777, MPFR_RNDN);
        ;
        mpfr_pow(r4415784, r4415782, r4415783, MPFR_RNDN);
        mpfr_add(r4415785, r4415781, r4415784, MPFR_RNDN);
        mpfr_div(r4415786, r4415780, r4415785, MPFR_RNDN);
        mpfr_sub(r4415787, r4415781, r4415782, MPFR_RNDN);
        mpfr_mul(r4415788, r4415782, r4415782, MPFR_RNDN);
        mpfr_add(r4415789, r4415787, r4415788, MPFR_RNDN);
        mpfr_div(r4415790, r4415789, r4415777, MPFR_RNDN);
        mpfr_mul(r4415791, r4415786, r4415790, MPFR_RNDN);
        return mpfr_get_d(r4415791, MPFR_RNDN);
}

