#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 r41321 = x;
        float r41322 = y;
        float r41323 = 1.1283791670955126f;
        float r41324 = z;
        float r41325 = exp(r41324);
        float r41326 = r41323 * r41325;
        float r41327 = r41321 * r41322;
        float r41328 = r41326 - r41327;
        float r41329 = r41322 / r41328;
        float r41330 = r41321 + r41329;
        return r41330;
}

double f_id(double x, double y, double z) {
        double r41331 = x;
        double r41332 = y;
        double r41333 = 1.1283791670955126;
        double r41334 = z;
        double r41335 = exp(r41334);
        double r41336 = r41333 * r41335;
        double r41337 = r41331 * r41332;
        double r41338 = r41336 - r41337;
        double r41339 = r41332 / r41338;
        double r41340 = r41331 + r41339;
        return r41340;
}


double f_of(float x, float y, float z) {
        float r41341 = z;
        float r41342 = -14827841.043240983f;
        bool r41343 = r41341 <= r41342;
        float r41344 = x;
        float r41345 = 1.0f;
        float r41346 = r41345 / r41344;
        float r41347 = r41344 - r41346;
        float r41348 = y;
        float r41349 = 1.1283791670955126f;
        float r41350 = exp(r41341);
        float r41351 = r41349 * r41350;
        float r41352 = r41344 * r41348;
        float r41353 = r41351 - r41352;
        float r41354 = r41348 / r41353;
        float r41355 = r41344 + r41354;
        float r41356 = r41343 ? r41347 : r41355;
        return r41356;
}

double f_od(double x, double y, double z) {
        double r41357 = z;
        double r41358 = -14827841.043240983;
        bool r41359 = r41357 <= r41358;
        double r41360 = x;
        double r41361 = 1.0;
        double r41362 = r41361 / r41360;
        double r41363 = r41360 - r41362;
        double r41364 = y;
        double r41365 = 1.1283791670955126;
        double r41366 = exp(r41357);
        double r41367 = r41365 * r41366;
        double r41368 = r41360 * r41364;
        double r41369 = r41367 - r41368;
        double r41370 = r41364 / r41369;
        double r41371 = r41360 + r41370;
        double r41372 = r41359 ? r41363 : r41371;
        return r41372;
}

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 r41373, r41374, r41375, r41376, r41377, r41378, r41379, r41380, r41381, r41382;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r41373);
        mpfr_init(r41374);
        mpfr_init_set_str(r41375, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r41376);
        mpfr_init(r41377);
        mpfr_init(r41378);
        mpfr_init(r41379);
        mpfr_init(r41380);
        mpfr_init(r41381);
        mpfr_init(r41382);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r41373, x, MPFR_RNDN);
        mpfr_set_d(r41374, y, MPFR_RNDN);
        ;
        mpfr_set_d(r41376, z, MPFR_RNDN);
        mpfr_exp(r41377, r41376, MPFR_RNDN);
        mpfr_mul(r41378, r41375, r41377, MPFR_RNDN);
        mpfr_mul(r41379, r41373, r41374, MPFR_RNDN);
        mpfr_sub(r41380, r41378, r41379, MPFR_RNDN);
        mpfr_div(r41381, r41374, r41380, MPFR_RNDN);
        mpfr_add(r41382, r41373, r41381, MPFR_RNDN);
        return mpfr_get_d(r41382, MPFR_RNDN);
}

static mpfr_t r41383, r41384, r41385, r41386, r41387, r41388, r41389, r41390, r41391, r41392, r41393, r41394, r41395, r41396, r41397, r41398;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r41383);
        mpfr_init_set_str(r41384, "-14827841.043240983", 10, MPFR_RNDN);
        mpfr_init(r41385);
        mpfr_init(r41386);
        mpfr_init_set_str(r41387, "1", 10, MPFR_RNDN);
        mpfr_init(r41388);
        mpfr_init(r41389);
        mpfr_init(r41390);
        mpfr_init_set_str(r41391, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r41392);
        mpfr_init(r41393);
        mpfr_init(r41394);
        mpfr_init(r41395);
        mpfr_init(r41396);
        mpfr_init(r41397);
        mpfr_init(r41398);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r41383, z, MPFR_RNDN);
        ;
        mpfr_set_si(r41385, mpfr_cmp(r41383, r41384) <= 0, MPFR_RNDN);
        mpfr_set_d(r41386, x, MPFR_RNDN);
        ;
        mpfr_div(r41388, r41387, r41386, MPFR_RNDN);
        mpfr_sub(r41389, r41386, r41388, MPFR_RNDN);
        mpfr_set_d(r41390, y, MPFR_RNDN);
        ;
        mpfr_exp(r41392, r41383, MPFR_RNDN);
        mpfr_mul(r41393, r41391, r41392, MPFR_RNDN);
        mpfr_mul(r41394, r41386, r41390, MPFR_RNDN);
        mpfr_sub(r41395, r41393, r41394, MPFR_RNDN);
        mpfr_div(r41396, r41390, r41395, MPFR_RNDN);
        mpfr_add(r41397, r41386, r41396, MPFR_RNDN);
        if (mpfr_get_si(r41385, MPFR_RNDN)) { mpfr_set(r41398, r41389, MPFR_RNDN); } else { mpfr_set(r41398, r41397, MPFR_RNDN); };
        return mpfr_get_d(r41398, MPFR_RNDN);
}

static mpfr_t r41399, r41400, r41401, r41402, r41403, r41404, r41405, r41406, r41407, r41408, r41409, r41410, r41411, r41412, r41413, r41414;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r41399);
        mpfr_init_set_str(r41400, "-14827841.043240983", 10, MPFR_RNDN);
        mpfr_init(r41401);
        mpfr_init(r41402);
        mpfr_init_set_str(r41403, "1", 10, MPFR_RNDN);
        mpfr_init(r41404);
        mpfr_init(r41405);
        mpfr_init(r41406);
        mpfr_init_set_str(r41407, "1.1283791670955126", 10, MPFR_RNDN);
        mpfr_init(r41408);
        mpfr_init(r41409);
        mpfr_init(r41410);
        mpfr_init(r41411);
        mpfr_init(r41412);
        mpfr_init(r41413);
        mpfr_init(r41414);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r41399, z, MPFR_RNDN);
        ;
        mpfr_set_si(r41401, mpfr_cmp(r41399, r41400) <= 0, MPFR_RNDN);
        mpfr_set_d(r41402, x, MPFR_RNDN);
        ;
        mpfr_div(r41404, r41403, r41402, MPFR_RNDN);
        mpfr_sub(r41405, r41402, r41404, MPFR_RNDN);
        mpfr_set_d(r41406, y, MPFR_RNDN);
        ;
        mpfr_exp(r41408, r41399, MPFR_RNDN);
        mpfr_mul(r41409, r41407, r41408, MPFR_RNDN);
        mpfr_mul(r41410, r41402, r41406, MPFR_RNDN);
        mpfr_sub(r41411, r41409, r41410, MPFR_RNDN);
        mpfr_div(r41412, r41406, r41411, MPFR_RNDN);
        mpfr_add(r41413, r41402, r41412, MPFR_RNDN);
        if (mpfr_get_si(r41401, MPFR_RNDN)) { mpfr_set(r41414, r41405, MPFR_RNDN); } else { mpfr_set(r41414, r41413, MPFR_RNDN); };
        return mpfr_get_d(r41414, MPFR_RNDN);
}

