#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 r54817 = x;
        float r54818 = y;
        float r54819 = 1.0f;
        float r54820 = r54817 * r54818;
        float r54821 = 2.0f;
        float r54822 = r54820 / r54821;
        float r54823 = r54819 + r54822;
        float r54824 = r54818 / r54823;
        float r54825 = r54817 - r54824;
        return r54825;
}

double f_id(double x, double y) {
        double r54826 = x;
        double r54827 = y;
        double r54828 = 1.0;
        double r54829 = r54826 * r54827;
        double r54830 = 2.0;
        double r54831 = r54829 / r54830;
        double r54832 = r54828 + r54831;
        double r54833 = r54827 / r54832;
        double r54834 = r54826 - r54833;
        return r54834;
}


double f_of(float x, float y) {
        float r54835 = x;
        float r54836 = y;
        float r54837 = 1.0f;
        float r54838 = r54835 * r54836;
        float r54839 = 2.0f;
        float r54840 = r54838 / r54839;
        float r54841 = r54837 + r54840;
        float r54842 = r54836 / r54841;
        float r54843 = r54835 - r54842;
        return r54843;
}

double f_od(double x, double y) {
        double r54844 = x;
        double r54845 = y;
        double r54846 = 1.0;
        double r54847 = r54844 * r54845;
        double r54848 = 2.0;
        double r54849 = r54847 / r54848;
        double r54850 = r54846 + r54849;
        double r54851 = r54845 / r54850;
        double r54852 = r54844 - r54851;
        return r54852;
}

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 r54853, r54854, r54855, r54856, r54857, r54858, r54859, r54860, r54861;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r54853);
        mpfr_init(r54854);
        mpfr_init_set_str(r54855, "1.0", 10, MPFR_RNDN);
        mpfr_init(r54856);
        mpfr_init_set_str(r54857, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54858);
        mpfr_init(r54859);
        mpfr_init(r54860);
        mpfr_init(r54861);
}

double f_im(double x, double y) {
        mpfr_set_d(r54853, x, MPFR_RNDN);
        mpfr_set_d(r54854, y, MPFR_RNDN);
        ;
        mpfr_mul(r54856, r54853, r54854, MPFR_RNDN);
        ;
        mpfr_div(r54858, r54856, r54857, MPFR_RNDN);
        mpfr_add(r54859, r54855, r54858, MPFR_RNDN);
        mpfr_div(r54860, r54854, r54859, MPFR_RNDN);
        mpfr_sub(r54861, r54853, r54860, MPFR_RNDN);
        return mpfr_get_d(r54861, MPFR_RNDN);
}

static mpfr_t r54862, r54863, r54864, r54865, r54866, r54867, r54868, r54869, r54870;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r54862);
        mpfr_init(r54863);
        mpfr_init_set_str(r54864, "1.0", 10, MPFR_RNDN);
        mpfr_init(r54865);
        mpfr_init_set_str(r54866, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54867);
        mpfr_init(r54868);
        mpfr_init(r54869);
        mpfr_init(r54870);
}

double f_fm(double x, double y) {
        mpfr_set_d(r54862, x, MPFR_RNDN);
        mpfr_set_d(r54863, y, MPFR_RNDN);
        ;
        mpfr_mul(r54865, r54862, r54863, MPFR_RNDN);
        ;
        mpfr_div(r54867, r54865, r54866, MPFR_RNDN);
        mpfr_add(r54868, r54864, r54867, MPFR_RNDN);
        mpfr_div(r54869, r54863, r54868, MPFR_RNDN);
        mpfr_sub(r54870, r54862, r54869, MPFR_RNDN);
        return mpfr_get_d(r54870, MPFR_RNDN);
}

static mpfr_t r54871, r54872, r54873, r54874, r54875, r54876, r54877, r54878, r54879;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r54871);
        mpfr_init(r54872);
        mpfr_init_set_str(r54873, "1.0", 10, MPFR_RNDN);
        mpfr_init(r54874);
        mpfr_init_set_str(r54875, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54876);
        mpfr_init(r54877);
        mpfr_init(r54878);
        mpfr_init(r54879);
}

double f_dm(double x, double y) {
        mpfr_set_d(r54871, x, MPFR_RNDN);
        mpfr_set_d(r54872, y, MPFR_RNDN);
        ;
        mpfr_mul(r54874, r54871, r54872, MPFR_RNDN);
        ;
        mpfr_div(r54876, r54874, r54875, MPFR_RNDN);
        mpfr_add(r54877, r54873, r54876, MPFR_RNDN);
        mpfr_div(r54878, r54872, r54877, MPFR_RNDN);
        mpfr_sub(r54879, r54871, r54878, MPFR_RNDN);
        return mpfr_get_d(r54879, MPFR_RNDN);
}

