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

char *name = "Hyperbolic arc-(co)tangent";

double f_if(float x) {
        float r31158 = 1;
        float r31159 = 2;
        float r31160 = r31158 / r31159;
        float r31161 = x;
        float r31162 = r31158 + r31161;
        float r31163 = r31158 - r31161;
        float r31164 = r31162 / r31163;
        float r31165 = log(r31164);
        float r31166 = r31160 * r31165;
        return r31166;
}

double f_id(double x) {
        double r31167 = 1;
        double r31168 = 2;
        double r31169 = r31167 / r31168;
        double r31170 = x;
        double r31171 = r31167 + r31170;
        double r31172 = r31167 - r31170;
        double r31173 = r31171 / r31172;
        double r31174 = log(r31173);
        double r31175 = r31169 * r31174;
        return r31175;
}


double f_of(float x) {
        float r31176 = 2/3;
        float r31177 = x;
        float r31178 = 3;
        float r31179 = pow(r31177, r31178);
        float r31180 = r31176 * r31179;
        float r31181 = 2/5;
        float r31182 = 5;
        float r31183 = pow(r31177, r31182);
        float r31184 = r31181 * r31183;
        float r31185 = 2;
        float r31186 = r31185 * r31177;
        float r31187 = r31184 + r31186;
        float r31188 = r31180 + r31187;
        float r31189 = r31188 / r31185;
        return r31189;
}

double f_od(double x) {
        double r31190 = 2/3;
        double r31191 = x;
        double r31192 = 3;
        double r31193 = pow(r31191, r31192);
        double r31194 = r31190 * r31193;
        double r31195 = 2/5;
        double r31196 = 5;
        double r31197 = pow(r31191, r31196);
        double r31198 = r31195 * r31197;
        double r31199 = 2;
        double r31200 = r31199 * r31191;
        double r31201 = r31198 + r31200;
        double r31202 = r31194 + r31201;
        double r31203 = r31202 / r31199;
        return r31203;
}

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 r31204, r31205, r31206, r31207, r31208, r31209, r31210, r31211, r31212;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31204, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31205, "2", 10, MPFR_RNDN);
        mpfr_init(r31206);
        mpfr_init(r31207);
        mpfr_init(r31208);
        mpfr_init(r31209);
        mpfr_init(r31210);
        mpfr_init(r31211);
        mpfr_init(r31212);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r31206, r31204, r31205, MPFR_RNDN);
        mpfr_set_d(r31207, x, MPFR_RNDN);
        mpfr_add(r31208, r31204, r31207, MPFR_RNDN);
        mpfr_sub(r31209, r31204, r31207, MPFR_RNDN);
        mpfr_div(r31210, r31208, r31209, MPFR_RNDN);
        mpfr_log(r31211, r31210, MPFR_RNDN);
        mpfr_mul(r31212, r31206, r31211, MPFR_RNDN);
        return mpfr_get_d(r31212, MPFR_RNDN);
}

static mpfr_t r31213, r31214, r31215, r31216, r31217, r31218, r31219, r31220, r31221, r31222, r31223, r31224, r31225, r31226;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31213, "2/3", 10, MPFR_RNDN);
        mpfr_init(r31214);
        mpfr_init_set_str(r31215, "3", 10, MPFR_RNDN);
        mpfr_init(r31216);
        mpfr_init(r31217);
        mpfr_init_set_str(r31218, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r31219, "5", 10, MPFR_RNDN);
        mpfr_init(r31220);
        mpfr_init(r31221);
        mpfr_init_set_str(r31222, "2", 10, MPFR_RNDN);
        mpfr_init(r31223);
        mpfr_init(r31224);
        mpfr_init(r31225);
        mpfr_init(r31226);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31214, x, MPFR_RNDN);
        ;
        mpfr_pow(r31216, r31214, r31215, MPFR_RNDN);
        mpfr_mul(r31217, r31213, r31216, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31220, r31214, r31219, MPFR_RNDN);
        mpfr_mul(r31221, r31218, r31220, MPFR_RNDN);
        ;
        mpfr_mul(r31223, r31222, r31214, MPFR_RNDN);
        mpfr_add(r31224, r31221, r31223, MPFR_RNDN);
        mpfr_add(r31225, r31217, r31224, MPFR_RNDN);
        mpfr_div(r31226, r31225, r31222, MPFR_RNDN);
        return mpfr_get_d(r31226, MPFR_RNDN);
}

static mpfr_t r31227, r31228, r31229, r31230, r31231, r31232, r31233, r31234, r31235, r31236, r31237, r31238, r31239, r31240;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31227, "2/3", 10, MPFR_RNDN);
        mpfr_init(r31228);
        mpfr_init_set_str(r31229, "3", 10, MPFR_RNDN);
        mpfr_init(r31230);
        mpfr_init(r31231);
        mpfr_init_set_str(r31232, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r31233, "5", 10, MPFR_RNDN);
        mpfr_init(r31234);
        mpfr_init(r31235);
        mpfr_init_set_str(r31236, "2", 10, MPFR_RNDN);
        mpfr_init(r31237);
        mpfr_init(r31238);
        mpfr_init(r31239);
        mpfr_init(r31240);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31228, x, MPFR_RNDN);
        ;
        mpfr_pow(r31230, r31228, r31229, MPFR_RNDN);
        mpfr_mul(r31231, r31227, r31230, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31234, r31228, r31233, MPFR_RNDN);
        mpfr_mul(r31235, r31232, r31234, MPFR_RNDN);
        ;
        mpfr_mul(r31237, r31236, r31228, MPFR_RNDN);
        mpfr_add(r31238, r31235, r31237, MPFR_RNDN);
        mpfr_add(r31239, r31231, r31238, MPFR_RNDN);
        mpfr_div(r31240, r31239, r31236, MPFR_RNDN);
        return mpfr_get_d(r31240, MPFR_RNDN);
}

