#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 r4416936 = 1;
        float r4416937 = x;
        float r4416938 = r4416936 / r4416937;
        float r4416939 = tan(r4416937);
        float r4416940 = r4416936 / r4416939;
        float r4416941 = r4416938 - r4416940;
        return r4416941;
}

double f_id(double x) {
        double r4416942 = 1;
        double r4416943 = x;
        double r4416944 = r4416942 / r4416943;
        double r4416945 = tan(r4416943);
        double r4416946 = r4416942 / r4416945;
        double r4416947 = r4416944 - r4416946;
        return r4416947;
}


double f_of(float x) {
        float r4416948 = 1/45;
        float r4416949 = x;
        float r4416950 = 3;
        float r4416951 = pow(r4416949, r4416950);
        float r4416952 = r4416948 * r4416951;
        float r4416953 = 2/945;
        float r4416954 = 5;
        float r4416955 = pow(r4416949, r4416954);
        float r4416956 = r4416953 * r4416955;
        float r4416957 = 1/3;
        float r4416958 = r4416957 * r4416949;
        float r4416959 = r4416956 + r4416958;
        float r4416960 = r4416952 + r4416959;
        return r4416960;
}

double f_od(double x) {
        double r4416961 = 1/45;
        double r4416962 = x;
        double r4416963 = 3;
        double r4416964 = pow(r4416962, r4416963);
        double r4416965 = r4416961 * r4416964;
        double r4416966 = 2/945;
        double r4416967 = 5;
        double r4416968 = pow(r4416962, r4416967);
        double r4416969 = r4416966 * r4416968;
        double r4416970 = 1/3;
        double r4416971 = r4416970 * r4416962;
        double r4416972 = r4416969 + r4416971;
        double r4416973 = r4416965 + r4416972;
        return r4416973;
}

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 r4416974, r4416975, r4416976, r4416977, r4416978, r4416979;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r4416974, "1", 10, MPFR_RNDN);
        mpfr_init(r4416975);
        mpfr_init(r4416976);
        mpfr_init(r4416977);
        mpfr_init(r4416978);
        mpfr_init(r4416979);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4416975, x, MPFR_RNDN);
        mpfr_div(r4416976, r4416974, r4416975, MPFR_RNDN);
        mpfr_tan(r4416977, r4416975, MPFR_RNDN);
        mpfr_div(r4416978, r4416974, r4416977, MPFR_RNDN);
        mpfr_sub(r4416979, r4416976, r4416978, MPFR_RNDN);
        return mpfr_get_d(r4416979, MPFR_RNDN);
}

static mpfr_t r4416980, r4416981, r4416982, r4416983, r4416984, r4416985, r4416986, r4416987, r4416988, r4416989, r4416990, r4416991, r4416992;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r4416980, "1/45", 10, MPFR_RNDN);
        mpfr_init(r4416981);
        mpfr_init_set_str(r4416982, "3", 10, MPFR_RNDN);
        mpfr_init(r4416983);
        mpfr_init(r4416984);
        mpfr_init_set_str(r4416985, "2/945", 10, MPFR_RNDN);
        mpfr_init_set_str(r4416986, "5", 10, MPFR_RNDN);
        mpfr_init(r4416987);
        mpfr_init(r4416988);
        mpfr_init_set_str(r4416989, "1/3", 10, MPFR_RNDN);
        mpfr_init(r4416990);
        mpfr_init(r4416991);
        mpfr_init(r4416992);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r4416981, x, MPFR_RNDN);
        ;
        mpfr_pow(r4416983, r4416981, r4416982, MPFR_RNDN);
        mpfr_mul(r4416984, r4416980, r4416983, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4416987, r4416981, r4416986, MPFR_RNDN);
        mpfr_mul(r4416988, r4416985, r4416987, MPFR_RNDN);
        ;
        mpfr_mul(r4416990, r4416989, r4416981, MPFR_RNDN);
        mpfr_add(r4416991, r4416988, r4416990, MPFR_RNDN);
        mpfr_add(r4416992, r4416984, r4416991, MPFR_RNDN);
        return mpfr_get_d(r4416992, MPFR_RNDN);
}

static mpfr_t r4416993, r4416994, r4416995, r4416996, r4416997, r4416998, r4416999, r4417000, r4417001, r4417002, r4417003, r4417004, r4417005;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r4416993, "1/45", 10, MPFR_RNDN);
        mpfr_init(r4416994);
        mpfr_init_set_str(r4416995, "3", 10, MPFR_RNDN);
        mpfr_init(r4416996);
        mpfr_init(r4416997);
        mpfr_init_set_str(r4416998, "2/945", 10, MPFR_RNDN);
        mpfr_init_set_str(r4416999, "5", 10, MPFR_RNDN);
        mpfr_init(r4417000);
        mpfr_init(r4417001);
        mpfr_init_set_str(r4417002, "1/3", 10, MPFR_RNDN);
        mpfr_init(r4417003);
        mpfr_init(r4417004);
        mpfr_init(r4417005);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r4416994, x, MPFR_RNDN);
        ;
        mpfr_pow(r4416996, r4416994, r4416995, MPFR_RNDN);
        mpfr_mul(r4416997, r4416993, r4416996, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4417000, r4416994, r4416999, MPFR_RNDN);
        mpfr_mul(r4417001, r4416998, r4417000, MPFR_RNDN);
        ;
        mpfr_mul(r4417003, r4417002, r4416994, MPFR_RNDN);
        mpfr_add(r4417004, r4417001, r4417003, MPFR_RNDN);
        mpfr_add(r4417005, r4416997, r4417004, MPFR_RNDN);
        return mpfr_get_d(r4417005, MPFR_RNDN);
}

