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

char *name = "Data.Number.Erf:$dmerfcx from erf-2.0.0.0";

double f_if(float x, float y) {
        float r54782 = x;
        float r54783 = y;
        float r54784 = r54783 * r54783;
        float r54785 = exp(r54784);
        float r54786 = r54782 * r54785;
        return r54786;
}

double f_id(double x, double y) {
        double r54787 = x;
        double r54788 = y;
        double r54789 = r54788 * r54788;
        double r54790 = exp(r54789);
        double r54791 = r54787 * r54790;
        return r54791;
}


double f_of(float x, float y) {
        float r54792 = x;
        float r54793 = y;
        float r54794 = r54793 * r54793;
        float r54795 = exp(r54794);
        float r54796 = r54792 * r54795;
        return r54796;
}

double f_od(double x, double y) {
        double r54797 = x;
        double r54798 = y;
        double r54799 = r54798 * r54798;
        double r54800 = exp(r54799);
        double r54801 = r54797 * r54800;
        return r54801;
}

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 r54802, r54803, r54804, r54805, r54806;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r54802);
        mpfr_init(r54803);
        mpfr_init(r54804);
        mpfr_init(r54805);
        mpfr_init(r54806);
}

double f_im(double x, double y) {
        mpfr_set_d(r54802, x, MPFR_RNDN);
        mpfr_set_d(r54803, y, MPFR_RNDN);
        mpfr_mul(r54804, r54803, r54803, MPFR_RNDN);
        mpfr_exp(r54805, r54804, MPFR_RNDN);
        mpfr_mul(r54806, r54802, r54805, MPFR_RNDN);
        return mpfr_get_d(r54806, MPFR_RNDN);
}

static mpfr_t r54807, r54808, r54809, r54810, r54811;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r54807);
        mpfr_init(r54808);
        mpfr_init(r54809);
        mpfr_init(r54810);
        mpfr_init(r54811);
}

double f_fm(double x, double y) {
        mpfr_set_d(r54807, x, MPFR_RNDN);
        mpfr_set_d(r54808, y, MPFR_RNDN);
        mpfr_sqr(r54809, r54808, MPFR_RNDN);
        mpfr_exp(r54810, r54809, MPFR_RNDN);
        mpfr_mul(r54811, r54807, r54810, MPFR_RNDN);
        return mpfr_get_d(r54811, MPFR_RNDN);
}

static mpfr_t r54812, r54813, r54814, r54815, r54816;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r54812);
        mpfr_init(r54813);
        mpfr_init(r54814);
        mpfr_init(r54815);
        mpfr_init(r54816);
}

double f_dm(double x, double y) {
        mpfr_set_d(r54812, x, MPFR_RNDN);
        mpfr_set_d(r54813, y, MPFR_RNDN);
        mpfr_sqr(r54814, r54813, MPFR_RNDN);
        mpfr_exp(r54815, r54814, MPFR_RNDN);
        mpfr_mul(r54816, r54812, r54815, MPFR_RNDN);
        return mpfr_get_d(r54816, MPFR_RNDN);
}

