#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 r41576 = x;
        float r41577 = 1.0;
        float r41578 = r41576 + r41577;
        float r41579 = r41577 - r41576;
        float r41580 = r41578 / r41579;
        return r41580;
}

double f_id(double x) {
        double r41581 = x;
        double r41582 = 1.0;
        double r41583 = r41581 + r41582;
        double r41584 = r41582 - r41581;
        double r41585 = r41583 / r41584;
        return r41585;
}


double f_of(float x) {
        float r41586 = x;
        float r41587 = 1.0;
        float r41588 = r41586 + r41587;
        float r41589 = r41587 - r41586;
        float r41590 = r41588 / r41589;
        return r41590;
}

double f_od(double x) {
        double r41591 = x;
        double r41592 = 1.0;
        double r41593 = r41591 + r41592;
        double r41594 = r41592 - r41591;
        double r41595 = r41593 / r41594;
        return r41595;
}

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 r41596, r41597, r41598, r41599, r41600;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41596);
        mpfr_init_set_str(r41597, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41598);
        mpfr_init(r41599);
        mpfr_init(r41600);
}

double f_im(double x) {
        mpfr_set_d(r41596, x, MPFR_RNDN);
        ;
        mpfr_add(r41598, r41596, r41597, MPFR_RNDN);
        mpfr_sub(r41599, r41597, r41596, MPFR_RNDN);
        mpfr_div(r41600, r41598, r41599, MPFR_RNDN);
        return mpfr_get_d(r41600, MPFR_RNDN);
}

static mpfr_t r41601, r41602, r41603, r41604, r41605;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41601);
        mpfr_init_set_str(r41602, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41603);
        mpfr_init(r41604);
        mpfr_init(r41605);
}

double f_fm(double x) {
        mpfr_set_d(r41601, x, MPFR_RNDN);
        ;
        mpfr_add(r41603, r41601, r41602, MPFR_RNDN);
        mpfr_sub(r41604, r41602, r41601, MPFR_RNDN);
        mpfr_div(r41605, r41603, r41604, MPFR_RNDN);
        return mpfr_get_d(r41605, MPFR_RNDN);
}

static mpfr_t r41606, r41607, r41608, r41609, r41610;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41606);
        mpfr_init_set_str(r41607, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41608);
        mpfr_init(r41609);
        mpfr_init(r41610);
}

double f_dm(double x) {
        mpfr_set_d(r41606, x, MPFR_RNDN);
        ;
        mpfr_add(r41608, r41606, r41607, MPFR_RNDN);
        mpfr_sub(r41609, r41607, r41606, MPFR_RNDN);
        mpfr_div(r41610, r41608, r41609, MPFR_RNDN);
        return mpfr_get_d(r41610, MPFR_RNDN);
}

