#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 r31362 = 1;
        float r31363 = 2;
        float r31364 = r31362 / r31363;
        float r31365 = x;
        float r31366 = r31362 + r31365;
        float r31367 = r31362 - r31365;
        float r31368 = r31366 / r31367;
        float r31369 = log(r31368);
        float r31370 = r31364 * r31369;
        return r31370;
}

double f_id(double x) {
        double r31371 = 1;
        double r31372 = 2;
        double r31373 = r31371 / r31372;
        double r31374 = x;
        double r31375 = r31371 + r31374;
        double r31376 = r31371 - r31374;
        double r31377 = r31375 / r31376;
        double r31378 = log(r31377);
        double r31379 = r31373 * r31378;
        return r31379;
}


double f_of(float x) {
        float r31380 = 2/3;
        float r31381 = x;
        float r31382 = 3;
        float r31383 = pow(r31381, r31382);
        float r31384 = r31380 * r31383;
        float r31385 = 2/5;
        float r31386 = 5;
        float r31387 = pow(r31381, r31386);
        float r31388 = r31385 * r31387;
        float r31389 = 2;
        float r31390 = r31389 * r31381;
        float r31391 = r31388 + r31390;
        float r31392 = r31384 + r31391;
        float r31393 = r31392 / r31389;
        return r31393;
}

double f_od(double x) {
        double r31394 = 2/3;
        double r31395 = x;
        double r31396 = 3;
        double r31397 = pow(r31395, r31396);
        double r31398 = r31394 * r31397;
        double r31399 = 2/5;
        double r31400 = 5;
        double r31401 = pow(r31395, r31400);
        double r31402 = r31399 * r31401;
        double r31403 = 2;
        double r31404 = r31403 * r31395;
        double r31405 = r31402 + r31404;
        double r31406 = r31398 + r31405;
        double r31407 = r31406 / r31403;
        return r31407;
}

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 r31408, r31409, r31410, r31411, r31412, r31413, r31414, r31415, r31416;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31408, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31409, "2", 10, MPFR_RNDN);
        mpfr_init(r31410);
        mpfr_init(r31411);
        mpfr_init(r31412);
        mpfr_init(r31413);
        mpfr_init(r31414);
        mpfr_init(r31415);
        mpfr_init(r31416);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r31410, r31408, r31409, MPFR_RNDN);
        mpfr_set_d(r31411, x, MPFR_RNDN);
        mpfr_add(r31412, r31408, r31411, MPFR_RNDN);
        mpfr_sub(r31413, r31408, r31411, MPFR_RNDN);
        mpfr_div(r31414, r31412, r31413, MPFR_RNDN);
        mpfr_log(r31415, r31414, MPFR_RNDN);
        mpfr_mul(r31416, r31410, r31415, MPFR_RNDN);
        return mpfr_get_d(r31416, MPFR_RNDN);
}

static mpfr_t r31417, r31418, r31419, r31420, r31421, r31422, r31423, r31424, r31425, r31426, r31427, r31428, r31429, r31430;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31417, "2/3", 10, MPFR_RNDN);
        mpfr_init(r31418);
        mpfr_init_set_str(r31419, "3", 10, MPFR_RNDN);
        mpfr_init(r31420);
        mpfr_init(r31421);
        mpfr_init_set_str(r31422, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r31423, "5", 10, MPFR_RNDN);
        mpfr_init(r31424);
        mpfr_init(r31425);
        mpfr_init_set_str(r31426, "2", 10, MPFR_RNDN);
        mpfr_init(r31427);
        mpfr_init(r31428);
        mpfr_init(r31429);
        mpfr_init(r31430);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31418, x, MPFR_RNDN);
        ;
        mpfr_pow(r31420, r31418, r31419, MPFR_RNDN);
        mpfr_mul(r31421, r31417, r31420, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31424, r31418, r31423, MPFR_RNDN);
        mpfr_mul(r31425, r31422, r31424, MPFR_RNDN);
        ;
        mpfr_mul(r31427, r31426, r31418, MPFR_RNDN);
        mpfr_add(r31428, r31425, r31427, MPFR_RNDN);
        mpfr_add(r31429, r31421, r31428, MPFR_RNDN);
        mpfr_div(r31430, r31429, r31426, MPFR_RNDN);
        return mpfr_get_d(r31430, MPFR_RNDN);
}

static mpfr_t r31431, r31432, r31433, r31434, r31435, r31436, r31437, r31438, r31439, r31440, r31441, r31442, r31443, r31444;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31431, "2/3", 10, MPFR_RNDN);
        mpfr_init(r31432);
        mpfr_init_set_str(r31433, "3", 10, MPFR_RNDN);
        mpfr_init(r31434);
        mpfr_init(r31435);
        mpfr_init_set_str(r31436, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r31437, "5", 10, MPFR_RNDN);
        mpfr_init(r31438);
        mpfr_init(r31439);
        mpfr_init_set_str(r31440, "2", 10, MPFR_RNDN);
        mpfr_init(r31441);
        mpfr_init(r31442);
        mpfr_init(r31443);
        mpfr_init(r31444);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31432, x, MPFR_RNDN);
        ;
        mpfr_pow(r31434, r31432, r31433, MPFR_RNDN);
        mpfr_mul(r31435, r31431, r31434, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31438, r31432, r31437, MPFR_RNDN);
        mpfr_mul(r31439, r31436, r31438, MPFR_RNDN);
        ;
        mpfr_mul(r31441, r31440, r31432, MPFR_RNDN);
        mpfr_add(r31442, r31439, r31441, MPFR_RNDN);
        mpfr_add(r31443, r31435, r31442, MPFR_RNDN);
        mpfr_div(r31444, r31443, r31440, MPFR_RNDN);
        return mpfr_get_d(r31444, MPFR_RNDN);
}

