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

char *name = "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2";

double f_if(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r5808 = x;
        float r5809 = y;
        float r5810 = r5808 * r5809;
        float r5811 = z;
        float r5812 = r5810 + r5811;
        float r5813 = r5812 * r5809;
        float r5814 = 27464.7644705;
        float r5815 = r5813 + r5814;
        float r5816 = r5815 * r5809;
        float r5817 = 230661.510616;
        float r5818 = r5816 + r5817;
        float r5819 = r5818 * r5809;
        float r5820 = t;
        float r5821 = r5819 + r5820;
        float r5822 = a;
        float r5823 = r5809 + r5822;
        float r5824 = r5823 * r5809;
        float r5825 = b;
        float r5826 = r5824 + r5825;
        float r5827 = r5826 * r5809;
        float r5828 = c;
        float r5829 = r5827 + r5828;
        float r5830 = r5829 * r5809;
        float r5831 = i;
        float r5832 = r5830 + r5831;
        float r5833 = r5821 / r5832;
        return r5833;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r5834 = x;
        double r5835 = y;
        double r5836 = r5834 * r5835;
        double r5837 = z;
        double r5838 = r5836 + r5837;
        double r5839 = r5838 * r5835;
        double r5840 = 27464.7644705;
        double r5841 = r5839 + r5840;
        double r5842 = r5841 * r5835;
        double r5843 = 230661.510616;
        double r5844 = r5842 + r5843;
        double r5845 = r5844 * r5835;
        double r5846 = t;
        double r5847 = r5845 + r5846;
        double r5848 = a;
        double r5849 = r5835 + r5848;
        double r5850 = r5849 * r5835;
        double r5851 = b;
        double r5852 = r5850 + r5851;
        double r5853 = r5852 * r5835;
        double r5854 = c;
        double r5855 = r5853 + r5854;
        double r5856 = r5855 * r5835;
        double r5857 = i;
        double r5858 = r5856 + r5857;
        double r5859 = r5847 / r5858;
        return r5859;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r5860 = x;
        float r5861 = y;
        float r5862 = r5860 * r5861;
        float r5863 = z;
        float r5864 = r5862 + r5863;
        float r5865 = r5864 * r5861;
        float r5866 = 27464.7644705;
        float r5867 = r5865 + r5866;
        float r5868 = r5867 * r5861;
        float r5869 = 230661.510616;
        float r5870 = r5868 + r5869;
        float r5871 = r5870 * r5861;
        float r5872 = t;
        float r5873 = r5871 + r5872;
        float r5874 = 1;
        float r5875 = a;
        float r5876 = r5861 + r5875;
        float r5877 = r5876 * r5861;
        float r5878 = b;
        float r5879 = r5877 + r5878;
        float r5880 = r5879 * r5861;
        float r5881 = c;
        float r5882 = r5880 + r5881;
        float r5883 = r5882 * r5861;
        float r5884 = i;
        float r5885 = r5883 + r5884;
        float r5886 = r5874 / r5885;
        float r5887 = r5873 * r5886;
        return r5887;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r5888 = x;
        double r5889 = y;
        double r5890 = r5888 * r5889;
        double r5891 = z;
        double r5892 = r5890 + r5891;
        double r5893 = r5892 * r5889;
        double r5894 = 27464.7644705;
        double r5895 = r5893 + r5894;
        double r5896 = r5895 * r5889;
        double r5897 = 230661.510616;
        double r5898 = r5896 + r5897;
        double r5899 = r5898 * r5889;
        double r5900 = t;
        double r5901 = r5899 + r5900;
        double r5902 = 1;
        double r5903 = a;
        double r5904 = r5889 + r5903;
        double r5905 = r5904 * r5889;
        double r5906 = b;
        double r5907 = r5905 + r5906;
        double r5908 = r5907 * r5889;
        double r5909 = c;
        double r5910 = r5908 + r5909;
        double r5911 = r5910 * r5889;
        double r5912 = i;
        double r5913 = r5911 + r5912;
        double r5914 = r5902 / r5913;
        double r5915 = r5901 * r5914;
        return r5915;
}

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 r5916, r5917, r5918, r5919, r5920, r5921, r5922, r5923, r5924, r5925, r5926, r5927, r5928, r5929, r5930, r5931, r5932, r5933, r5934, r5935, r5936, r5937, r5938, r5939, r5940, r5941;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r5916);
        mpfr_init(r5917);
        mpfr_init(r5918);
        mpfr_init(r5919);
        mpfr_init(r5920);
        mpfr_init(r5921);
        mpfr_init_set_str(r5922, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r5923);
        mpfr_init(r5924);
        mpfr_init_set_str(r5925, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r5926);
        mpfr_init(r5927);
        mpfr_init(r5928);
        mpfr_init(r5929);
        mpfr_init(r5930);
        mpfr_init(r5931);
        mpfr_init(r5932);
        mpfr_init(r5933);
        mpfr_init(r5934);
        mpfr_init(r5935);
        mpfr_init(r5936);
        mpfr_init(r5937);
        mpfr_init(r5938);
        mpfr_init(r5939);
        mpfr_init(r5940);
        mpfr_init(r5941);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r5916, x, MPFR_RNDN);
        mpfr_set_d(r5917, y, MPFR_RNDN);
        mpfr_mul(r5918, r5916, r5917, MPFR_RNDN);
        mpfr_set_d(r5919, z, MPFR_RNDN);
        mpfr_add(r5920, r5918, r5919, MPFR_RNDN);
        mpfr_mul(r5921, r5920, r5917, MPFR_RNDN);
        ;
        mpfr_add(r5923, r5921, r5922, MPFR_RNDN);
        mpfr_mul(r5924, r5923, r5917, MPFR_RNDN);
        ;
        mpfr_add(r5926, r5924, r5925, MPFR_RNDN);
        mpfr_mul(r5927, r5926, r5917, MPFR_RNDN);
        mpfr_set_d(r5928, t, MPFR_RNDN);
        mpfr_add(r5929, r5927, r5928, MPFR_RNDN);
        mpfr_set_d(r5930, a, MPFR_RNDN);
        mpfr_add(r5931, r5917, r5930, MPFR_RNDN);
        mpfr_mul(r5932, r5931, r5917, MPFR_RNDN);
        mpfr_set_d(r5933, b, MPFR_RNDN);
        mpfr_add(r5934, r5932, r5933, MPFR_RNDN);
        mpfr_mul(r5935, r5934, r5917, MPFR_RNDN);
        mpfr_set_d(r5936, c, MPFR_RNDN);
        mpfr_add(r5937, r5935, r5936, MPFR_RNDN);
        mpfr_mul(r5938, r5937, r5917, MPFR_RNDN);
        mpfr_set_d(r5939, i, MPFR_RNDN);
        mpfr_add(r5940, r5938, r5939, MPFR_RNDN);
        mpfr_div(r5941, r5929, r5940, MPFR_RNDN);
        return mpfr_get_d(r5941, MPFR_RNDN);
}

