#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, B";

double f_if(float x, float y) {
        float r54861 = x;
        float r54862 = y;
        float r54863 = 1.0;
        float r54864 = r54861 * r54862;
        float r54865 = 2.0;
        float r54866 = r54864 / r54865;
        float r54867 = r54863 + r54866;
        float r54868 = r54862 / r54867;
        float r54869 = r54861 - r54868;
        return r54869;
}

double f_id(double x, double y) {
        double r54870 = x;
        double r54871 = y;
        double r54872 = 1.0;
        double r54873 = r54870 * r54871;
        double r54874 = 2.0;
        double r54875 = r54873 / r54874;
        double r54876 = r54872 + r54875;
        double r54877 = r54871 / r54876;
        double r54878 = r54870 - r54877;
        return r54878;
}


double f_of(float x, float y) {
        float r54879 = x;
        float r54880 = y;
        float r54881 = 1.0;
        float r54882 = r54879 * r54880;
        float r54883 = 2.0;
        float r54884 = r54882 / r54883;
        float r54885 = r54881 + r54884;
        float r54886 = r54880 / r54885;
        float r54887 = r54879 - r54886;
        return r54887;
}

double f_od(double x, double y) {
        double r54888 = x;
        double r54889 = y;
        double r54890 = 1.0;
        double r54891 = r54888 * r54889;
        double r54892 = 2.0;
        double r54893 = r54891 / r54892;
        double r54894 = r54890 + r54893;
        double r54895 = r54889 / r54894;
        double r54896 = r54888 - r54895;
        return r54896;
}

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 r54897, r54898, r54899, r54900, r54901, r54902, r54903, r54904, r54905;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54897);
        mpfr_init(r54898);
        mpfr_init_set_str(r54899, "1.0", 10, MPFR_RNDN);
        mpfr_init(r54900);
        mpfr_init_set_str(r54901, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54902);
        mpfr_init(r54903);
        mpfr_init(r54904);
        mpfr_init(r54905);
}

double f_im(double x, double y) {
        mpfr_set_d(r54897, x, MPFR_RNDN);
        mpfr_set_d(r54898, y, MPFR_RNDN);
        ;
        mpfr_mul(r54900, r54897, r54898, MPFR_RNDN);
        ;
        mpfr_div(r54902, r54900, r54901, MPFR_RNDN);
        mpfr_add(r54903, r54899, r54902, MPFR_RNDN);
        mpfr_div(r54904, r54898, r54903, MPFR_RNDN);
        mpfr_sub(r54905, r54897, r54904, MPFR_RNDN);
        return mpfr_get_d(r54905, MPFR_RNDN);
}

static mpfr_t r54906, r54907, r54908, r54909, r54910, r54911, r54912, r54913, r54914;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54906);
        mpfr_init(r54907);
        mpfr_init_set_str(r54908, "1.0", 10, MPFR_RNDN);
        mpfr_init(r54909);
        mpfr_init_set_str(r54910, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54911);
        mpfr_init(r54912);
        mpfr_init(r54913);
        mpfr_init(r54914);
}

double f_fm(double x, double y) {
        mpfr_set_d(r54906, x, MPFR_RNDN);
        mpfr_set_d(r54907, y, MPFR_RNDN);
        ;
        mpfr_mul(r54909, r54906, r54907, MPFR_RNDN);
        ;
        mpfr_div(r54911, r54909, r54910, MPFR_RNDN);
        mpfr_add(r54912, r54908, r54911, MPFR_RNDN);
        mpfr_div(r54913, r54907, r54912, MPFR_RNDN);
        mpfr_sub(r54914, r54906, r54913, MPFR_RNDN);
        return mpfr_get_d(r54914, MPFR_RNDN);
}

static mpfr_t r54915, r54916, r54917, r54918, r54919, r54920, r54921, r54922, r54923;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54915);
        mpfr_init(r54916);
        mpfr_init_set_str(r54917, "1.0", 10, MPFR_RNDN);
        mpfr_init(r54918);
        mpfr_init_set_str(r54919, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54920);
        mpfr_init(r54921);
        mpfr_init(r54922);
        mpfr_init(r54923);
}

double f_dm(double x, double y) {
        mpfr_set_d(r54915, x, MPFR_RNDN);
        mpfr_set_d(r54916, y, MPFR_RNDN);
        ;
        mpfr_mul(r54918, r54915, r54916, MPFR_RNDN);
        ;
        mpfr_div(r54920, r54918, r54919, MPFR_RNDN);
        mpfr_add(r54921, r54917, r54920, MPFR_RNDN);
        mpfr_div(r54922, r54916, r54921, MPFR_RNDN);
        mpfr_sub(r54923, r54915, r54922, MPFR_RNDN);
        return mpfr_get_d(r54923, MPFR_RNDN);
}

