#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 r56007 = x;
        float r56008 = r56007 * r56007;
        float r56009 = y;
        float r56010 = r56008 + r56009;
        float r56011 = r56010 + r56009;
        return r56011;
}

double f_id(double x, double y) {
        double r56012 = x;
        double r56013 = r56012 * r56012;
        double r56014 = y;
        double r56015 = r56013 + r56014;
        double r56016 = r56015 + r56014;
        return r56016;
}


double f_of(float x, float y) {
        float r56017 = x;
        float r56018 = r56017 * r56017;
        float r56019 = y;
        float r56020 = r56018 + r56019;
        float r56021 = r56020 + r56019;
        return r56021;
}

double f_od(double x, double y) {
        double r56022 = x;
        double r56023 = r56022 * r56022;
        double r56024 = y;
        double r56025 = r56023 + r56024;
        double r56026 = r56025 + r56024;
        return r56026;
}

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 r56027, r56028, r56029, r56030, r56031;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56027);
        mpfr_init(r56028);
        mpfr_init(r56029);
        mpfr_init(r56030);
        mpfr_init(r56031);
}

double f_im(double x, double y) {
        mpfr_set_d(r56027, x, MPFR_RNDN);
        mpfr_mul(r56028, r56027, r56027, MPFR_RNDN);
        mpfr_set_d(r56029, y, MPFR_RNDN);
        mpfr_add(r56030, r56028, r56029, MPFR_RNDN);
        mpfr_add(r56031, r56030, r56029, MPFR_RNDN);
        return mpfr_get_d(r56031, MPFR_RNDN);
}

static mpfr_t r56032, r56033, r56034, r56035, r56036;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56032);
        mpfr_init(r56033);
        mpfr_init(r56034);
        mpfr_init(r56035);
        mpfr_init(r56036);
}

double f_fm(double x, double y) {
        mpfr_set_d(r56032, x, MPFR_RNDN);
        mpfr_mul(r56033, r56032, r56032, MPFR_RNDN);
        mpfr_set_d(r56034, y, MPFR_RNDN);
        mpfr_add(r56035, r56033, r56034, MPFR_RNDN);
        mpfr_add(r56036, r56035, r56034, MPFR_RNDN);
        return mpfr_get_d(r56036, MPFR_RNDN);
}

static mpfr_t r56037, r56038, r56039, r56040, r56041;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56037);
        mpfr_init(r56038);
        mpfr_init(r56039);
        mpfr_init(r56040);
        mpfr_init(r56041);
}

double f_dm(double x, double y) {
        mpfr_set_d(r56037, x, MPFR_RNDN);
        mpfr_mul(r56038, r56037, r56037, MPFR_RNDN);
        mpfr_set_d(r56039, y, MPFR_RNDN);
        mpfr_add(r56040, r56038, r56039, MPFR_RNDN);
        mpfr_add(r56041, r56040, r56039, MPFR_RNDN);
        return mpfr_get_d(r56041, MPFR_RNDN);
}

