#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 r9242 = 1;
        float r9243 = 2;
        float r9244 = r9242 / r9243;
        float r9245 = x;
        float r9246 = r9242 + r9245;
        float r9247 = r9242 - r9245;
        float r9248 = r9246 / r9247;
        float r9249 = log(r9248);
        float r9250 = r9244 * r9249;
        return r9250;
}

double f_id(double x) {
        double r9251 = 1;
        double r9252 = 2;
        double r9253 = r9251 / r9252;
        double r9254 = x;
        double r9255 = r9251 + r9254;
        double r9256 = r9251 - r9254;
        double r9257 = r9255 / r9256;
        double r9258 = log(r9257);
        double r9259 = r9253 * r9258;
        return r9259;
}


double f_of(float x) {
        float r9260 = 1;
        float r9261 = 2;
        float r9262 = r9260 / r9261;
        float r9263 = x;
        float r9264 = r9261 * r9263;
        float r9265 = 2/3;
        float r9266 = 3;
        float r9267 = pow(r9263, r9266);
        float r9268 = r9265 * r9267;
        float r9269 = 2/5;
        float r9270 = 5;
        float r9271 = pow(r9263, r9270);
        float r9272 = r9269 * r9271;
        float r9273 = r9268 + r9272;
        float r9274 = r9264 + r9273;
        float r9275 = r9262 * r9274;
        return r9275;
}

double f_od(double x) {
        double r9276 = 1;
        double r9277 = 2;
        double r9278 = r9276 / r9277;
        double r9279 = x;
        double r9280 = r9277 * r9279;
        double r9281 = 2/3;
        double r9282 = 3;
        double r9283 = pow(r9279, r9282);
        double r9284 = r9281 * r9283;
        double r9285 = 2/5;
        double r9286 = 5;
        double r9287 = pow(r9279, r9286);
        double r9288 = r9285 * r9287;
        double r9289 = r9284 + r9288;
        double r9290 = r9280 + r9289;
        double r9291 = r9278 * r9290;
        return r9291;
}

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 r9292, r9293, r9294, r9295, r9296, r9297, r9298, r9299, r9300;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9292, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r9293, "2", 10, MPFR_RNDN);
        mpfr_init(r9294);
        mpfr_init(r9295);
        mpfr_init(r9296);
        mpfr_init(r9297);
        mpfr_init(r9298);
        mpfr_init(r9299);
        mpfr_init(r9300);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r9294, r9292, r9293, MPFR_RNDN);
        mpfr_set_d(r9295, x, MPFR_RNDN);
        mpfr_add(r9296, r9292, r9295, MPFR_RNDN);
        mpfr_sub(r9297, r9292, r9295, MPFR_RNDN);
        mpfr_div(r9298, r9296, r9297, MPFR_RNDN);
        mpfr_log(r9299, r9298, MPFR_RNDN);
        mpfr_mul(r9300, r9294, r9299, MPFR_RNDN);
        return mpfr_get_d(r9300, MPFR_RNDN);
}

static mpfr_t r9301, r9302, r9303, r9304, r9305, r9306, r9307, r9308, r9309, r9310, r9311, r9312, r9313, r9314, r9315, r9316;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9301, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r9302, "2", 10, MPFR_RNDN);
        mpfr_init(r9303);
        mpfr_init(r9304);
        mpfr_init(r9305);
        mpfr_init_set_str(r9306, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r9307, "3", 10, MPFR_RNDN);
        mpfr_init(r9308);
        mpfr_init(r9309);
        mpfr_init_set_str(r9310, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r9311, "5", 10, MPFR_RNDN);
        mpfr_init(r9312);
        mpfr_init(r9313);
        mpfr_init(r9314);
        mpfr_init(r9315);
        mpfr_init(r9316);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r9303, r9301, r9302, MPFR_RNDN);
        mpfr_set_d(r9304, x, MPFR_RNDN);
        mpfr_mul(r9305, r9302, r9304, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9308, r9304, r9307, MPFR_RNDN);
        mpfr_mul(r9309, r9306, r9308, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9312, r9304, r9311, MPFR_RNDN);
        mpfr_mul(r9313, r9310, r9312, MPFR_RNDN);
        mpfr_add(r9314, r9309, r9313, MPFR_RNDN);
        mpfr_add(r9315, r9305, r9314, MPFR_RNDN);
        mpfr_mul(r9316, r9303, r9315, MPFR_RNDN);
        return mpfr_get_d(r9316, MPFR_RNDN);
}

static mpfr_t r9317, r9318, r9319, r9320, r9321, r9322, r9323, r9324, r9325, r9326, r9327, r9328, r9329, r9330, r9331, r9332;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9317, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r9318, "2", 10, MPFR_RNDN);
        mpfr_init(r9319);
        mpfr_init(r9320);
        mpfr_init(r9321);
        mpfr_init_set_str(r9322, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r9323, "3", 10, MPFR_RNDN);
        mpfr_init(r9324);
        mpfr_init(r9325);
        mpfr_init_set_str(r9326, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r9327, "5", 10, MPFR_RNDN);
        mpfr_init(r9328);
        mpfr_init(r9329);
        mpfr_init(r9330);
        mpfr_init(r9331);
        mpfr_init(r9332);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r9319, r9317, r9318, MPFR_RNDN);
        mpfr_set_d(r9320, x, MPFR_RNDN);
        mpfr_mul(r9321, r9318, r9320, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9324, r9320, r9323, MPFR_RNDN);
        mpfr_mul(r9325, r9322, r9324, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9328, r9320, r9327, MPFR_RNDN);
        mpfr_mul(r9329, r9326, r9328, MPFR_RNDN);
        mpfr_add(r9330, r9325, r9329, MPFR_RNDN);
        mpfr_add(r9331, r9321, r9330, MPFR_RNDN);
        mpfr_mul(r9332, r9319, r9331, MPFR_RNDN);
        return mpfr_get_d(r9332, MPFR_RNDN);
}

