#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 r25417 = 1;
        float r25418 = 2;
        float r25419 = r25417 / r25418;
        float r25420 = x;
        float r25421 = r25417 + r25420;
        float r25422 = r25417 - r25420;
        float r25423 = r25421 / r25422;
        float r25424 = log(r25423);
        float r25425 = r25419 * r25424;
        return r25425;
}

double f_id(double x) {
        double r25426 = 1;
        double r25427 = 2;
        double r25428 = r25426 / r25427;
        double r25429 = x;
        double r25430 = r25426 + r25429;
        double r25431 = r25426 - r25429;
        double r25432 = r25430 / r25431;
        double r25433 = log(r25432);
        double r25434 = r25428 * r25433;
        return r25434;
}


double f_of(float x) {
        float r25435 = 1;
        float r25436 = 2;
        float r25437 = r25435 / r25436;
        float r25438 = x;
        float r25439 = 5;
        float r25440 = pow(r25438, r25439);
        float r25441 = 2/5;
        float r25442 = r25440 * r25441;
        float r25443 = 3;
        float r25444 = pow(r25438, r25443);
        float r25445 = 2/3;
        float r25446 = r25445 / r25436;
        float r25447 = fma(r25444, r25446, r25438);
        float r25448 = fma(r25437, r25442, r25447);
        return r25448;
}

double f_od(double x) {
        double r25449 = 1;
        double r25450 = 2;
        double r25451 = r25449 / r25450;
        double r25452 = x;
        double r25453 = 5;
        double r25454 = pow(r25452, r25453);
        double r25455 = 2/5;
        double r25456 = r25454 * r25455;
        double r25457 = 3;
        double r25458 = pow(r25452, r25457);
        double r25459 = 2/3;
        double r25460 = r25459 / r25450;
        double r25461 = fma(r25458, r25460, r25452);
        double r25462 = fma(r25451, r25456, r25461);
        return r25462;
}

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 r25463, r25464, r25465, r25466, r25467, r25468, r25469, r25470, r25471;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r25463, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25464, "2", 10, MPFR_RNDN);
        mpfr_init(r25465);
        mpfr_init(r25466);
        mpfr_init(r25467);
        mpfr_init(r25468);
        mpfr_init(r25469);
        mpfr_init(r25470);
        mpfr_init(r25471);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r25465, r25463, r25464, MPFR_RNDN);
        mpfr_set_d(r25466, x, MPFR_RNDN);
        mpfr_add(r25467, r25463, r25466, MPFR_RNDN);
        mpfr_sub(r25468, r25463, r25466, MPFR_RNDN);
        mpfr_div(r25469, r25467, r25468, MPFR_RNDN);
        mpfr_log(r25470, r25469, MPFR_RNDN);
        mpfr_mul(r25471, r25465, r25470, MPFR_RNDN);
        return mpfr_get_d(r25471, MPFR_RNDN);
}

static mpfr_t r25472, r25473, r25474, r25475, r25476, r25477, r25478, r25479, r25480, r25481, r25482, r25483, r25484, r25485;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r25472, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25473, "2", 10, MPFR_RNDN);
        mpfr_init(r25474);
        mpfr_init(r25475);
        mpfr_init_set_str(r25476, "5", 10, MPFR_RNDN);
        mpfr_init(r25477);
        mpfr_init_set_str(r25478, "2/5", 10, MPFR_RNDN);
        mpfr_init(r25479);
        mpfr_init_set_str(r25480, "3", 10, MPFR_RNDN);
        mpfr_init(r25481);
        mpfr_init_set_str(r25482, "2/3", 10, MPFR_RNDN);
        mpfr_init(r25483);
        mpfr_init(r25484);
        mpfr_init(r25485);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r25474, r25472, r25473, MPFR_RNDN);
        mpfr_set_d(r25475, x, MPFR_RNDN);
        ;
        mpfr_pow(r25477, r25475, r25476, MPFR_RNDN);
        ;
        mpfr_mul(r25479, r25477, r25478, MPFR_RNDN);
        ;
        mpfr_pow(r25481, r25475, r25480, MPFR_RNDN);
        ;
        mpfr_div(r25483, r25482, r25473, MPFR_RNDN);
        mpfr_fma(r25484, r25481, r25483, r25475, MPFR_RNDN);
        mpfr_fma(r25485, r25474, r25479, r25484, MPFR_RNDN);
        return mpfr_get_d(r25485, MPFR_RNDN);
}

static mpfr_t r25486, r25487, r25488, r25489, r25490, r25491, r25492, r25493, r25494, r25495, r25496, r25497, r25498, r25499;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r25486, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25487, "2", 10, MPFR_RNDN);
        mpfr_init(r25488);
        mpfr_init(r25489);
        mpfr_init_set_str(r25490, "5", 10, MPFR_RNDN);
        mpfr_init(r25491);
        mpfr_init_set_str(r25492, "2/5", 10, MPFR_RNDN);
        mpfr_init(r25493);
        mpfr_init_set_str(r25494, "3", 10, MPFR_RNDN);
        mpfr_init(r25495);
        mpfr_init_set_str(r25496, "2/3", 10, MPFR_RNDN);
        mpfr_init(r25497);
        mpfr_init(r25498);
        mpfr_init(r25499);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r25488, r25486, r25487, MPFR_RNDN);
        mpfr_set_d(r25489, x, MPFR_RNDN);
        ;
        mpfr_pow(r25491, r25489, r25490, MPFR_RNDN);
        ;
        mpfr_mul(r25493, r25491, r25492, MPFR_RNDN);
        ;
        mpfr_pow(r25495, r25489, r25494, MPFR_RNDN);
        ;
        mpfr_div(r25497, r25496, r25487, MPFR_RNDN);
        mpfr_fma(r25498, r25495, r25497, r25489, MPFR_RNDN);
        mpfr_fma(r25499, r25488, r25493, r25498, MPFR_RNDN);
        return mpfr_get_d(r25499, MPFR_RNDN);
}

