#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 r22313 = 1;
        float r22314 = 2;
        float r22315 = r22313 / r22314;
        float r22316 = x;
        float r22317 = r22313 + r22316;
        float r22318 = r22313 - r22316;
        float r22319 = r22317 / r22318;
        float r22320 = log(r22319);
        float r22321 = r22315 * r22320;
        return r22321;
}

double f_id(double x) {
        double r22322 = 1;
        double r22323 = 2;
        double r22324 = r22322 / r22323;
        double r22325 = x;
        double r22326 = r22322 + r22325;
        double r22327 = r22322 - r22325;
        double r22328 = r22326 / r22327;
        double r22329 = log(r22328);
        double r22330 = r22324 * r22329;
        return r22330;
}


double f_of(float x) {
        float r22331 = 1;
        float r22332 = 2;
        float r22333 = r22331 / r22332;
        float r22334 = 2/3;
        float r22335 = x;
        float r22336 = 3;
        float r22337 = pow(r22335, r22336);
        float r22338 = r22334 * r22337;
        float r22339 = 2/5;
        float r22340 = 5;
        float r22341 = pow(r22335, r22340);
        float r22342 = r22339 * r22341;
        float r22343 = r22332 * r22335;
        float r22344 = r22342 + r22343;
        float r22345 = r22338 + r22344;
        float r22346 = r22333 * r22345;
        return r22346;
}

double f_od(double x) {
        double r22347 = 1;
        double r22348 = 2;
        double r22349 = r22347 / r22348;
        double r22350 = 2/3;
        double r22351 = x;
        double r22352 = 3;
        double r22353 = pow(r22351, r22352);
        double r22354 = r22350 * r22353;
        double r22355 = 2/5;
        double r22356 = 5;
        double r22357 = pow(r22351, r22356);
        double r22358 = r22355 * r22357;
        double r22359 = r22348 * r22351;
        double r22360 = r22358 + r22359;
        double r22361 = r22354 + r22360;
        double r22362 = r22349 * r22361;
        return r22362;
}

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 r22363, r22364, r22365, r22366, r22367, r22368, r22369, r22370, r22371;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r22363, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r22364, "2", 10, MPFR_RNDN);
        mpfr_init(r22365);
        mpfr_init(r22366);
        mpfr_init(r22367);
        mpfr_init(r22368);
        mpfr_init(r22369);
        mpfr_init(r22370);
        mpfr_init(r22371);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r22365, r22363, r22364, MPFR_RNDN);
        mpfr_set_d(r22366, x, MPFR_RNDN);
        mpfr_add(r22367, r22363, r22366, MPFR_RNDN);
        mpfr_sub(r22368, r22363, r22366, MPFR_RNDN);
        mpfr_div(r22369, r22367, r22368, MPFR_RNDN);
        mpfr_log(r22370, r22369, MPFR_RNDN);
        mpfr_mul(r22371, r22365, r22370, MPFR_RNDN);
        return mpfr_get_d(r22371, MPFR_RNDN);
}

static mpfr_t r22372, r22373, r22374, r22375, r22376, r22377, r22378, r22379, r22380, r22381, r22382, r22383, r22384, r22385, r22386, r22387;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r22372, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r22373, "2", 10, MPFR_RNDN);
        mpfr_init(r22374);
        mpfr_init_set_str(r22375, "2/3", 10, MPFR_RNDN);
        mpfr_init(r22376);
        mpfr_init_set_str(r22377, "3", 10, MPFR_RNDN);
        mpfr_init(r22378);
        mpfr_init(r22379);
        mpfr_init_set_str(r22380, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r22381, "5", 10, MPFR_RNDN);
        mpfr_init(r22382);
        mpfr_init(r22383);
        mpfr_init(r22384);
        mpfr_init(r22385);
        mpfr_init(r22386);
        mpfr_init(r22387);
}

double f_fm(double x) {
        ;
        ;
        mpfr_div(r22374, r22372, r22373, MPFR_RNDN);
        ;
        mpfr_set_d(r22376, x, MPFR_RNDN);
        ;
        mpfr_pow(r22378, r22376, r22377, MPFR_RNDN);
        mpfr_mul(r22379, r22375, r22378, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r22382, r22376, r22381, MPFR_RNDN);
        mpfr_mul(r22383, r22380, r22382, MPFR_RNDN);
        mpfr_mul(r22384, r22373, r22376, MPFR_RNDN);
        mpfr_add(r22385, r22383, r22384, MPFR_RNDN);
        mpfr_add(r22386, r22379, r22385, MPFR_RNDN);
        mpfr_mul(r22387, r22374, r22386, MPFR_RNDN);
        return mpfr_get_d(r22387, MPFR_RNDN);
}

static mpfr_t r22388, r22389, r22390, r22391, r22392, r22393, r22394, r22395, r22396, r22397, r22398, r22399, r22400, r22401, r22402, r22403;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r22388, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r22389, "2", 10, MPFR_RNDN);
        mpfr_init(r22390);
        mpfr_init_set_str(r22391, "2/3", 10, MPFR_RNDN);
        mpfr_init(r22392);
        mpfr_init_set_str(r22393, "3", 10, MPFR_RNDN);
        mpfr_init(r22394);
        mpfr_init(r22395);
        mpfr_init_set_str(r22396, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r22397, "5", 10, MPFR_RNDN);
        mpfr_init(r22398);
        mpfr_init(r22399);
        mpfr_init(r22400);
        mpfr_init(r22401);
        mpfr_init(r22402);
        mpfr_init(r22403);
}

double f_dm(double x) {
        ;
        ;
        mpfr_div(r22390, r22388, r22389, MPFR_RNDN);
        ;
        mpfr_set_d(r22392, x, MPFR_RNDN);
        ;
        mpfr_pow(r22394, r22392, r22393, MPFR_RNDN);
        mpfr_mul(r22395, r22391, r22394, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r22398, r22392, r22397, MPFR_RNDN);
        mpfr_mul(r22399, r22396, r22398, MPFR_RNDN);
        mpfr_mul(r22400, r22389, r22392, MPFR_RNDN);
        mpfr_add(r22401, r22399, r22400, MPFR_RNDN);
        mpfr_add(r22402, r22395, r22401, MPFR_RNDN);
        mpfr_mul(r22403, r22390, r22402, MPFR_RNDN);
        return mpfr_get_d(r22403, MPFR_RNDN);
}

