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

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

double f_if(float x, float y) {
        float r55781 = x;
        float r55782 = r55781 * r55781;
        float r55783 = y;
        float r55784 = r55782 + r55783;
        float r55785 = r55784 + r55783;
        return r55785;
}

double f_id(double x, double y) {
        double r55786 = x;
        double r55787 = r55786 * r55786;
        double r55788 = y;
        double r55789 = r55787 + r55788;
        double r55790 = r55789 + r55788;
        return r55790;
}


double f_of(float x, float y) {
        float r55791 = x;
        float r55792 = r55791 * r55791;
        float r55793 = y;
        float r55794 = r55792 + r55793;
        float r55795 = r55794 + r55793;
        return r55795;
}

double f_od(double x, double y) {
        double r55796 = x;
        double r55797 = r55796 * r55796;
        double r55798 = y;
        double r55799 = r55797 + r55798;
        double r55800 = r55799 + r55798;
        return r55800;
}

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 r55801, r55802, r55803, r55804, r55805;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55801);
        mpfr_init(r55802);
        mpfr_init(r55803);
        mpfr_init(r55804);
        mpfr_init(r55805);
}

double f_im(double x, double y) {
        mpfr_set_d(r55801, x, MPFR_RNDN);
        mpfr_mul(r55802, r55801, r55801, MPFR_RNDN);
        mpfr_set_d(r55803, y, MPFR_RNDN);
        mpfr_add(r55804, r55802, r55803, MPFR_RNDN);
        mpfr_add(r55805, r55804, r55803, MPFR_RNDN);
        return mpfr_get_d(r55805, MPFR_RNDN);
}

static mpfr_t r55806, r55807, r55808, r55809, r55810;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55806);
        mpfr_init(r55807);
        mpfr_init(r55808);
        mpfr_init(r55809);
        mpfr_init(r55810);
}

double f_fm(double x, double y) {
        mpfr_set_d(r55806, x, MPFR_RNDN);
        mpfr_mul(r55807, r55806, r55806, MPFR_RNDN);
        mpfr_set_d(r55808, y, MPFR_RNDN);
        mpfr_add(r55809, r55807, r55808, MPFR_RNDN);
        mpfr_add(r55810, r55809, r55808, MPFR_RNDN);
        return mpfr_get_d(r55810, MPFR_RNDN);
}

static mpfr_t r55811, r55812, r55813, r55814, r55815;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55811);
        mpfr_init(r55812);
        mpfr_init(r55813);
        mpfr_init(r55814);
        mpfr_init(r55815);
}

double f_dm(double x, double y) {
        mpfr_set_d(r55811, x, MPFR_RNDN);
        mpfr_mul(r55812, r55811, r55811, MPFR_RNDN);
        mpfr_set_d(r55813, y, MPFR_RNDN);
        mpfr_add(r55814, r55812, r55813, MPFR_RNDN);
        mpfr_add(r55815, r55814, r55813, MPFR_RNDN);
        return mpfr_get_d(r55815, MPFR_RNDN);
}