static mpfr_t r5942, r5943, r5944, r5945, r5946, r5947, r5948, r5949, r5950, r5951, r5952, r5953, r5954, r5955, r5956, r5957, r5958, r5959, r5960, r5961, r5962, r5963, r5964, r5965, r5966, r5967, r5968, r5969;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r5942);
        mpfr_init(r5943);
        mpfr_init(r5944);
        mpfr_init(r5945);
        mpfr_init(r5946);
        mpfr_init(r5947);
        mpfr_init_set_str(r5948, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r5949);
        mpfr_init(r5950);
        mpfr_init_set_str(r5951, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r5952);
        mpfr_init(r5953);
        mpfr_init(r5954);
        mpfr_init(r5955);
        mpfr_init_set_str(r5956, "1", 10, MPFR_RNDN);
        mpfr_init(r5957);
        mpfr_init(r5958);
        mpfr_init(r5959);
        mpfr_init(r5960);
        mpfr_init(r5961);
        mpfr_init(r5962);
        mpfr_init(r5963);
        mpfr_init(r5964);
        mpfr_init(r5965);
        mpfr_init(r5966);
        mpfr_init(r5967);
        mpfr_init(r5968);
        mpfr_init(r5969);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r5942, x, MPFR_RNDN);
        mpfr_set_d(r5943, y, MPFR_RNDN);
        mpfr_mul(r5944, r5942, r5943, MPFR_RNDN);
        mpfr_set_d(r5945, z, MPFR_RNDN);
        mpfr_add(r5946, r5944, r5945, MPFR_RNDN);
        mpfr_mul(r5947, r5946, r5943, MPFR_RNDN);
        ;
        mpfr_add(r5949, r5947, r5948, MPFR_RNDN);
        mpfr_mul(r5950, r5949, r5943, MPFR_RNDN);
        ;
        mpfr_add(r5952, r5950, r5951, MPFR_RNDN);
        mpfr_mul(r5953, r5952, r5943, MPFR_RNDN);
        mpfr_set_d(r5954, t, MPFR_RNDN);
        mpfr_add(r5955, r5953, r5954, MPFR_RNDN);
        ;
        mpfr_set_d(r5957, a, MPFR_RNDN);
        mpfr_add(r5958, r5943, r5957, MPFR_RNDN);
        mpfr_mul(r5959, r5958, r5943, MPFR_RNDN);
        mpfr_set_d(r5960, b, MPFR_RNDN);
        mpfr_add(r5961, r5959, r5960, MPFR_RNDN);
        mpfr_mul(r5962, r5961, r5943, MPFR_RNDN);
        mpfr_set_d(r5963, c, MPFR_RNDN);
        mpfr_add(r5964, r5962, r5963, MPFR_RNDN);
        mpfr_mul(r5965, r5964, r5943, MPFR_RNDN);
        mpfr_set_d(r5966, i, MPFR_RNDN);
        mpfr_add(r5967, r5965, r5966, MPFR_RNDN);
        mpfr_div(r5968, r5956, r5967, MPFR_RNDN);
        mpfr_mul(r5969, r5955, r5968, MPFR_RNDN);
        return mpfr_get_d(r5969, MPFR_RNDN);
}

