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

double f_id(double x) {
        double r8772 = 1.0;
        double r8773 = 2.0;
        double r8774 = r8772 / r8773;
        double r8775 = x;
        double r8776 = r8772 + r8775;
        double r8777 = r8772 - r8775;
        double r8778 = r8776 / r8777;
        double r8779 = log(r8778);
        double r8780 = r8774 * r8779;
        return r8780;
}


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

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

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 r8803, r8804, r8805, r8806, r8807, r8808, r8809, r8810, r8811;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8803, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8804, "2", 10, MPFR_RNDN);
        mpfr_init(r8805);
        mpfr_init(r8806);
        mpfr_init(r8807);
        mpfr_init(r8808);
        mpfr_init(r8809);
        mpfr_init(r8810);
        mpfr_init(r8811);
}

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

static mpfr_t r8812, r8813, r8814, r8815, r8816, r8817, r8818, r8819, r8820, r8821, r8822;

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

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

static mpfr_t r8823, r8824, r8825, r8826, r8827, r8828, r8829, r8830, r8831, r8832, r8833;

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

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

