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

char *name = "Data.Random.Distribution.Normal:doubleStdNormalZ from random-fu-0.2.6.2";

double f_if(float x) {
        float r55793 = x;
        float r55794 = r55793 + r55793;
        float r55795 = 1.0;
        float r55796 = r55794 - r55795;
        return r55796;
}

double f_id(double x) {
        double r55797 = x;
        double r55798 = r55797 + r55797;
        double r55799 = 1.0;
        double r55800 = r55798 - r55799;
        return r55800;
}


double f_of(float x) {
        float r55801 = x;
        float r55802 = r55801 + r55801;
        float r55803 = 1.0;
        float r55804 = r55802 - r55803;
        return r55804;
}

double f_od(double x) {
        double r55805 = x;
        double r55806 = r55805 + r55805;
        double r55807 = 1.0;
        double r55808 = r55806 - r55807;
        return r55808;
}

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 r55809, r55810, r55811, r55812;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55809);
        mpfr_init(r55810);
        mpfr_init_set_str(r55811, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55812);
}

double f_im(double x) {
        mpfr_set_d(r55809, x, MPFR_RNDN);
        mpfr_add(r55810, r55809, r55809, MPFR_RNDN);
        ;
        mpfr_sub(r55812, r55810, r55811, MPFR_RNDN);
        return mpfr_get_d(r55812, MPFR_RNDN);
}

static mpfr_t r55813, r55814, r55815, r55816;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55813);
        mpfr_init(r55814);
        mpfr_init_set_str(r55815, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55816);
}

double f_fm(double x) {
        mpfr_set_d(r55813, x, MPFR_RNDN);
        mpfr_add(r55814, r55813, r55813, MPFR_RNDN);
        ;
        mpfr_sub(r55816, r55814, r55815, MPFR_RNDN);
        return mpfr_get_d(r55816, MPFR_RNDN);
}

static mpfr_t r55817, r55818, r55819, r55820;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55817);
        mpfr_init(r55818);
        mpfr_init_set_str(r55819, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55820);
}

double f_dm(double x) {
        mpfr_set_d(r55817, x, MPFR_RNDN);
        mpfr_add(r55818, r55817, r55817, MPFR_RNDN);
        ;
        mpfr_sub(r55820, r55818, r55819, MPFR_RNDN);
        return mpfr_get_d(r55820, MPFR_RNDN);
}