static mpfr_t r5970, r5971, r5972, r5973, r5974, r5975, r5976, r5977, r5978, r5979, r5980, r5981, r5982, r5983, r5984, r5985, r5986, r5987, r5988, r5989, r5990, r5991, r5992, r5993, r5994, r5995, r5996, r5997;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r5970);
        mpfr_init(r5971);
        mpfr_init(r5972);
        mpfr_init(r5973);
        mpfr_init(r5974);
        mpfr_init(r5975);
        mpfr_init_set_str(r5976, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r5977);
        mpfr_init(r5978);
        mpfr_init_set_str(r5979, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r5980);
        mpfr_init(r5981);
        mpfr_init(r5982);
        mpfr_init(r5983);
        mpfr_init_set_str(r5984, "1", 10, MPFR_RNDN);
        mpfr_init(r5985);
        mpfr_init(r5986);
        mpfr_init(r5987);
        mpfr_init(r5988);
        mpfr_init(r5989);
        mpfr_init(r5990);
        mpfr_init(r5991);
        mpfr_init(r5992);
        mpfr_init(r5993);
        mpfr_init(r5994);
        mpfr_init(r5995);
        mpfr_init(r5996);
        mpfr_init(r5997);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r5970, x, MPFR_RNDN);
        mpfr_set_d(r5971, y, MPFR_RNDN);
        mpfr_mul(r5972, r5970, r5971, MPFR_RNDN);
        mpfr_set_d(r5973, z, MPFR_RNDN);
        mpfr_add(r5974, r5972, r5973, MPFR_RNDN);
        mpfr_mul(r5975, r5974, r5971, MPFR_RNDN);
        ;
        mpfr_add(r5977, r5975, r5976, MPFR_RNDN);
        mpfr_mul(r5978, r5977, r5971, MPFR_RNDN);
        ;
        mpfr_add(r5980, r5978, r5979, MPFR_RNDN);
        mpfr_mul(r5981, r5980, r5971, MPFR_RNDN);
        mpfr_set_d(r5982, t, MPFR_RNDN);
        mpfr_add(r5983, r5981, r5982, MPFR_RNDN);
        ;
        mpfr_set_d(r5985, a, MPFR_RNDN);
        mpfr_add(r5986, r5971, r5985, MPFR_RNDN);
        mpfr_mul(r5987, r5986, r5971, MPFR_RNDN);
        mpfr_set_d(r5988, b, MPFR_RNDN);
        mpfr_add(r5989, r5987, r5988, MPFR_RNDN);
        mpfr_mul(r5990, r5989, r5971, MPFR_RNDN);
        mpfr_set_d(r5991, c, MPFR_RNDN);
        mpfr_add(r5992, r5990, r5991, MPFR_RNDN);
        mpfr_mul(r5993, r5992, r5971, MPFR_RNDN);
        mpfr_set_d(r5994, i, MPFR_RNDN);
        mpfr_add(r5995, r5993, r5994, MPFR_RNDN);
        mpfr_div(r5996, r5984, r5995, MPFR_RNDN);
        mpfr_mul(r5997, r5983, r5996, MPFR_RNDN);
        return mpfr_get_d(r5997, MPFR_RNDN);
}

