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

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

double f_if(float x, float y, float z, float t) {
        float r56041 = x;
        float r56042 = 0.5;
        float r56043 = r56041 * r56042;
        float r56044 = y;
        float r56045 = r56043 - r56044;
        float r56046 = z;
        float r56047 = 2.0;
        float r56048 = r56046 * r56047;
        float r56049 = sqrt(r56048);
        float r56050 = r56045 * r56049;
        float r56051 = t;
        float r56052 = r56051 * r56051;
        float r56053 = r56052 / r56047;
        float r56054 = exp(r56053);
        float r56055 = r56050 * r56054;
        return r56055;
}

double f_id(double x, double y, double z, double t) {
        double r56056 = x;
        double r56057 = 0.5;
        double r56058 = r56056 * r56057;
        double r56059 = y;
        double r56060 = r56058 - r56059;
        double r56061 = z;
        double r56062 = 2.0;
        double r56063 = r56061 * r56062;
        double r56064 = sqrt(r56063);
        double r56065 = r56060 * r56064;
        double r56066 = t;
        double r56067 = r56066 * r56066;
        double r56068 = r56067 / r56062;
        double r56069 = exp(r56068);
        double r56070 = r56065 * r56069;
        return r56070;
}


double f_of(float x, float y, float z, float t) {
        float r56071 = x;
        float r56072 = 0.5;
        float r56073 = r56071 * r56072;
        float r56074 = y;
        float r56075 = r56073 - r56074;
        float r56076 = z;
        float r56077 = 2.0;
        float r56078 = r56076 * r56077;
        float r56079 = sqrt(r56078);
        float r56080 = r56075 * r56079;
        float r56081 = t;
        float r56082 = r56081 * r56081;
        float r56083 = r56082 / r56077;
        float r56084 = exp(r56083);
        float r56085 = r56080 * r56084;
        return r56085;
}

double f_od(double x, double y, double z, double t) {
        double r56086 = x;
        double r56087 = 0.5;
        double r56088 = r56086 * r56087;
        double r56089 = y;
        double r56090 = r56088 - r56089;
        double r56091 = z;
        double r56092 = 2.0;
        double r56093 = r56091 * r56092;
        double r56094 = sqrt(r56093);
        double r56095 = r56090 * r56094;
        double r56096 = t;
        double r56097 = r56096 * r56096;
        double r56098 = r56097 / r56092;
        double r56099 = exp(r56098);
        double r56100 = r56095 * r56099;
        return r56100;
}

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 r56101, r56102, r56103, r56104, r56105, r56106, r56107, r56108, r56109, r56110, r56111, r56112, r56113, r56114, r56115;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56101);
        mpfr_init_set_str(r56102, "0.5", 10, MPFR_RNDN);
        mpfr_init(r56103);
        mpfr_init(r56104);
        mpfr_init(r56105);
        mpfr_init(r56106);
        mpfr_init_set_str(r56107, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56108);
        mpfr_init(r56109);
        mpfr_init(r56110);
        mpfr_init(r56111);
        mpfr_init(r56112);
        mpfr_init(r56113);
        mpfr_init(r56114);
        mpfr_init(r56115);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r56101, x, MPFR_RNDN);
        ;
        mpfr_mul(r56103, r56101, r56102, MPFR_RNDN);
        mpfr_set_d(r56104, y, MPFR_RNDN);
        mpfr_sub(r56105, r56103, r56104, MPFR_RNDN);
        mpfr_set_d(r56106, z, MPFR_RNDN);
        ;
        mpfr_mul(r56108, r56106, r56107, MPFR_RNDN);
        mpfr_sqrt(r56109, r56108, MPFR_RNDN);
        mpfr_mul(r56110, r56105, r56109, MPFR_RNDN);
        mpfr_set_d(r56111, t, MPFR_RNDN);
        mpfr_mul(r56112, r56111, r56111, MPFR_RNDN);
        mpfr_div(r56113, r56112, r56107, MPFR_RNDN);
        mpfr_exp(r56114, r56113, MPFR_RNDN);
        mpfr_mul(r56115, r56110, r56114, MPFR_RNDN);
        return mpfr_get_d(r56115, MPFR_RNDN);
}

static mpfr_t r56116, r56117, r56118, r56119, r56120, r56121, r56122, r56123, r56124, r56125, r56126, r56127, r56128, r56129, r56130;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56116);
        mpfr_init_set_str(r56117, "0.5", 10, MPFR_RNDN);
        mpfr_init(r56118);
        mpfr_init(r56119);
        mpfr_init(r56120);
        mpfr_init(r56121);
        mpfr_init_set_str(r56122, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56123);
        mpfr_init(r56124);
        mpfr_init(r56125);
        mpfr_init(r56126);
        mpfr_init(r56127);
        mpfr_init(r56128);
        mpfr_init(r56129);
        mpfr_init(r56130);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r56116, x, MPFR_RNDN);
        ;
        mpfr_mul(r56118, r56116, r56117, MPFR_RNDN);
        mpfr_set_d(r56119, y, MPFR_RNDN);
        mpfr_sub(r56120, r56118, r56119, MPFR_RNDN);
        mpfr_set_d(r56121, z, MPFR_RNDN);
        ;
        mpfr_mul(r56123, r56121, r56122, MPFR_RNDN);
        mpfr_sqrt(r56124, r56123, MPFR_RNDN);
        mpfr_mul(r56125, r56120, r56124, MPFR_RNDN);
        mpfr_set_d(r56126, t, MPFR_RNDN);
        mpfr_mul(r56127, r56126, r56126, MPFR_RNDN);
        mpfr_div(r56128, r56127, r56122, MPFR_RNDN);
        mpfr_exp(r56129, r56128, MPFR_RNDN);
        mpfr_mul(r56130, r56125, r56129, MPFR_RNDN);
        return mpfr_get_d(r56130, MPFR_RNDN);
}

static mpfr_t r56131, r56132, r56133, r56134, r56135, r56136, r56137, r56138, r56139, r56140, r56141, r56142, r56143, r56144, r56145;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56131);
        mpfr_init_set_str(r56132, "0.5", 10, MPFR_RNDN);
        mpfr_init(r56133);
        mpfr_init(r56134);
        mpfr_init(r56135);
        mpfr_init(r56136);
        mpfr_init_set_str(r56137, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56138);
        mpfr_init(r56139);
        mpfr_init(r56140);
        mpfr_init(r56141);
        mpfr_init(r56142);
        mpfr_init(r56143);
        mpfr_init(r56144);
        mpfr_init(r56145);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r56131, x, MPFR_RNDN);
        ;
        mpfr_mul(r56133, r56131, r56132, MPFR_RNDN);
        mpfr_set_d(r56134, y, MPFR_RNDN);
        mpfr_sub(r56135, r56133, r56134, MPFR_RNDN);
        mpfr_set_d(r56136, z, MPFR_RNDN);
        ;
        mpfr_mul(r56138, r56136, r56137, MPFR_RNDN);
        mpfr_sqrt(r56139, r56138, MPFR_RNDN);
        mpfr_mul(r56140, r56135, r56139, MPFR_RNDN);
        mpfr_set_d(r56141, t, MPFR_RNDN);
        mpfr_mul(r56142, r56141, r56141, MPFR_RNDN);
        mpfr_div(r56143, r56142, r56137, MPFR_RNDN);
        mpfr_exp(r56144, r56143, MPFR_RNDN);
        mpfr_mul(r56145, r56140, r56144, MPFR_RNDN);
        return mpfr_get_d(r56145, MPFR_RNDN);
}

