#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 r31807 = 1;
        float r31808 = 2;
        float r31809 = r31807 / r31808;
        float r31810 = x;
        float r31811 = r31807 + r31810;
        float r31812 = r31807 - r31810;
        float r31813 = r31811 / r31812;
        float r31814 = log(r31813);
        float r31815 = r31809 * r31814;
        return r31815;
}

double f_id(double x) {
        double r31816 = 1;
        double r31817 = 2;
        double r31818 = r31816 / r31817;
        double r31819 = x;
        double r31820 = r31816 + r31819;
        double r31821 = r31816 - r31819;
        double r31822 = r31820 / r31821;
        double r31823 = log(r31822);
        double r31824 = r31818 * r31823;
        return r31824;
}


double f_of(float x) {
        float r31825 = 2/3;
        float r31826 = x;
        float r31827 = 3;
        float r31828 = pow(r31826, r31827);
        float r31829 = r31825 * r31828;
        float r31830 = 2/5;
        float r31831 = 5;
        float r31832 = pow(r31826, r31831);
        float r31833 = r31830 * r31832;
        float r31834 = 2;
        float r31835 = r31834 * r31826;
        float r31836 = r31833 + r31835;
        float r31837 = r31829 + r31836;
        float r31838 = r31837 / r31834;
        return r31838;
}

double f_od(double x) {
        double r31839 = 2/3;
        double r31840 = x;
        double r31841 = 3;
        double r31842 = pow(r31840, r31841);
        double r31843 = r31839 * r31842;
        double r31844 = 2/5;
        double r31845 = 5;
        double r31846 = pow(r31840, r31845);
        double r31847 = r31844 * r31846;
        double r31848 = 2;
        double r31849 = r31848 * r31840;
        double r31850 = r31847 + r31849;
        double r31851 = r31843 + r31850;
        double r31852 = r31851 / r31848;
        return r31852;
}

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 r31853, r31854, r31855, r31856, r31857, r31858, r31859, r31860, r31861;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31853, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31854, "2", 10, MPFR_RNDN);
        mpfr_init(r31855);
        mpfr_init(r31856);
        mpfr_init(r31857);
        mpfr_init(r31858);
        mpfr_init(r31859);
        mpfr_init(r31860);
        mpfr_init(r31861);
}

double f_im(double x) {
        ;
        ;
        mpfr_div(r31855, r31853, r31854, MPFR_RNDN);
        mpfr_set_d(r31856, x, MPFR_RNDN);
        mpfr_add(r31857, r31853, r31856, MPFR_RNDN);
        mpfr_sub(r31858, r31853, r31856, MPFR_RNDN);
        mpfr_div(r31859, r31857, r31858, MPFR_RNDN);
        mpfr_log(r31860, r31859, MPFR_RNDN);
        mpfr_mul(r31861, r31855, r31860, MPFR_RNDN);
        return mpfr_get_d(r31861, MPFR_RNDN);
}

static mpfr_t r31862, r31863, r31864, r31865, r31866, r31867, r31868, r31869, r31870, r31871, r31872, r31873, r31874, r31875;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31862, "2/3", 10, MPFR_RNDN);
        mpfr_init(r31863);
        mpfr_init_set_str(r31864, "3", 10, MPFR_RNDN);
        mpfr_init(r31865);
        mpfr_init(r31866);
        mpfr_init_set_str(r31867, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r31868, "5", 10, MPFR_RNDN);
        mpfr_init(r31869);
        mpfr_init(r31870);
        mpfr_init_set_str(r31871, "2", 10, MPFR_RNDN);
        mpfr_init(r31872);
        mpfr_init(r31873);
        mpfr_init(r31874);
        mpfr_init(r31875);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31863, x, MPFR_RNDN);
        ;
        mpfr_pow(r31865, r31863, r31864, MPFR_RNDN);
        mpfr_mul(r31866, r31862, r31865, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31869, r31863, r31868, MPFR_RNDN);
        mpfr_mul(r31870, r31867, r31869, MPFR_RNDN);
        ;
        mpfr_mul(r31872, r31871, r31863, MPFR_RNDN);
        mpfr_add(r31873, r31870, r31872, MPFR_RNDN);
        mpfr_add(r31874, r31866, r31873, MPFR_RNDN);
        mpfr_div(r31875, r31874, r31871, MPFR_RNDN);
        return mpfr_get_d(r31875, MPFR_RNDN);
}

static mpfr_t r31876, r31877, r31878, r31879, r31880, r31881, r31882, r31883, r31884, r31885, r31886, r31887, r31888, r31889;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31876, "2/3", 10, MPFR_RNDN);
        mpfr_init(r31877);
        mpfr_init_set_str(r31878, "3", 10, MPFR_RNDN);
        mpfr_init(r31879);
        mpfr_init(r31880);
        mpfr_init_set_str(r31881, "2/5", 10, MPFR_RNDN);
        mpfr_init_set_str(r31882, "5", 10, MPFR_RNDN);
        mpfr_init(r31883);
        mpfr_init(r31884);
        mpfr_init_set_str(r31885, "2", 10, MPFR_RNDN);
        mpfr_init(r31886);
        mpfr_init(r31887);
        mpfr_init(r31888);
        mpfr_init(r31889);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31877, x, MPFR_RNDN);
        ;
        mpfr_pow(r31879, r31877, r31878, MPFR_RNDN);
        mpfr_mul(r31880, r31876, r31879, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31883, r31877, r31882, MPFR_RNDN);
        mpfr_mul(r31884, r31881, r31883, MPFR_RNDN);
        ;
        mpfr_mul(r31886, r31885, r31877, MPFR_RNDN);
        mpfr_add(r31887, r31884, r31886, MPFR_RNDN);
        mpfr_add(r31888, r31880, r31887, MPFR_RNDN);
        mpfr_div(r31889, r31888, r31885, MPFR_RNDN);
        return mpfr_get_d(r31889, MPFR_RNDN);
}

