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

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

double f_if(float x, float y, float z, float t) {
        float r40991 = x;
        float r40992 = y;
        float r40993 = z;
        float r40994 = r40992 / r40993;
        float r40995 = t;
        float r40996 = 1.0f;
        float r40997 = r40996 - r40993;
        float r40998 = r40995 / r40997;
        float r40999 = r40994 - r40998;
        float r41000 = r40991 * r40999;
        return r41000;
}

double f_id(double x, double y, double z, double t) {
        double r41001 = x;
        double r41002 = y;
        double r41003 = z;
        double r41004 = r41002 / r41003;
        double r41005 = t;
        double r41006 = 1.0;
        double r41007 = r41006 - r41003;
        double r41008 = r41005 / r41007;
        double r41009 = r41004 - r41008;
        double r41010 = r41001 * r41009;
        return r41010;
}


double f_of(float x, float y, float z, float t) {
        float r41011 = z;
        float r41012 = -3.419654050674021e+32f;
        bool r41013 = r41011 <= r41012;
        float r41014 = x;
        float r41015 = y;
        float r41016 = r41015 / r41011;
        float r41017 = t;
        float r41018 = 1.0f;
        float r41019 = r41018 - r41011;
        float r41020 = r41017 / r41019;
        float r41021 = r41016 - r41020;
        float r41022 = r41014 * r41021;
        float r41023 = 5.012870678088807e-64f;
        bool r41024 = r41011 <= r41023;
        float r41025 = 1.0f;
        float r41026 = r41025 / r41019;
        float r41027 = r41017 * r41026;
        float r41028 = r41016 - r41027;
        float r41029 = r41014 * r41028;
        float r41030 = r41024 ? r41029 : r41022;
        float r41031 = r41013 ? r41022 : r41030;
        return r41031;
}

double f_od(double x, double y, double z, double t) {
        double r41032 = z;
        double r41033 = -3.419654050674021e+32;
        bool r41034 = r41032 <= r41033;
        double r41035 = x;
        double r41036 = y;
        double r41037 = r41036 / r41032;
        double r41038 = t;
        double r41039 = 1.0;
        double r41040 = r41039 - r41032;
        double r41041 = r41038 / r41040;
        double r41042 = r41037 - r41041;
        double r41043 = r41035 * r41042;
        double r41044 = 5.012870678088807e-64;
        bool r41045 = r41032 <= r41044;
        double r41046 = 1.0;
        double r41047 = r41046 / r41040;
        double r41048 = r41038 * r41047;
        double r41049 = r41037 - r41048;
        double r41050 = r41035 * r41049;
        double r41051 = r41045 ? r41050 : r41043;
        double r41052 = r41034 ? r41043 : r41051;
        return r41052;
}

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 r41053, r41054, r41055, r41056, r41057, r41058, r41059, r41060, r41061, r41062;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r41053);
        mpfr_init(r41054);
        mpfr_init(r41055);
        mpfr_init(r41056);
        mpfr_init(r41057);
        mpfr_init_set_str(r41058, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41059);
        mpfr_init(r41060);
        mpfr_init(r41061);
        mpfr_init(r41062);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r41053, x, MPFR_RNDN);
        mpfr_set_d(r41054, y, MPFR_RNDN);
        mpfr_set_d(r41055, z, MPFR_RNDN);
        mpfr_div(r41056, r41054, r41055, MPFR_RNDN);
        mpfr_set_d(r41057, t, MPFR_RNDN);
        ;
        mpfr_sub(r41059, r41058, r41055, MPFR_RNDN);
        mpfr_div(r41060, r41057, r41059, MPFR_RNDN);
        mpfr_sub(r41061, r41056, r41060, MPFR_RNDN);
        mpfr_mul(r41062, r41053, r41061, MPFR_RNDN);
        return mpfr_get_d(r41062, MPFR_RNDN);
}

