#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 r41463 = x;
        float r41464 = 1.0;
        float r41465 = r41463 + r41464;
        float r41466 = r41464 - r41463;
        float r41467 = r41465 / r41466;
        return r41467;
}

double f_id(double x) {
        double r41468 = x;
        double r41469 = 1.0;
        double r41470 = r41468 + r41469;
        double r41471 = r41469 - r41468;
        double r41472 = r41470 / r41471;
        return r41472;
}


double f_of(float x) {
        float r41473 = x;
        float r41474 = 1.0;
        float r41475 = r41473 + r41474;
        float r41476 = r41474 - r41473;
        float r41477 = r41475 / r41476;
        return r41477;
}

double f_od(double x) {
        double r41478 = x;
        double r41479 = 1.0;
        double r41480 = r41478 + r41479;
        double r41481 = r41479 - r41478;
        double r41482 = r41480 / r41481;
        return r41482;
}

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 r41483, r41484, r41485, r41486, r41487;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41483);
        mpfr_init_set_str(r41484, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41485);
        mpfr_init(r41486);
        mpfr_init(r41487);
}

double f_im(double x) {
        mpfr_set_d(r41483, x, MPFR_RNDN);
        ;
        mpfr_add(r41485, r41483, r41484, MPFR_RNDN);
        mpfr_sub(r41486, r41484, r41483, MPFR_RNDN);
        mpfr_div(r41487, r41485, r41486, MPFR_RNDN);
        return mpfr_get_d(r41487, MPFR_RNDN);
}

static mpfr_t r41488, r41489, r41490, r41491, r41492;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41488);
        mpfr_init_set_str(r41489, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41490);
        mpfr_init(r41491);
        mpfr_init(r41492);
}

double f_fm(double x) {
        mpfr_set_d(r41488, x, MPFR_RNDN);
        ;
        mpfr_add(r41490, r41488, r41489, MPFR_RNDN);
        mpfr_sub(r41491, r41489, r41488, MPFR_RNDN);
        mpfr_div(r41492, r41490, r41491, MPFR_RNDN);
        return mpfr_get_d(r41492, MPFR_RNDN);
}

static mpfr_t r41493, r41494, r41495, r41496, r41497;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41493);
        mpfr_init_set_str(r41494, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41495);
        mpfr_init(r41496);
        mpfr_init(r41497);
}

double f_dm(double x) {
        mpfr_set_d(r41493, x, MPFR_RNDN);
        ;
        mpfr_add(r41495, r41493, r41494, MPFR_RNDN);
        mpfr_sub(r41496, r41494, r41493, MPFR_RNDN);
        mpfr_div(r41497, r41495, r41496, MPFR_RNDN);
        return mpfr_get_d(r41497, MPFR_RNDN);
}

