#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 r31555 = 1;
        float r31556 = 2;
        float r31557 = r31555 / r31556;
        float r31558 = x;
        float r31559 = r31555 + r31558;
        float r31560 = r31555 - r31558;
        float r31561 = r31559 / r31560;
        float r31562 = log(r31561);
        float r31563 = r31557 * r31562;
        return r31563;
}

double f_id(double x) {
        double r31564 = 1;
        double r31565 = 2;
        double r31566 = r31564 / r31565;
        double r31567 = x;
        double r31568 = r31564 + r31567;
        double r31569 = r31564 - r31567;
        double r31570 = r31568 / r31569;
        double r31571 = log(r31570);
        double r31572 = r31566 * r31571;
        return r31572;
}


double f_of(float x) {
        float r31573 = 2/3;
        float r31574 = x;
        float r31575 = 3;
        float r31576 = pow(r31574, r31575);
        float r31577 = r31573 * r31576;
        float r31578 = 2/5;
        float r31579 = 5;
        float r31580 = pow(r31574, r31579);
        float r31581 = r31578 * r31580;
        float r31582 = 2;
        float r31583 = r31582 * r31574;
        float r31584 = r31581 + r31583;
        float r31585 = r31577 + r31584;
        float r31586 = r31585 / r31582;
        return r31586;
}

double f_od(double x) {
        double r31587 = 2/3;
        double r31588 = x;
        double r31589 = 3;
        double r31590 = pow(r31588, r31589);
        double r31591 = r31587 * r31590;
        double r31592 = 2/5;
        double r31593 = 5;
        double r31594 = pow(r31588, r31593);
        double r31595 = r31592 * r31594;
        double r31596 = 2;
        double r31597 = r31596 * r31588;
        double r31598 = r31595 + r31597;
        double r31599 = r31591 + r31598;
        double r31600 = r31599 / r31596;
        return r31600;
}

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 r31601, r31602, r31603, r31604, r31605, r31606, r31607, r31608, r31609;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31601, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31602, "2", 10, MPFR_RNDN);
        mpfr_init(r31603);
        mpfr_init(r31604);
        mpfr_init(r31605);
        mpfr_init(r31606);
        mpfr_init(r31607);
        mpfr_init(r31608);
        mpfr_init(r31609);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r31603, r31601, r31602, MPFR_RNDN);
        mpfr_set_d(r31604, x, MPFR_RNDN);
        mpfr_add(r31605, r31601, r31604, MPFR_RNDN);
        mpfr_sub(r31606, r31601, r31604, MPFR_RNDN);
        mpfr_div(r31607, r31605, r31606, MPFR_RNDN);
        mpfr_log(r31608, r31607, MPFR_RNDN);
        mpfr_mul(r31609, r31603, r31608, MPFR_RNDN);
        return mpfr_get_d(r31609, MPFR_RNDN);
}

static mpfr_t r31610, r31611, r31612, r31613, r31614, r31615, r31616, r31617, r31618, r31619, r31620, r31621, r31622, r31623;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31610, "2/3", 10, MPFR_RNDN);
        mpfr_init(r31611);
        mpfr_init_set_str(r31612, "3", 10, MPFR_RNDN);
        mpfr_init(r31613);
        mpfr_init(r31614);
        mpfr_init_set_str(r31615, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r31616, "5", 10, MPFR_RNDN);
        mpfr_init(r31617);
        mpfr_init(r31618);
        mpfr_init_set_str(r31619, "2", 10, MPFR_RNDN);
        mpfr_init(r31620);
        mpfr_init(r31621);
        mpfr_init(r31622);
        mpfr_init(r31623);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31611, x, MPFR_RNDN);
        ;
        mpfr_pow(r31613, r31611, r31612, MPFR_RNDN);
        mpfr_mul(r31614, r31610, r31613, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31617, r31611, r31616, MPFR_RNDN);
        mpfr_mul(r31618, r31615, r31617, MPFR_RNDN);
        ;
        mpfr_mul(r31620, r31619, r31611, MPFR_RNDN);
        mpfr_add(r31621, r31618, r31620, MPFR_RNDN);
        mpfr_add(r31622, r31614, r31621, MPFR_RNDN);
        mpfr_div(r31623, r31622, r31619, MPFR_RNDN);
        return mpfr_get_d(r31623, MPFR_RNDN);
}

static mpfr_t r31624, r31625, r31626, r31627, r31628, r31629, r31630, r31631, r31632, r31633, r31634, r31635, r31636, r31637;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31624, "2/3", 10, MPFR_RNDN);
        mpfr_init(r31625);
        mpfr_init_set_str(r31626, "3", 10, MPFR_RNDN);
        mpfr_init(r31627);
        mpfr_init(r31628);
        mpfr_init_set_str(r31629, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r31630, "5", 10, MPFR_RNDN);
        mpfr_init(r31631);
        mpfr_init(r31632);
        mpfr_init_set_str(r31633, "2", 10, MPFR_RNDN);
        mpfr_init(r31634);
        mpfr_init(r31635);
        mpfr_init(r31636);
        mpfr_init(r31637);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31625, x, MPFR_RNDN);
        ;
        mpfr_pow(r31627, r31625, r31626, MPFR_RNDN);
        mpfr_mul(r31628, r31624, r31627, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31631, r31625, r31630, MPFR_RNDN);
        mpfr_mul(r31632, r31629, r31631, MPFR_RNDN);
        ;
        mpfr_mul(r31634, r31633, r31625, MPFR_RNDN);
        mpfr_add(r31635, r31632, r31634, MPFR_RNDN);
        mpfr_add(r31636, r31628, r31635, MPFR_RNDN);
        mpfr_div(r31637, r31636, r31633, MPFR_RNDN);
        return mpfr_get_d(r31637, MPFR_RNDN);
}

