#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 r8766 = 1.0f;
        float r8767 = 2.0f;
        float r8768 = r8766 / r8767;
        float r8769 = x;
        float r8770 = r8766 + r8769;
        float r8771 = r8766 - r8769;
        float r8772 = r8770 / r8771;
        float r8773 = log(r8772);
        float r8774 = r8768 * r8773;
        return r8774;
}

double f_id(double x) {
        double r8775 = 1.0;
        double r8776 = 2.0;
        double r8777 = r8775 / r8776;
        double r8778 = x;
        double r8779 = r8775 + r8778;
        double r8780 = r8775 - r8778;
        double r8781 = r8779 / r8780;
        double r8782 = log(r8781);
        double r8783 = r8777 * r8782;
        return r8783;
}


double f_of(float x) {
        float r8784 = x;
        float r8785 = 5.0f;
        float r8786 = pow(r8784, r8785);
        float r8787 = 0.2f;
        float r8788 = r8786 * r8787;
        float r8789 = 3.0f;
        float r8790 = pow(r8784, r8789);
        float r8791 = 0.3333333333333333f;
        float r8792 = r8790 * r8791;
        float r8793 = r8788 + r8792;
        float r8794 = r8784 + r8793;
        return r8794;
}

double f_od(double x) {
        double r8795 = x;
        double r8796 = 5.0;
        double r8797 = pow(r8795, r8796);
        double r8798 = 0.2;
        double r8799 = r8797 * r8798;
        double r8800 = 3.0;
        double r8801 = pow(r8795, r8800);
        double r8802 = 0.3333333333333333;
        double r8803 = r8801 * r8802;
        double r8804 = r8799 + r8803;
        double r8805 = r8795 + r8804;
        return r8805;
}

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 r8806, r8807, r8808, r8809, r8810, r8811, r8812, r8813, r8814;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8806, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8807, "2", 10, MPFR_RNDN);
        mpfr_init(r8808);
        mpfr_init(r8809);
        mpfr_init(r8810);
        mpfr_init(r8811);
        mpfr_init(r8812);
        mpfr_init(r8813);
        mpfr_init(r8814);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r8808, r8806, r8807, MPFR_RNDN);
        mpfr_set_d(r8809, x, MPFR_RNDN);
        mpfr_add(r8810, r8806, r8809, MPFR_RNDN);
        mpfr_sub(r8811, r8806, r8809, MPFR_RNDN);
        mpfr_div(r8812, r8810, r8811, MPFR_RNDN);
        mpfr_log(r8813, r8812, MPFR_RNDN);
        mpfr_mul(r8814, r8808, r8813, MPFR_RNDN);
        return mpfr_get_d(r8814, MPFR_RNDN);
}

static mpfr_t r8815, r8816, r8817, r8818, r8819, r8820, r8821, r8822, r8823, r8824, r8825;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8815);
        mpfr_init_set_str(r8816, "5", 10, MPFR_RNDN);
        mpfr_init(r8817);
        mpfr_init_set_str(r8818, "1/5", 10, MPFR_RNDN);
        mpfr_init(r8819);
        mpfr_init_set_str(r8820, "3", 10, MPFR_RNDN);
        mpfr_init(r8821);
        mpfr_init_set_str(r8822, "1/3", 10, MPFR_RNDN);
        mpfr_init(r8823);
        mpfr_init(r8824);
        mpfr_init(r8825);
}

double f_fm(double x) {
        mpfr_set_d(r8815, x, MPFR_RNDN);
        ;
        mpfr_pow(r8817, r8815, r8816, MPFR_RNDN);
        ;
        mpfr_mul(r8819, r8817, r8818, MPFR_RNDN);
        ;
        mpfr_pow(r8821, r8815, r8820, MPFR_RNDN);
        ;
        mpfr_mul(r8823, r8821, r8822, MPFR_RNDN);
        mpfr_add(r8824, r8819, r8823, MPFR_RNDN);
        mpfr_add(r8825, r8815, r8824, MPFR_RNDN);
        return mpfr_get_d(r8825, MPFR_RNDN);
}

static mpfr_t r8826, r8827, r8828, r8829, r8830, r8831, r8832, r8833, r8834, r8835, r8836;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8826);
        mpfr_init_set_str(r8827, "5", 10, MPFR_RNDN);
        mpfr_init(r8828);
        mpfr_init_set_str(r8829, "1/5", 10, MPFR_RNDN);
        mpfr_init(r8830);
        mpfr_init_set_str(r8831, "3", 10, MPFR_RNDN);
        mpfr_init(r8832);
        mpfr_init_set_str(r8833, "1/3", 10, MPFR_RNDN);
        mpfr_init(r8834);
        mpfr_init(r8835);
        mpfr_init(r8836);
}

double f_dm(double x) {
        mpfr_set_d(r8826, x, MPFR_RNDN);
        ;
        mpfr_pow(r8828, r8826, r8827, MPFR_RNDN);
        ;
        mpfr_mul(r8830, r8828, r8829, MPFR_RNDN);
        ;
        mpfr_pow(r8832, r8826, r8831, MPFR_RNDN);
        ;
        mpfr_mul(r8834, r8832, r8833, MPFR_RNDN);
        mpfr_add(r8835, r8830, r8834, MPFR_RNDN);
        mpfr_add(r8836, r8826, r8835, MPFR_RNDN);
        return mpfr_get_d(r8836, MPFR_RNDN);
}

