#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Prelude:atanh from fay-base-0.20.0.1";

double f_if(float x) {
        float r41788 = x;
        float r41789 = 1.0;
        float r41790 = r41788 + r41789;
        float r41791 = r41789 - r41788;
        float r41792 = r41790 / r41791;
        return r41792;
}

double f_id(double x) {
        double r41793 = x;
        double r41794 = 1.0;
        double r41795 = r41793 + r41794;
        double r41796 = r41794 - r41793;
        double r41797 = r41795 / r41796;
        return r41797;
}


double f_of(float x) {
        float r41798 = x;
        float r41799 = 1.0;
        float r41800 = r41798 + r41799;
        float r41801 = r41799 - r41798;
        float r41802 = r41800 / r41801;
        return r41802;
}

double f_od(double x) {
        double r41803 = x;
        double r41804 = 1.0;
        double r41805 = r41803 + r41804;
        double r41806 = r41804 - r41803;
        double r41807 = r41805 / r41806;
        return r41807;
}

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 r41808, r41809, r41810, r41811, r41812;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41808);
        mpfr_init_set_str(r41809, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41810);
        mpfr_init(r41811);
        mpfr_init(r41812);
}

double f_im(double x) {
        mpfr_set_d(r41808, x, MPFR_RNDN);
        ;
        mpfr_add(r41810, r41808, r41809, MPFR_RNDN);
        mpfr_sub(r41811, r41809, r41808, MPFR_RNDN);
        mpfr_div(r41812, r41810, r41811, MPFR_RNDN);
        return mpfr_get_d(r41812, MPFR_RNDN);
}

static mpfr_t r41813, r41814, r41815, r41816, r41817;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41813);
        mpfr_init_set_str(r41814, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41815);
        mpfr_init(r41816);
        mpfr_init(r41817);
}

double f_fm(double x) {
        mpfr_set_d(r41813, x, MPFR_RNDN);
        ;
        mpfr_add(r41815, r41813, r41814, MPFR_RNDN);
        mpfr_sub(r41816, r41814, r41813, MPFR_RNDN);
        mpfr_div(r41817, r41815, r41816, MPFR_RNDN);
        return mpfr_get_d(r41817, MPFR_RNDN);
}

static mpfr_t r41818, r41819, r41820, r41821, r41822;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41818);
        mpfr_init_set_str(r41819, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41820);
        mpfr_init(r41821);
        mpfr_init(r41822);
}

double f_dm(double x) {
        mpfr_set_d(r41818, x, MPFR_RNDN);
        ;
        mpfr_add(r41820, r41818, r41819, MPFR_RNDN);
        mpfr_sub(r41821, r41819, r41818, MPFR_RNDN);
        mpfr_div(r41822, r41820, r41821, MPFR_RNDN);
        return mpfr_get_d(r41822, MPFR_RNDN);
}

