#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 r54606 = x;
        float r54607 = r54606 * r54606;
        float r54608 = y;
        float r54609 = r54607 + r54608;
        float r54610 = r54609 + r54608;
        return r54610;
}

double f_id(double x, double y) {
        double r54611 = x;
        double r54612 = r54611 * r54611;
        double r54613 = y;
        double r54614 = r54612 + r54613;
        double r54615 = r54614 + r54613;
        return r54615;
}


double f_of(float x, float y) {
        float r54616 = x;
        float r54617 = r54616 * r54616;
        float r54618 = y;
        float r54619 = r54617 + r54618;
        float r54620 = r54619 + r54618;
        return r54620;
}

double f_od(double x, double y) {
        double r54621 = x;
        double r54622 = r54621 * r54621;
        double r54623 = y;
        double r54624 = r54622 + r54623;
        double r54625 = r54624 + r54623;
        return r54625;
}

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 r54626, r54627, r54628, r54629, r54630;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54626);
        mpfr_init(r54627);
        mpfr_init(r54628);
        mpfr_init(r54629);
        mpfr_init(r54630);
}

double f_im(double x, double y) {
        mpfr_set_d(r54626, x, MPFR_RNDN);
        mpfr_mul(r54627, r54626, r54626, MPFR_RNDN);
        mpfr_set_d(r54628, y, MPFR_RNDN);
        mpfr_add(r54629, r54627, r54628, MPFR_RNDN);
        mpfr_add(r54630, r54629, r54628, MPFR_RNDN);
        return mpfr_get_d(r54630, MPFR_RNDN);
}

static mpfr_t r54631, r54632, r54633, r54634, r54635;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54631);
        mpfr_init(r54632);
        mpfr_init(r54633);
        mpfr_init(r54634);
        mpfr_init(r54635);
}

double f_fm(double x, double y) {
        mpfr_set_d(r54631, x, MPFR_RNDN);
        mpfr_mul(r54632, r54631, r54631, MPFR_RNDN);
        mpfr_set_d(r54633, y, MPFR_RNDN);
        mpfr_add(r54634, r54632, r54633, MPFR_RNDN);
        mpfr_add(r54635, r54634, r54633, MPFR_RNDN);
        return mpfr_get_d(r54635, MPFR_RNDN);
}

static mpfr_t r54636, r54637, r54638, r54639, r54640;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54636);
        mpfr_init(r54637);
        mpfr_init(r54638);
        mpfr_init(r54639);
        mpfr_init(r54640);
}

double f_dm(double x, double y) {
        mpfr_set_d(r54636, x, MPFR_RNDN);
        mpfr_mul(r54637, r54636, r54636, MPFR_RNDN);
        mpfr_set_d(r54638, y, MPFR_RNDN);
        mpfr_add(r54639, r54637, r54638, MPFR_RNDN);
        mpfr_add(r54640, r54639, r54638, MPFR_RNDN);
        return mpfr_get_d(r54640, MPFR_RNDN);
}