static mpfr_t r41063, r41064, r41065, r41066, r41067, r41068, r41069, r41070, r41071, r41072, r41073, r41074, r41075, r41076, r41077, r41078, r41079, r41080, r41081, r41082, r41083;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r41063);
        mpfr_init_set_str(r41064, "-3.419654050674021e+32", 10, MPFR_RNDN);
        mpfr_init(r41065);
        mpfr_init(r41066);
        mpfr_init(r41067);
        mpfr_init(r41068);
        mpfr_init(r41069);
        mpfr_init_set_str(r41070, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41071);
        mpfr_init(r41072);
        mpfr_init(r41073);
        mpfr_init(r41074);
        mpfr_init_set_str(r41075, "5.012870678088807e-64", 10, MPFR_RNDN);
        mpfr_init(r41076);
        mpfr_init_set_str(r41077, "1", 10, MPFR_RNDN);
        mpfr_init(r41078);
        mpfr_init(r41079);
        mpfr_init(r41080);
        mpfr_init(r41081);
        mpfr_init(r41082);
        mpfr_init(r41083);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r41063, z, MPFR_RNDN);
        ;
        mpfr_set_si(r41065, mpfr_cmp(r41063, r41064) <= 0, MPFR_RNDN);
        mpfr_set_d(r41066, x, MPFR_RNDN);
        mpfr_set_d(r41067, y, MPFR_RNDN);
        mpfr_div(r41068, r41067, r41063, MPFR_RNDN);
        mpfr_set_d(r41069, t, MPFR_RNDN);
        ;
        mpfr_sub(r41071, r41070, r41063, MPFR_RNDN);
        mpfr_div(r41072, r41069, r41071, MPFR_RNDN);
        mpfr_sub(r41073, r41068, r41072, MPFR_RNDN);
        mpfr_mul(r41074, r41066, r41073, MPFR_RNDN);
        ;
        mpfr_set_si(r41076, mpfr_cmp(r41063, r41075) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r41078, r41077, r41071, MPFR_RNDN);
        mpfr_mul(r41079, r41069, r41078, MPFR_RNDN);
        mpfr_sub(r41080, r41068, r41079, MPFR_RNDN);
        mpfr_mul(r41081, r41066, r41080, MPFR_RNDN);
        if (mpfr_get_si(r41076, MPFR_RNDN)) { mpfr_set(r41082, r41081, MPFR_RNDN); } else { mpfr_set(r41082, r41074, MPFR_RNDN); };
        if (mpfr_get_si(r41065, MPFR_RNDN)) { mpfr_set(r41083, r41074, MPFR_RNDN); } else { mpfr_set(r41083, r41082, MPFR_RNDN); };
        return mpfr_get_d(r41083, MPFR_RNDN);
}

static mpfr_t r41084, r41085, r41086, r41087, r41088, r41089, r41090, r41091, r41092, r41093, r41094, r41095, r41096, r41097, r41098, r41099, r41100, r41101, r41102, r41103, r41104;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r41084);
        mpfr_init_set_str(r41085, "-3.419654050674021e+32", 10, MPFR_RNDN);
        mpfr_init(r41086);
        mpfr_init(r41087);
        mpfr_init(r41088);
        mpfr_init(r41089);
        mpfr_init(r41090);
        mpfr_init_set_str(r41091, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41092);
        mpfr_init(r41093);
        mpfr_init(r41094);
        mpfr_init(r41095);
        mpfr_init_set_str(r41096, "5.012870678088807e-64", 10, MPFR_RNDN);
        mpfr_init(r41097);
        mpfr_init_set_str(r41098, "1", 10, MPFR_RNDN);
        mpfr_init(r41099);
        mpfr_init(r41100);
        mpfr_init(r41101);
        mpfr_init(r41102);
        mpfr_init(r41103);
        mpfr_init(r41104);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r41084, z, MPFR_RNDN);
        ;
        mpfr_set_si(r41086, mpfr_cmp(r41084, r41085) <= 0, MPFR_RNDN);
        mpfr_set_d(r41087, x, MPFR_RNDN);
        mpfr_set_d(r41088, y, MPFR_RNDN);
        mpfr_div(r41089, r41088, r41084, MPFR_RNDN);
        mpfr_set_d(r41090, t, MPFR_RNDN);
        ;
        mpfr_sub(r41092, r41091, r41084, MPFR_RNDN);
        mpfr_div(r41093, r41090, r41092, MPFR_RNDN);
        mpfr_sub(r41094, r41089, r41093, MPFR_RNDN);
        mpfr_mul(r41095, r41087, r41094, MPFR_RNDN);
        ;
        mpfr_set_si(r41097, mpfr_cmp(r41084, r41096) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r41099, r41098, r41092, MPFR_RNDN);
        mpfr_mul(r41100, r41090, r41099, MPFR_RNDN);
        mpfr_sub(r41101, r41089, r41100, MPFR_RNDN);
        mpfr_mul(r41102, r41087, r41101, MPFR_RNDN);
        if (mpfr_get_si(r41097, MPFR_RNDN)) { mpfr_set(r41103, r41102, MPFR_RNDN); } else { mpfr_set(r41103, r41095, MPFR_RNDN); };
        if (mpfr_get_si(r41086, MPFR_RNDN)) { mpfr_set(r41104, r41095, MPFR_RNDN); } else { mpfr_set(r41104, r41103, MPFR_RNDN); };
        return mpfr_get_d(r41104, MPFR_RNDN);
}

