#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 r44448 = x;
        float r44449 = y;
        float r44450 = 1.1283791670955126;
        float r44451 = z;
        float r44452 = exp(r44451);
        float r44453 = r44450 * r44452;
        float r44454 = r44448 * r44449;
        float r44455 = r44453 - r44454;
        float r44456 = r44449 / r44455;
        float r44457 = r44448 + r44456;
        return r44457;
}

double f_id(double x, double y, double z) {
        double r44458 = x;
        double r44459 = y;
        double r44460 = 1.1283791670955126;
        double r44461 = z;
        double r44462 = exp(r44461);
        double r44463 = r44460 * r44462;
        double r44464 = r44458 * r44459;
        double r44465 = r44463 - r44464;
        double r44466 = r44459 / r44465;
        double r44467 = r44458 + r44466;
        return r44467;
}


double f_of(float x, float y, float z) {
        float r44468 = x;
        float r44469 = 1;
        float r44470 = 1.1283791670955126;
        float r44471 = y;
        float r44472 = r44470 / r44471;
        float r44473 = z;
        float r44474 = exp(r44473);
        float r44475 = r44472 * r44474;
        float r44476 = r44475 - r44468;
        float r44477 = r44469 / r44476;
        float r44478 = r44468 + r44477;
        return r44478;
}

double f_od(double x, double y, double z) {
        double r44479 = x;
        double r44480 = 1;
        double r44481 = 1.1283791670955126;
        double r44482 = y;
        double r44483 = r44481 / r44482;
        double r44484 = z;
        double r44485 = exp(r44484);
        double r44486 = r44483 * r44485;
        double r44487 = r44486 - r44479;
        double r44488 = r44480 / r44487;
        double r44489 = r44479 + r44488;
        return r44489;
}

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 r44490, r44491, r44492, r44493, r44494, r44495, r44496, r44497, r44498, r44499;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r44490);
        mpfr_init(r44491);
        mpfr_init_set_str(r44492, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44493);
        mpfr_init(r44494);
        mpfr_init(r44495);
        mpfr_init(r44496);
        mpfr_init(r44497);
        mpfr_init(r44498);
        mpfr_init(r44499);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r44490, x, MPFR_RNDN);
        mpfr_set_d(r44491, y, MPFR_RNDN);
        ;
        mpfr_set_d(r44493, z, MPFR_RNDN);
        mpfr_exp(r44494, r44493, MPFR_RNDN);
        mpfr_mul(r44495, r44492, r44494, MPFR_RNDN);
        mpfr_mul(r44496, r44490, r44491, MPFR_RNDN);
        mpfr_sub(r44497, r44495, r44496, MPFR_RNDN);
        mpfr_div(r44498, r44491, r44497, MPFR_RNDN);
        mpfr_add(r44499, r44490, r44498, MPFR_RNDN);
        return mpfr_get_d(r44499, MPFR_RNDN);
}

static mpfr_t r44500, r44501, r44502, r44503, r44504, r44505, r44506, r44507, r44508, r44509, r44510;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44500);
        mpfr_init_set_str(r44501, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44502, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44503);
        mpfr_init(r44504);
        mpfr_init(r44505);
        mpfr_init(r44506);
        mpfr_init(r44507);
        mpfr_init(r44508);
        mpfr_init(r44509);
        mpfr_init(r44510);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r44500, x, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r44503, y, MPFR_RNDN);
        mpfr_div(r44504, r44502, r44503, MPFR_RNDN);
        mpfr_set_d(r44505, z, MPFR_RNDN);
        mpfr_exp(r44506, r44505, MPFR_RNDN);
        mpfr_mul(r44507, r44504, r44506, MPFR_RNDN);
        mpfr_sub(r44508, r44507, r44500, MPFR_RNDN);
        mpfr_div(r44509, r44501, r44508, MPFR_RNDN);
        mpfr_add(r44510, r44500, r44509, MPFR_RNDN);
        return mpfr_get_d(r44510, MPFR_RNDN);
}

static mpfr_t r44511, r44512, r44513, r44514, r44515, r44516, r44517, r44518, r44519, r44520, r44521;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44511);
        mpfr_init_set_str(r44512, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44513, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r44514);
        mpfr_init(r44515);
        mpfr_init(r44516);
        mpfr_init(r44517);
        mpfr_init(r44518);
        mpfr_init(r44519);
        mpfr_init(r44520);
        mpfr_init(r44521);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r44511, x, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r44514, y, MPFR_RNDN);
        mpfr_div(r44515, r44513, r44514, MPFR_RNDN);
        mpfr_set_d(r44516, z, MPFR_RNDN);
        mpfr_exp(r44517, r44516, MPFR_RNDN);
        mpfr_mul(r44518, r44515, r44517, MPFR_RNDN);
        mpfr_sub(r44519, r44518, r44511, MPFR_RNDN);
        mpfr_div(r44520, r44512, r44519, MPFR_RNDN);
        mpfr_add(r44521, r44511, r44520, MPFR_RNDN);
        return mpfr_get_d(r44521, MPFR_RNDN);
}

