#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 r10254 = 1;
        float r10255 = x;
        float r10256 = r10254 / r10255;
        float r10257 = tan(r10255);
        float r10258 = r10254 / r10257;
        float r10259 = r10256 - r10258;
        return r10259;
}

double f_id(double x) {
        double r10260 = 1;
        double r10261 = x;
        double r10262 = r10260 / r10261;
        double r10263 = tan(r10261);
        double r10264 = r10260 / r10263;
        double r10265 = r10262 - r10264;
        return r10265;
}


double f_of(float x) {
        float r10266 = 1/3;
        float r10267 = x;
        float r10268 = r10266 * r10267;
        float r10269 = 1/45;
        float r10270 = 3;
        float r10271 = pow(r10267, r10270);
        float r10272 = r10269 * r10271;
        float r10273 = 2/945;
        float r10274 = 5;
        float r10275 = pow(r10267, r10274);
        float r10276 = r10273 * r10275;
        float r10277 = r10272 + r10276;
        float r10278 = r10268 + r10277;
        return r10278;
}

double f_od(double x) {
        double r10279 = 1/3;
        double r10280 = x;
        double r10281 = r10279 * r10280;
        double r10282 = 1/45;
        double r10283 = 3;
        double r10284 = pow(r10280, r10283);
        double r10285 = r10282 * r10284;
        double r10286 = 2/945;
        double r10287 = 5;
        double r10288 = pow(r10280, r10287);
        double r10289 = r10286 * r10288;
        double r10290 = r10285 + r10289;
        double r10291 = r10281 + r10290;
        return r10291;
}

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 r10292, r10293, r10294, r10295, r10296, r10297;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r10292, "1", 10, MPFR_RNDN);
        mpfr_init(r10293);
        mpfr_init(r10294);
        mpfr_init(r10295);
        mpfr_init(r10296);
        mpfr_init(r10297);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10293, x, MPFR_RNDN);
        mpfr_div(r10294, r10292, r10293, MPFR_RNDN);
        mpfr_tan(r10295, r10293, MPFR_RNDN);
        mpfr_div(r10296, r10292, r10295, MPFR_RNDN);
        mpfr_sub(r10297, r10294, r10296, MPFR_RNDN);
        return mpfr_get_d(r10297, MPFR_RNDN);
}

static mpfr_t r10298, r10299, r10300, r10301, r10302, r10303, r10304, r10305, r10306, r10307, r10308, r10309, r10310;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r10298, "1/3", 10, MPFR_RNDN);
        mpfr_init(r10299);
        mpfr_init(r10300);
        mpfr_init_set_str(r10301, "1/45", 10, MPFR_RNDN);
        mpfr_init_set_str(r10302, "3", 10, MPFR_RNDN);
        mpfr_init(r10303);
        mpfr_init(r10304);
        mpfr_init_set_str(r10305, "2/945", 10, MPFR_RNDN);
        mpfr_init_set_str(r10306, "5", 10, MPFR_RNDN);
        mpfr_init(r10307);
        mpfr_init(r10308);
        mpfr_init(r10309);
        mpfr_init(r10310);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10299, x, MPFR_RNDN);
        mpfr_mul(r10300, r10298, r10299, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r10303, r10299, r10302, MPFR_RNDN);
        mpfr_mul(r10304, r10301, r10303, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r10307, r10299, r10306, MPFR_RNDN);
        mpfr_mul(r10308, r10305, r10307, MPFR_RNDN);
        mpfr_add(r10309, r10304, r10308, MPFR_RNDN);
        mpfr_add(r10310, r10300, r10309, MPFR_RNDN);
        return mpfr_get_d(r10310, MPFR_RNDN);
}

static mpfr_t r10311, r10312, r10313, r10314, r10315, r10316, r10317, r10318, r10319, r10320, r10321, r10322, r10323;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r10311, "1/3", 10, MPFR_RNDN);
        mpfr_init(r10312);
        mpfr_init(r10313);
        mpfr_init_set_str(r10314, "1/45", 10, MPFR_RNDN);
        mpfr_init_set_str(r10315, "3", 10, MPFR_RNDN);
        mpfr_init(r10316);
        mpfr_init(r10317);
        mpfr_init_set_str(r10318, "2/945", 10, MPFR_RNDN);
        mpfr_init_set_str(r10319, "5", 10, MPFR_RNDN);
        mpfr_init(r10320);
        mpfr_init(r10321);
        mpfr_init(r10322);
        mpfr_init(r10323);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10312, x, MPFR_RNDN);
        mpfr_mul(r10313, r10311, r10312, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r10316, r10312, r10315, MPFR_RNDN);
        mpfr_mul(r10317, r10314, r10316, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r10320, r10312, r10319, MPFR_RNDN);
        mpfr_mul(r10321, r10318, r10320, MPFR_RNDN);
        mpfr_add(r10322, r10317, r10321, MPFR_RNDN);
        mpfr_add(r10323, r10313, r10322, MPFR_RNDN);
        return mpfr_get_d(r10323, MPFR_RNDN);
}

