#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 r26482 = 1;
        float r26483 = x;
        float r26484 = r26482 / r26483;
        float r26485 = tan(r26483);
        float r26486 = r26482 / r26485;
        float r26487 = r26484 - r26486;
        return r26487;
}

double f_id(double x) {
        double r26488 = 1;
        double r26489 = x;
        double r26490 = r26488 / r26489;
        double r26491 = tan(r26489);
        double r26492 = r26488 / r26491;
        double r26493 = r26490 - r26492;
        return r26493;
}


double f_of(float x) {
        float r26494 = 1/45;
        float r26495 = x;
        float r26496 = 3;
        float r26497 = pow(r26495, r26496);
        float r26498 = r26494 * r26497;
        float r26499 = 2/945;
        float r26500 = 5;
        float r26501 = pow(r26495, r26500);
        float r26502 = r26499 * r26501;
        float r26503 = exp(r26502);
        float r26504 = log(r26503);
        float r26505 = 1/3;
        float r26506 = r26505 * r26495;
        float r26507 = r26504 + r26506;
        float r26508 = r26498 + r26507;
        return r26508;
}

double f_od(double x) {
        double r26509 = 1/45;
        double r26510 = x;
        double r26511 = 3;
        double r26512 = pow(r26510, r26511);
        double r26513 = r26509 * r26512;
        double r26514 = 2/945;
        double r26515 = 5;
        double r26516 = pow(r26510, r26515);
        double r26517 = r26514 * r26516;
        double r26518 = exp(r26517);
        double r26519 = log(r26518);
        double r26520 = 1/3;
        double r26521 = r26520 * r26510;
        double r26522 = r26519 + r26521;
        double r26523 = r26513 + r26522;
        return r26523;
}

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 r26524, r26525, r26526, r26527, r26528, r26529;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r26524, "1", 10, MPFR_RNDN);
        mpfr_init(r26525);
        mpfr_init(r26526);
        mpfr_init(r26527);
        mpfr_init(r26528);
        mpfr_init(r26529);
}

double f_im(double x) {
        ;
        mpfr_set_d(r26525, x, MPFR_RNDN);
        mpfr_div(r26526, r26524, r26525, MPFR_RNDN);
        mpfr_tan(r26527, r26525, MPFR_RNDN);
        mpfr_div(r26528, r26524, r26527, MPFR_RNDN);
        mpfr_sub(r26529, r26526, r26528, MPFR_RNDN);
        return mpfr_get_d(r26529, MPFR_RNDN);
}

static mpfr_t r26530, r26531, r26532, r26533, r26534, r26535, r26536, r26537, r26538, r26539, r26540, r26541, r26542, r26543, r26544;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r26530, "1/45", 10, MPFR_RNDN);
        mpfr_init(r26531);
        mpfr_init_set_str(r26532, "3", 10, MPFR_RNDN);
        mpfr_init(r26533);
        mpfr_init(r26534);
        mpfr_init_set_str(r26535, "2/945", 10, MPFR_RNDN);
        mpfr_init_set_str(r26536, "5", 10, MPFR_RNDN);
        mpfr_init(r26537);
        mpfr_init(r26538);
        mpfr_init(r26539);
        mpfr_init(r26540);
        mpfr_init_set_str(r26541, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26542);
        mpfr_init(r26543);
        mpfr_init(r26544);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r26531, x, MPFR_RNDN);
        ;
        mpfr_pow(r26533, r26531, r26532, MPFR_RNDN);
        mpfr_mul(r26534, r26530, r26533, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26537, r26531, r26536, MPFR_RNDN);
        mpfr_mul(r26538, r26535, r26537, MPFR_RNDN);
        mpfr_exp(r26539, r26538, MPFR_RNDN);
        mpfr_log(r26540, r26539, MPFR_RNDN);
        ;
        mpfr_mul(r26542, r26541, r26531, MPFR_RNDN);
        mpfr_add(r26543, r26540, r26542, MPFR_RNDN);
        mpfr_add(r26544, r26534, r26543, MPFR_RNDN);
        return mpfr_get_d(r26544, MPFR_RNDN);
}

static mpfr_t r26545, r26546, r26547, r26548, r26549, r26550, r26551, r26552, r26553, r26554, r26555, r26556, r26557, r26558, r26559;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r26545, "1/45", 10, MPFR_RNDN);
        mpfr_init(r26546);
        mpfr_init_set_str(r26547, "3", 10, MPFR_RNDN);
        mpfr_init(r26548);
        mpfr_init(r26549);
        mpfr_init_set_str(r26550, "2/945", 10, MPFR_RNDN);
        mpfr_init_set_str(r26551, "5", 10, MPFR_RNDN);
        mpfr_init(r26552);
        mpfr_init(r26553);
        mpfr_init(r26554);
        mpfr_init(r26555);
        mpfr_init_set_str(r26556, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26557);
        mpfr_init(r26558);
        mpfr_init(r26559);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r26546, x, MPFR_RNDN);
        ;
        mpfr_pow(r26548, r26546, r26547, MPFR_RNDN);
        mpfr_mul(r26549, r26545, r26548, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26552, r26546, r26551, MPFR_RNDN);
        mpfr_mul(r26553, r26550, r26552, MPFR_RNDN);
        mpfr_exp(r26554, r26553, MPFR_RNDN);
        mpfr_log(r26555, r26554, MPFR_RNDN);
        ;
        mpfr_mul(r26557, r26556, r26546, MPFR_RNDN);
        mpfr_add(r26558, r26555, r26557, MPFR_RNDN);
        mpfr_add(r26559, r26549, r26558, MPFR_RNDN);
        return mpfr_get_d(r26559, MPFR_RNDN);
}

