#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 r41360 = x;
        float r41361 = 1.0;
        float r41362 = r41360 + r41361;
        float r41363 = r41361 - r41360;
        float r41364 = r41362 / r41363;
        return r41364;
}

double f_id(double x) {
        double r41365 = x;
        double r41366 = 1.0;
        double r41367 = r41365 + r41366;
        double r41368 = r41366 - r41365;
        double r41369 = r41367 / r41368;
        return r41369;
}


double f_of(float x) {
        float r41370 = x;
        float r41371 = 1.0;
        float r41372 = r41370 + r41371;
        float r41373 = r41371 - r41370;
        float r41374 = r41372 / r41373;
        return r41374;
}

double f_od(double x) {
        double r41375 = x;
        double r41376 = 1.0;
        double r41377 = r41375 + r41376;
        double r41378 = r41376 - r41375;
        double r41379 = r41377 / r41378;
        return r41379;
}

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 r41380, r41381, r41382, r41383, r41384;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41380);
        mpfr_init_set_str(r41381, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41382);
        mpfr_init(r41383);
        mpfr_init(r41384);
}

double f_im(double x) {
        mpfr_set_d(r41380, x, MPFR_RNDN);
        ;
        mpfr_add(r41382, r41380, r41381, MPFR_RNDN);
        mpfr_sub(r41383, r41381, r41380, MPFR_RNDN);
        mpfr_div(r41384, r41382, r41383, MPFR_RNDN);
        return mpfr_get_d(r41384, MPFR_RNDN);
}

static mpfr_t r41385, r41386, r41387, r41388, r41389;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41385);
        mpfr_init_set_str(r41386, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41387);
        mpfr_init(r41388);
        mpfr_init(r41389);
}

double f_fm(double x) {
        mpfr_set_d(r41385, x, MPFR_RNDN);
        ;
        mpfr_add(r41387, r41385, r41386, MPFR_RNDN);
        mpfr_sub(r41388, r41386, r41385, MPFR_RNDN);
        mpfr_div(r41389, r41387, r41388, MPFR_RNDN);
        return mpfr_get_d(r41389, MPFR_RNDN);
}

static mpfr_t r41390, r41391, r41392, r41393, r41394;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41390);
        mpfr_init_set_str(r41391, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41392);
        mpfr_init(r41393);
        mpfr_init(r41394);
}

double f_dm(double x) {
        mpfr_set_d(r41390, x, MPFR_RNDN);
        ;
        mpfr_add(r41392, r41390, r41391, MPFR_RNDN);
        mpfr_sub(r41393, r41391, r41390, MPFR_RNDN);
        mpfr_div(r41394, r41392, r41393, MPFR_RNDN);
        return mpfr_get_d(r41394, MPFR_RNDN);
}

