#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 r44579 = x;
        float r44580 = y;
        float r44581 = 1.1283791670955126;
        float r44582 = z;
        float r44583 = exp(r44582);
        float r44584 = r44581 * r44583;
        float r44585 = r44579 * r44580;
        float r44586 = r44584 - r44585;
        float r44587 = r44580 / r44586;
        float r44588 = r44579 + r44587;
        return r44588;
}

double f_id(double x, double y, double z) {
        double r44589 = x;
        double r44590 = y;
        double r44591 = 1.1283791670955126;
        double r44592 = z;
        double r44593 = exp(r44592);
        double r44594 = r44591 * r44593;
        double r44595 = r44589 * r44590;
        double r44596 = r44594 - r44595;
        double r44597 = r44590 / r44596;
        double r44598 = r44589 + r44597;
        return r44598;
}


double f_of(float x, float y, float z) {
        float r44599 = x;
        float r44600 = 1;
        float r44601 = 1.1283791670955126;
        float r44602 = y;
        float r44603 = r44601 / r44602;
        float r44604 = z;
        float r44605 = exp(r44604);
        float r44606 = r44603 * r44605;
        float r44607 = r44606 - r44599;
        float r44608 = r44600 / r44607;
        float r44609 = r44599 + r44608;
        return r44609;
}

double f_od(double x, double y, double z) {
        double r44610 = x;
        double r44611 = 1;
        double r44612 = 1.1283791670955126;
        double r44613 = y;
        double r44614 = r44612 / r44613;
        double r44615 = z;
        double r44616 = exp(r44615);
        double r44617 = r44614 * r44616;
        double r44618 = r44617 - r44610;
        double r44619 = r44611 / r44618;
        double r44620 = r44610 + r44619;
        return r44620;
}

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 r44621, r44622, r44623, r44624, r44625, r44626, r44627, r44628, r44629, r44630;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r44621);
        mpfr_init(r44622);
        mpfr_init_set_str(r44623, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44624);
        mpfr_init(r44625);
        mpfr_init(r44626);
        mpfr_init(r44627);
        mpfr_init(r44628);
        mpfr_init(r44629);
        mpfr_init(r44630);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r44621, x, MPFR_RNDN);
        mpfr_set_d(r44622, y, MPFR_RNDN);
        ;
        mpfr_set_d(r44624, z, MPFR_RNDN);
        mpfr_exp(r44625, r44624, MPFR_RNDN);
        mpfr_mul(r44626, r44623, r44625, MPFR_RNDN);
        mpfr_mul(r44627, r44621, r44622, MPFR_RNDN);
        mpfr_sub(r44628, r44626, r44627, MPFR_RNDN);
        mpfr_div(r44629, r44622, r44628, MPFR_RNDN);
        mpfr_add(r44630, r44621, r44629, MPFR_RNDN);
        return mpfr_get_d(r44630, MPFR_RNDN);
}

static mpfr_t r44631, r44632, r44633, r44634, r44635, r44636, r44637, r44638, r44639, r44640, r44641;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44631);
        mpfr_init_set_str(r44632, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44633, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44634);
        mpfr_init(r44635);
        mpfr_init(r44636);
        mpfr_init(r44637);
        mpfr_init(r44638);
        mpfr_init(r44639);
        mpfr_init(r44640);
        mpfr_init(r44641);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r44631, x, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r44634, y, MPFR_RNDN);
        mpfr_div(r44635, r44633, r44634, MPFR_RNDN);
        mpfr_set_d(r44636, z, MPFR_RNDN);
        mpfr_exp(r44637, r44636, MPFR_RNDN);
        mpfr_mul(r44638, r44635, r44637, MPFR_RNDN);
        mpfr_sub(r44639, r44638, r44631, MPFR_RNDN);
        mpfr_div(r44640, r44632, r44639, MPFR_RNDN);
        mpfr_add(r44641, r44631, r44640, MPFR_RNDN);
        return mpfr_get_d(r44641, MPFR_RNDN);
}

static mpfr_t r44642, r44643, r44644, r44645, r44646, r44647, r44648, r44649, r44650, r44651, r44652;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44642);
        mpfr_init_set_str(r44643, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44644, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44645);
        mpfr_init(r44646);
        mpfr_init(r44647);
        mpfr_init(r44648);
        mpfr_init(r44649);
        mpfr_init(r44650);
        mpfr_init(r44651);
        mpfr_init(r44652);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r44642, x, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r44645, y, MPFR_RNDN);
        mpfr_div(r44646, r44644, r44645, MPFR_RNDN);
        mpfr_set_d(r44647, z, MPFR_RNDN);
        mpfr_exp(r44648, r44647, MPFR_RNDN);
        mpfr_mul(r44649, r44646, r44648, MPFR_RNDN);
        mpfr_sub(r44650, r44649, r44642, MPFR_RNDN);
        mpfr_div(r44651, r44643, r44650, MPFR_RNDN);
        mpfr_add(r44652, r44642, r44651, MPFR_RNDN);
        return mpfr_get_d(r44652, MPFR_RNDN);
}

