#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 r56325 = x;
        float r56326 = 0.5;
        float r56327 = r56325 * r56326;
        float r56328 = y;
        float r56329 = r56327 - r56328;
        float r56330 = z;
        float r56331 = 2.0;
        float r56332 = r56330 * r56331;
        float r56333 = sqrt(r56332);
        float r56334 = r56329 * r56333;
        float r56335 = t;
        float r56336 = r56335 * r56335;
        float r56337 = r56336 / r56331;
        float r56338 = exp(r56337);
        float r56339 = r56334 * r56338;
        return r56339;
}

double f_id(double x, double y, double z, double t) {
        double r56340 = x;
        double r56341 = 0.5;
        double r56342 = r56340 * r56341;
        double r56343 = y;
        double r56344 = r56342 - r56343;
        double r56345 = z;
        double r56346 = 2.0;
        double r56347 = r56345 * r56346;
        double r56348 = sqrt(r56347);
        double r56349 = r56344 * r56348;
        double r56350 = t;
        double r56351 = r56350 * r56350;
        double r56352 = r56351 / r56346;
        double r56353 = exp(r56352);
        double r56354 = r56349 * r56353;
        return r56354;
}


double f_of(float x, float y, float z, float t) {
        float r56355 = x;
        float r56356 = 0.5;
        float r56357 = r56355 * r56356;
        float r56358 = y;
        float r56359 = r56357 - r56358;
        float r56360 = z;
        float r56361 = 2.0;
        float r56362 = r56360 * r56361;
        float r56363 = sqrt(r56362);
        float r56364 = r56359 * r56363;
        float r56365 = t;
        float r56366 = r56365 * r56365;
        float r56367 = r56366 / r56361;
        float r56368 = exp(r56367);
        float r56369 = r56364 * r56368;
        return r56369;
}

double f_od(double x, double y, double z, double t) {
        double r56370 = x;
        double r56371 = 0.5;
        double r56372 = r56370 * r56371;
        double r56373 = y;
        double r56374 = r56372 - r56373;
        double r56375 = z;
        double r56376 = 2.0;
        double r56377 = r56375 * r56376;
        double r56378 = sqrt(r56377);
        double r56379 = r56374 * r56378;
        double r56380 = t;
        double r56381 = r56380 * r56380;
        double r56382 = r56381 / r56376;
        double r56383 = exp(r56382);
        double r56384 = r56379 * r56383;
        return r56384;
}

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 r56385, r56386, r56387, r56388, r56389, r56390, r56391, r56392, r56393, r56394, r56395, r56396, r56397, r56398, r56399;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56385);
        mpfr_init_set_str(r56386, "0.5", 10, MPFR_RNDN);
        mpfr_init(r56387);
        mpfr_init(r56388);
        mpfr_init(r56389);
        mpfr_init(r56390);
        mpfr_init_set_str(r56391, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56392);
        mpfr_init(r56393);
        mpfr_init(r56394);
        mpfr_init(r56395);
        mpfr_init(r56396);
        mpfr_init(r56397);
        mpfr_init(r56398);
        mpfr_init(r56399);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r56385, x, MPFR_RNDN);
        ;
        mpfr_mul(r56387, r56385, r56386, MPFR_RNDN);
        mpfr_set_d(r56388, y, MPFR_RNDN);
        mpfr_sub(r56389, r56387, r56388, MPFR_RNDN);
        mpfr_set_d(r56390, z, MPFR_RNDN);
        ;
        mpfr_mul(r56392, r56390, r56391, MPFR_RNDN);
        mpfr_sqrt(r56393, r56392, MPFR_RNDN);
        mpfr_mul(r56394, r56389, r56393, MPFR_RNDN);
        mpfr_set_d(r56395, t, MPFR_RNDN);
        mpfr_mul(r56396, r56395, r56395, MPFR_RNDN);
        mpfr_div(r56397, r56396, r56391, MPFR_RNDN);
        mpfr_exp(r56398, r56397, MPFR_RNDN);
        mpfr_mul(r56399, r56394, r56398, MPFR_RNDN);
        return mpfr_get_d(r56399, MPFR_RNDN);
}

static mpfr_t r56400, r56401, r56402, r56403, r56404, r56405, r56406, r56407, r56408, r56409, r56410, r56411, r56412, r56413, r56414;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56400);
        mpfr_init_set_str(r56401, "0.5", 10, MPFR_RNDN);
        mpfr_init(r56402);
        mpfr_init(r56403);
        mpfr_init(r56404);
        mpfr_init(r56405);
        mpfr_init_set_str(r56406, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56407);
        mpfr_init(r56408);
        mpfr_init(r56409);
        mpfr_init(r56410);
        mpfr_init(r56411);
        mpfr_init(r56412);
        mpfr_init(r56413);
        mpfr_init(r56414);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r56400, x, MPFR_RNDN);
        ;
        mpfr_mul(r56402, r56400, r56401, MPFR_RNDN);
        mpfr_set_d(r56403, y, MPFR_RNDN);
        mpfr_sub(r56404, r56402, r56403, MPFR_RNDN);
        mpfr_set_d(r56405, z, MPFR_RNDN);
        ;
        mpfr_mul(r56407, r56405, r56406, MPFR_RNDN);
        mpfr_sqrt(r56408, r56407, MPFR_RNDN);
        mpfr_mul(r56409, r56404, r56408, MPFR_RNDN);
        mpfr_set_d(r56410, t, MPFR_RNDN);
        mpfr_mul(r56411, r56410, r56410, MPFR_RNDN);
        mpfr_div(r56412, r56411, r56406, MPFR_RNDN);
        mpfr_exp(r56413, r56412, MPFR_RNDN);
        mpfr_mul(r56414, r56409, r56413, MPFR_RNDN);
        return mpfr_get_d(r56414, MPFR_RNDN);
}

static mpfr_t r56415, r56416, r56417, r56418, r56419, r56420, r56421, r56422, r56423, r56424, r56425, r56426, r56427, r56428, r56429;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56415);
        mpfr_init_set_str(r56416, "0.5", 10, MPFR_RNDN);
        mpfr_init(r56417);
        mpfr_init(r56418);
        mpfr_init(r56419);
        mpfr_init(r56420);
        mpfr_init_set_str(r56421, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56422);
        mpfr_init(r56423);
        mpfr_init(r56424);
        mpfr_init(r56425);
        mpfr_init(r56426);
        mpfr_init(r56427);
        mpfr_init(r56428);
        mpfr_init(r56429);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r56415, x, MPFR_RNDN);
        ;
        mpfr_mul(r56417, r56415, r56416, MPFR_RNDN);
        mpfr_set_d(r56418, y, MPFR_RNDN);
        mpfr_sub(r56419, r56417, r56418, MPFR_RNDN);
        mpfr_set_d(r56420, z, MPFR_RNDN);
        ;
        mpfr_mul(r56422, r56420, r56421, MPFR_RNDN);
        mpfr_sqrt(r56423, r56422, MPFR_RNDN);
        mpfr_mul(r56424, r56419, r56423, MPFR_RNDN);
        mpfr_set_d(r56425, t, MPFR_RNDN);
        mpfr_mul(r56426, r56425, r56425, MPFR_RNDN);
        mpfr_div(r56427, r56426, r56421, MPFR_RNDN);
        mpfr_exp(r56428, r56427, MPFR_RNDN);
        mpfr_mul(r56429, r56424, r56428, MPFR_RNDN);
        return mpfr_get_d(r56429, MPFR_RNDN);
}

