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

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

double f_if(float x, float y, float z, float t) {
        float r44862 = x;
        float r44863 = y;
        float r44864 = log(r44863);
        float r44865 = r44862 * r44864;
        float r44866 = r44865 - r44863;
        float r44867 = z;
        float r44868 = r44866 - r44867;
        float r44869 = t;
        float r44870 = log(r44869);
        float r44871 = r44868 + r44870;
        return r44871;
}

double f_id(double x, double y, double z, double t) {
        double r44872 = x;
        double r44873 = y;
        double r44874 = log(r44873);
        double r44875 = r44872 * r44874;
        double r44876 = r44875 - r44873;
        double r44877 = z;
        double r44878 = r44876 - r44877;
        double r44879 = t;
        double r44880 = log(r44879);
        double r44881 = r44878 + r44880;
        return r44881;
}


double f_of(float x, float y, float z, float t) {
        float r44882 = x;
        float r44883 = y;
        float r44884 = log(r44883);
        float r44885 = r44882 * r44884;
        float r44886 = r44885 - r44883;
        float r44887 = z;
        float r44888 = r44886 - r44887;
        float r44889 = t;
        float r44890 = log(r44889);
        float r44891 = r44888 + r44890;
        return r44891;
}

double f_od(double x, double y, double z, double t) {
        double r44892 = x;
        double r44893 = y;
        double r44894 = log(r44893);
        double r44895 = r44892 * r44894;
        double r44896 = r44895 - r44893;
        double r44897 = z;
        double r44898 = r44896 - r44897;
        double r44899 = t;
        double r44900 = log(r44899);
        double r44901 = r44898 + 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(r44904);
        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, double t) {
        mpfr_set_d(r44902, x, MPFR_RNDN);
        mpfr_set_d(r44903, y, MPFR_RNDN);
        mpfr_log(r44904, r44903, MPFR_RNDN);
        mpfr_mul(r44905, r44902, r44904, MPFR_RNDN);
        mpfr_sub(r44906, r44905, r44903, MPFR_RNDN);
        mpfr_set_d(r44907, z, MPFR_RNDN);
        mpfr_sub(r44908, r44906, r44907, MPFR_RNDN);
        mpfr_set_d(r44909, t, MPFR_RNDN);
        mpfr_log(r44910, r44909, MPFR_RNDN);
        mpfr_add(r44911, r44908, r44910, MPFR_RNDN);
        return mpfr_get_d(r44911, MPFR_RNDN);
}

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44912);
        mpfr_init(r44913);
        mpfr_init(r44914);
        mpfr_init(r44915);
        mpfr_init(r44916);
        mpfr_init(r44917);
        mpfr_init(r44918);
        mpfr_init(r44919);
        mpfr_init(r44920);
        mpfr_init(r44921);
}

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

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

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44922);
        mpfr_init(r44923);
        mpfr_init(r44924);
        mpfr_init(r44925);
        mpfr_init(r44926);
        mpfr_init(r44927);
        mpfr_init(r44928);
        mpfr_init(r44929);
        mpfr_init(r44930);
        mpfr_init(r44931);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r44922, x, MPFR_RNDN);
        mpfr_set_d(r44923, y, MPFR_RNDN);
        mpfr_log(r44924, r44923, MPFR_RNDN);
        mpfr_mul(r44925, r44922, r44924, MPFR_RNDN);
        mpfr_sub(r44926, r44925, r44923, MPFR_RNDN);
        mpfr_set_d(r44927, z, MPFR_RNDN);
        mpfr_sub(r44928, r44926, r44927, MPFR_RNDN);
        mpfr_set_d(r44929, t, MPFR_RNDN);
        mpfr_log(r44930, r44929, MPFR_RNDN);
        mpfr_add(r44931, r44928, r44930, MPFR_RNDN);
        return mpfr_get_d(r44931, MPFR_RNDN);
}

