#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 r56227 = x;
        float r56228 = y;
        float r56229 = r56228 * r56228;
        float r56230 = exp(r56229);
        float r56231 = r56227 * r56230;
        return r56231;
}

double f_id(double x, double y) {
        double r56232 = x;
        double r56233 = y;
        double r56234 = r56233 * r56233;
        double r56235 = exp(r56234);
        double r56236 = r56232 * r56235;
        return r56236;
}


double f_of(float x, float y) {
        float r56237 = x;
        float r56238 = y;
        float r56239 = r56238 * r56238;
        float r56240 = exp(r56239);
        float r56241 = r56237 * r56240;
        return r56241;
}

double f_od(double x, double y) {
        double r56242 = x;
        double r56243 = y;
        double r56244 = r56243 * r56243;
        double r56245 = exp(r56244);
        double r56246 = r56242 * r56245;
        return r56246;
}

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 r56247, r56248, r56249, r56250, r56251;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56247);
        mpfr_init(r56248);
        mpfr_init(r56249);
        mpfr_init(r56250);
        mpfr_init(r56251);
}

double f_im(double x, double y) {
        mpfr_set_d(r56247, x, MPFR_RNDN);
        mpfr_set_d(r56248, y, MPFR_RNDN);
        mpfr_mul(r56249, r56248, r56248, MPFR_RNDN);
        mpfr_exp(r56250, r56249, MPFR_RNDN);
        mpfr_mul(r56251, r56247, r56250, MPFR_RNDN);
        return mpfr_get_d(r56251, MPFR_RNDN);
}

static mpfr_t r56252, r56253, r56254, r56255, r56256;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56252);
        mpfr_init(r56253);
        mpfr_init(r56254);
        mpfr_init(r56255);
        mpfr_init(r56256);
}

double f_fm(double x, double y) {
        mpfr_set_d(r56252, x, MPFR_RNDN);
        mpfr_set_d(r56253, y, MPFR_RNDN);
        mpfr_mul(r56254, r56253, r56253, MPFR_RNDN);
        mpfr_exp(r56255, r56254, MPFR_RNDN);
        mpfr_mul(r56256, r56252, r56255, MPFR_RNDN);
        return mpfr_get_d(r56256, MPFR_RNDN);
}

static mpfr_t r56257, r56258, r56259, r56260, r56261;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56257);
        mpfr_init(r56258);
        mpfr_init(r56259);
        mpfr_init(r56260);
        mpfr_init(r56261);
}

double f_dm(double x, double y) {
        mpfr_set_d(r56257, x, MPFR_RNDN);
        mpfr_set_d(r56258, y, MPFR_RNDN);
        mpfr_mul(r56259, r56258, r56258, MPFR_RNDN);
        mpfr_exp(r56260, r56259, MPFR_RNDN);
        mpfr_mul(r56261, r56257, r56260, MPFR_RNDN);
        return mpfr_get_d(r56261, MPFR_RNDN);
}

