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

char *name = "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A";

double f_if(float x, float y, float z) {
        float r44860 = x;
        float r44861 = y;
        float r44862 = 1.1283791670955126;
        float r44863 = z;
        float r44864 = exp(r44863);
        float r44865 = r44862 * r44864;
        float r44866 = r44860 * r44861;
        float r44867 = r44865 - r44866;
        float r44868 = r44861 / r44867;
        float r44869 = r44860 + r44868;
        return r44869;
}

double f_id(double x, double y, double z) {
        double r44870 = x;
        double r44871 = y;
        double r44872 = 1.1283791670955126;
        double r44873 = z;
        double r44874 = exp(r44873);
        double r44875 = r44872 * r44874;
        double r44876 = r44870 * r44871;
        double r44877 = r44875 - r44876;
        double r44878 = r44871 / r44877;
        double r44879 = r44870 + r44878;
        return r44879;
}


double f_of(float x, float y, float z) {
        float r44880 = x;
        float r44881 = 1;
        float r44882 = 1.1283791670955126;
        float r44883 = y;
        float r44884 = r44882 / r44883;
        float r44885 = z;
        float r44886 = exp(r44885);
        float r44887 = r44884 * r44886;
        float r44888 = r44887 - r44880;
        float r44889 = r44881 / r44888;
        float r44890 = r44880 + r44889;
        return r44890;
}

double f_od(double x, double y, double z) {
        double r44891 = x;
        double r44892 = 1;
        double r44893 = 1.1283791670955126;
        double r44894 = y;
        double r44895 = r44893 / r44894;
        double r44896 = z;
        double r44897 = exp(r44896);
        double r44898 = r44895 * r44897;
        double r44899 = r44898 - r44891;
        double r44900 = r44892 / r44899;
        double r44901 = r44891 + r44900;
        return r44901;
}

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 r44902, r44903, r44904, r44905, r44906, r44907, r44908, r44909, r44910, r44911;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r44902);
        mpfr_init(r44903);
        mpfr_init_set_str(r44904, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44905);
        mpfr_init(r44906);
        mpfr_init(r44907);
        mpfr_init(r44908);
        mpfr_init(r44909);
        mpfr_init(r44910);
        mpfr_init(r44911);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r44902, x, MPFR_RNDN);
        mpfr_set_d(r44903, y, MPFR_RNDN);
        ;
        mpfr_set_d(r44905, z, MPFR_RNDN);
        mpfr_exp(r44906, r44905, MPFR_RNDN);
        mpfr_mul(r44907, r44904, r44906, MPFR_RNDN);
        mpfr_mul(r44908, r44902, r44903, MPFR_RNDN);
        mpfr_sub(r44909, r44907, r44908, MPFR_RNDN);
        mpfr_div(r44910, r44903, r44909, MPFR_RNDN);
        mpfr_add(r44911, r44902, r44910, MPFR_RNDN);
        return mpfr_get_d(r44911, MPFR_RNDN);
}

static mpfr_t r44912, r44913, r44914, r44915, r44916, r44917, r44918, r44919, r44920, r44921, r44922;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44912);
        mpfr_init_set_str(r44913, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44914, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44915);
        mpfr_init(r44916);
        mpfr_init(r44917);
        mpfr_init(r44918);
        mpfr_init(r44919);
        mpfr_init(r44920);
        mpfr_init(r44921);
        mpfr_init(r44922);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r44912, x, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r44915, y, MPFR_RNDN);
        mpfr_div(r44916, r44914, r44915, MPFR_RNDN);
        mpfr_set_d(r44917, z, MPFR_RNDN);
        mpfr_exp(r44918, r44917, MPFR_RNDN);
        mpfr_mul(r44919, r44916, r44918, MPFR_RNDN);
        mpfr_sub(r44920, r44919, r44912, MPFR_RNDN);
        mpfr_div(r44921, r44913, r44920, MPFR_RNDN);
        mpfr_add(r44922, r44912, r44921, MPFR_RNDN);
        return mpfr_get_d(r44922, MPFR_RNDN);
}

static mpfr_t r44923, r44924, r44925, r44926, r44927, r44928, r44929, r44930, r44931, r44932, r44933;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44923);
        mpfr_init_set_str(r44924, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44925, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44926);
        mpfr_init(r44927);
        mpfr_init(r44928);
        mpfr_init(r44929);
        mpfr_init(r44930);
        mpfr_init(r44931);
        mpfr_init(r44932);
        mpfr_init(r44933);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r44923, x, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r44926, y, MPFR_RNDN);
        mpfr_div(r44927, r44925, r44926, MPFR_RNDN);
        mpfr_set_d(r44928, z, MPFR_RNDN);
        mpfr_exp(r44929, r44928, MPFR_RNDN);
        mpfr_mul(r44930, r44927, r44929, MPFR_RNDN);
        mpfr_sub(r44931, r44930, r44923, MPFR_RNDN);
        mpfr_div(r44932, r44924, r44931, MPFR_RNDN);
        mpfr_add(r44933, r44923, r44932, MPFR_RNDN);
        return mpfr_get_d(r44933, MPFR_RNDN);
}

