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

char *name = "invcot (example 3.9)";

double f_if(float x) {
        float r38715 = 1;
        float r38716 = x;
        float r38717 = r38715 / r38716;
        float r38718 = tan(r38716);
        float r38719 = r38715 / r38718;
        float r38720 = r38717 - r38719;
        return r38720;
}

double f_id(double x) {
        double r38721 = 1;
        double r38722 = x;
        double r38723 = r38721 / r38722;
        double r38724 = tan(r38722);
        double r38725 = r38721 / r38724;
        double r38726 = r38723 - r38725;
        return r38726;
}


double f_of(float x) {
        float r38727 = x;
        float r38728 = 1/3;
        float r38729 = r38727 * r38728;
        float r38730 = r38727 * r38727;
        float r38731 = 1/45;
        float r38732 = r38727 * r38731;
        float r38733 = r38730 * r38732;
        float r38734 = 2/945;
        float r38735 = 5;
        float r38736 = pow(r38727, r38735);
        float r38737 = r38734 * r38736;
        float r38738 = r38733 + r38737;
        float r38739 = r38729 + r38738;
        return r38739;
}

double f_od(double x) {
        double r38740 = x;
        double r38741 = 1/3;
        double r38742 = r38740 * r38741;
        double r38743 = r38740 * r38740;
        double r38744 = 1/45;
        double r38745 = r38740 * r38744;
        double r38746 = r38743 * r38745;
        double r38747 = 2/945;
        double r38748 = 5;
        double r38749 = pow(r38740, r38748);
        double r38750 = r38747 * r38749;
        double r38751 = r38746 + r38750;
        double r38752 = r38742 + r38751;
        return r38752;
}

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 r38753, r38754, r38755, r38756, r38757, r38758;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r38753, "1", 10, MPFR_RNDN);
        mpfr_init(r38754);
        mpfr_init(r38755);
        mpfr_init(r38756);
        mpfr_init(r38757);
        mpfr_init(r38758);
}

double f_im(double x) {
        ;
        mpfr_set_d(r38754, x, MPFR_RNDN);
        mpfr_div(r38755, r38753, r38754, MPFR_RNDN);
        mpfr_tan(r38756, r38754, MPFR_RNDN);
        mpfr_div(r38757, r38753, r38756, MPFR_RNDN);
        mpfr_sub(r38758, r38755, r38757, MPFR_RNDN);
        return mpfr_get_d(r38758, MPFR_RNDN);
}

static mpfr_t r38759, r38760, r38761, r38762, r38763, r38764, r38765, r38766, r38767, r38768, r38769, r38770, r38771;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r38759);
        mpfr_init_set_str(r38760, "1/3", 10, MPFR_RNDN);
        mpfr_init(r38761);
        mpfr_init(r38762);
        mpfr_init_set_str(r38763, "1/45", 10, MPFR_RNDN);
        mpfr_init(r38764);
        mpfr_init(r38765);
        mpfr_init_set_str(r38766, "2/945", 10, MPFR_RNDN);
        mpfr_init_set_str(r38767, "5", 10, MPFR_RNDN);
        mpfr_init(r38768);
        mpfr_init(r38769);
        mpfr_init(r38770);
        mpfr_init(r38771);
}

double f_fm(double x) {
        mpfr_set_d(r38759, x, MPFR_RNDN);
        ;
        mpfr_mul(r38761, r38759, r38760, MPFR_RNDN);
        mpfr_mul(r38762, r38759, r38759, MPFR_RNDN);
        ;
        mpfr_mul(r38764, r38759, r38763, MPFR_RNDN);
        mpfr_mul(r38765, r38762, r38764, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38768, r38759, r38767, MPFR_RNDN);
        mpfr_mul(r38769, r38766, r38768, MPFR_RNDN);
        mpfr_add(r38770, r38765, r38769, MPFR_RNDN);
        mpfr_add(r38771, r38761, r38770, MPFR_RNDN);
        return mpfr_get_d(r38771, MPFR_RNDN);
}

static mpfr_t r38772, r38773, r38774, r38775, r38776, r38777, r38778, r38779, r38780, r38781, r38782, r38783, r38784;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r38772);
        mpfr_init_set_str(r38773, "1/3", 10, MPFR_RNDN);
        mpfr_init(r38774);
        mpfr_init(r38775);
        mpfr_init_set_str(r38776, "1/45", 10, MPFR_RNDN);
        mpfr_init(r38777);
        mpfr_init(r38778);
        mpfr_init_set_str(r38779, "2/945", 10, MPFR_RNDN);
        mpfr_init_set_str(r38780, "5", 10, MPFR_RNDN);
        mpfr_init(r38781);
        mpfr_init(r38782);
        mpfr_init(r38783);
        mpfr_init(r38784);
}

double f_dm(double x) {
        mpfr_set_d(r38772, x, MPFR_RNDN);
        ;
        mpfr_mul(r38774, r38772, r38773, MPFR_RNDN);
        mpfr_mul(r38775, r38772, r38772, MPFR_RNDN);
        ;
        mpfr_mul(r38777, r38772, r38776, MPFR_RNDN);
        mpfr_mul(r38778, r38775, r38777, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r38781, r38772, r38780, MPFR_RNDN);
        mpfr_mul(r38782, r38779, r38781, MPFR_RNDN);
        mpfr_add(r38783, r38778, r38782, MPFR_RNDN);
        mpfr_add(r38784, r38774, r38783, MPFR_RNDN);
        return mpfr_get_d(r38784, MPFR_RNDN);
}

