#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 r5083 = x;
        float r5084 = y;
        float r5085 = r5083 * r5084;
        float r5086 = z;
        float r5087 = r5085 + r5086;
        float r5088 = r5087 * r5084;
        float r5089 = 27464.7644705;
        float r5090 = r5088 + r5089;
        float r5091 = r5090 * r5084;
        float r5092 = 230661.510616;
        float r5093 = r5091 + r5092;
        float r5094 = r5093 * r5084;
        float r5095 = t;
        float r5096 = r5094 + r5095;
        float r5097 = a;
        float r5098 = r5084 + r5097;
        float r5099 = r5098 * r5084;
        float r5100 = b;
        float r5101 = r5099 + r5100;
        float r5102 = r5101 * r5084;
        float r5103 = c;
        float r5104 = r5102 + r5103;
        float r5105 = r5104 * r5084;
        float r5106 = i;
        float r5107 = r5105 + r5106;
        float r5108 = r5096 / r5107;
        return r5108;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r5109 = x;
        double r5110 = y;
        double r5111 = r5109 * r5110;
        double r5112 = z;
        double r5113 = r5111 + r5112;
        double r5114 = r5113 * r5110;
        double r5115 = 27464.7644705;
        double r5116 = r5114 + r5115;
        double r5117 = r5116 * r5110;
        double r5118 = 230661.510616;
        double r5119 = r5117 + r5118;
        double r5120 = r5119 * r5110;
        double r5121 = t;
        double r5122 = r5120 + r5121;
        double r5123 = a;
        double r5124 = r5110 + r5123;
        double r5125 = r5124 * r5110;
        double r5126 = b;
        double r5127 = r5125 + r5126;
        double r5128 = r5127 * r5110;
        double r5129 = c;
        double r5130 = r5128 + r5129;
        double r5131 = r5130 * r5110;
        double r5132 = i;
        double r5133 = r5131 + r5132;
        double r5134 = r5122 / r5133;
        return r5134;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r5135 = x;
        float r5136 = y;
        float r5137 = r5135 * r5136;
        float r5138 = z;
        float r5139 = r5137 + r5138;
        float r5140 = r5139 * r5136;
        float r5141 = 27464.7644705;
        float r5142 = r5140 + r5141;
        float r5143 = r5142 * r5136;
        float r5144 = 230661.510616;
        float r5145 = r5143 + r5144;
        float r5146 = r5145 * r5136;
        float r5147 = t;
        float r5148 = r5146 + r5147;
        float r5149 = 1;
        float r5150 = a;
        float r5151 = r5136 + r5150;
        float r5152 = r5151 * r5136;
        float r5153 = b;
        float r5154 = r5152 + r5153;
        float r5155 = r5154 * r5136;
        float r5156 = c;
        float r5157 = r5155 + r5156;
        float r5158 = r5157 * r5136;
        float r5159 = i;
        float r5160 = r5158 + r5159;
        float r5161 = r5149 / r5160;
        float r5162 = r5148 * r5161;
        return r5162;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r5163 = x;
        double r5164 = y;
        double r5165 = r5163 * r5164;
        double r5166 = z;
        double r5167 = r5165 + r5166;
        double r5168 = r5167 * r5164;
        double r5169 = 27464.7644705;
        double r5170 = r5168 + r5169;
        double r5171 = r5170 * r5164;
        double r5172 = 230661.510616;
        double r5173 = r5171 + r5172;
        double r5174 = r5173 * r5164;
        double r5175 = t;
        double r5176 = r5174 + r5175;
        double r5177 = 1;
        double r5178 = a;
        double r5179 = r5164 + r5178;
        double r5180 = r5179 * r5164;
        double r5181 = b;
        double r5182 = r5180 + r5181;
        double r5183 = r5182 * r5164;
        double r5184 = c;
        double r5185 = r5183 + r5184;
        double r5186 = r5185 * r5164;
        double r5187 = i;
        double r5188 = r5186 + r5187;
        double r5189 = r5177 / r5188;
        double r5190 = r5176 * r5189;
        return r5190;
}

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 r5191, r5192, r5193, r5194, r5195, r5196, r5197, r5198, r5199, r5200, r5201, r5202, r5203, r5204, r5205, r5206, r5207, r5208, r5209, r5210, r5211, r5212, r5213, r5214, r5215, r5216;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r5191);
        mpfr_init(r5192);
        mpfr_init(r5193);
        mpfr_init(r5194);
        mpfr_init(r5195);
        mpfr_init(r5196);
        mpfr_init_set_str(r5197, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r5198);
        mpfr_init(r5199);
        mpfr_init_set_str(r5200, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r5201);
        mpfr_init(r5202);
        mpfr_init(r5203);
        mpfr_init(r5204);
        mpfr_init(r5205);
        mpfr_init(r5206);
        mpfr_init(r5207);
        mpfr_init(r5208);
        mpfr_init(r5209);
        mpfr_init(r5210);
        mpfr_init(r5211);
        mpfr_init(r5212);
        mpfr_init(r5213);
        mpfr_init(r5214);
        mpfr_init(r5215);
        mpfr_init(r5216);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r5191, x, MPFR_RNDN);
        mpfr_set_d(r5192, y, MPFR_RNDN);
        mpfr_mul(r5193, r5191, r5192, MPFR_RNDN);
        mpfr_set_d(r5194, z, MPFR_RNDN);
        mpfr_add(r5195, r5193, r5194, MPFR_RNDN);
        mpfr_mul(r5196, r5195, r5192, MPFR_RNDN);
        ;
        mpfr_add(r5198, r5196, r5197, MPFR_RNDN);
        mpfr_mul(r5199, r5198, r5192, MPFR_RNDN);
        ;
        mpfr_add(r5201, r5199, r5200, MPFR_RNDN);
        mpfr_mul(r5202, r5201, r5192, MPFR_RNDN);
        mpfr_set_d(r5203, t, MPFR_RNDN);
        mpfr_add(r5204, r5202, r5203, MPFR_RNDN);
        mpfr_set_d(r5205, a, MPFR_RNDN);
        mpfr_add(r5206, r5192, r5205, MPFR_RNDN);
        mpfr_mul(r5207, r5206, r5192, MPFR_RNDN);
        mpfr_set_d(r5208, b, MPFR_RNDN);
        mpfr_add(r5209, r5207, r5208, MPFR_RNDN);
        mpfr_mul(r5210, r5209, r5192, MPFR_RNDN);
        mpfr_set_d(r5211, c, MPFR_RNDN);
        mpfr_add(r5212, r5210, r5211, MPFR_RNDN);
        mpfr_mul(r5213, r5212, r5192, MPFR_RNDN);
        mpfr_set_d(r5214, i, MPFR_RNDN);
        mpfr_add(r5215, r5213, r5214, MPFR_RNDN);
        mpfr_div(r5216, r5204, r5215, MPFR_RNDN);
        return mpfr_get_d(r5216, MPFR_RNDN);
}

static mpfr_t r5217, r5218, r5219, r5220, r5221, r5222, r5223, r5224, r5225, r5226, r5227, r5228, r5229, r5230, r5231, r5232, r5233, r5234, r5235, r5236, r5237, r5238, r5239, r5240, r5241, r5242, r5243, r5244;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r5217);
        mpfr_init(r5218);
        mpfr_init(r5219);
        mpfr_init(r5220);
        mpfr_init(r5221);
        mpfr_init(r5222);
        mpfr_init_set_str(r5223, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r5224);
        mpfr_init(r5225);
        mpfr_init_set_str(r5226, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r5227);
        mpfr_init(r5228);
        mpfr_init(r5229);
        mpfr_init(r5230);
        mpfr_init_set_str(r5231, "1", 10, MPFR_RNDN);
        mpfr_init(r5232);
        mpfr_init(r5233);
        mpfr_init(r5234);
        mpfr_init(r5235);
        mpfr_init(r5236);
        mpfr_init(r5237);
        mpfr_init(r5238);
        mpfr_init(r5239);
        mpfr_init(r5240);
        mpfr_init(r5241);
        mpfr_init(r5242);
        mpfr_init(r5243);
        mpfr_init(r5244);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r5217, x, MPFR_RNDN);
        mpfr_set_d(r5218, y, MPFR_RNDN);
        mpfr_mul(r5219, r5217, r5218, MPFR_RNDN);
        mpfr_set_d(r5220, z, MPFR_RNDN);
        mpfr_add(r5221, r5219, r5220, MPFR_RNDN);
        mpfr_mul(r5222, r5221, r5218, MPFR_RNDN);
        ;
        mpfr_add(r5224, r5222, r5223, MPFR_RNDN);
        mpfr_mul(r5225, r5224, r5218, MPFR_RNDN);
        ;
        mpfr_add(r5227, r5225, r5226, MPFR_RNDN);
        mpfr_mul(r5228, r5227, r5218, MPFR_RNDN);
        mpfr_set_d(r5229, t, MPFR_RNDN);
        mpfr_add(r5230, r5228, r5229, MPFR_RNDN);
        ;
        mpfr_set_d(r5232, a, MPFR_RNDN);
        mpfr_add(r5233, r5218, r5232, MPFR_RNDN);
        mpfr_mul(r5234, r5233, r5218, MPFR_RNDN);
        mpfr_set_d(r5235, b, MPFR_RNDN);
        mpfr_add(r5236, r5234, r5235, MPFR_RNDN);
        mpfr_mul(r5237, r5236, r5218, MPFR_RNDN);
        mpfr_set_d(r5238, c, MPFR_RNDN);
        mpfr_add(r5239, r5237, r5238, MPFR_RNDN);
        mpfr_mul(r5240, r5239, r5218, MPFR_RNDN);
        mpfr_set_d(r5241, i, MPFR_RNDN);
        mpfr_add(r5242, r5240, r5241, MPFR_RNDN);
        mpfr_div(r5243, r5231, r5242, MPFR_RNDN);
        mpfr_mul(r5244, r5230, r5243, MPFR_RNDN);
        return mpfr_get_d(r5244, MPFR_RNDN);
}

static mpfr_t r5245, r5246, r5247, r5248, r5249, r5250, r5251, r5252, r5253, r5254, r5255, r5256, r5257, r5258, r5259, r5260, r5261, r5262, r5263, r5264, r5265, r5266, r5267, r5268, r5269, r5270, r5271, r5272;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r5245);
        mpfr_init(r5246);
        mpfr_init(r5247);
        mpfr_init(r5248);
        mpfr_init(r5249);
        mpfr_init(r5250);
        mpfr_init_set_str(r5251, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r5252);
        mpfr_init(r5253);
        mpfr_init_set_str(r5254, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r5255);
        mpfr_init(r5256);
        mpfr_init(r5257);
        mpfr_init(r5258);
        mpfr_init_set_str(r5259, "1", 10, MPFR_RNDN);
        mpfr_init(r5260);
        mpfr_init(r5261);
        mpfr_init(r5262);
        mpfr_init(r5263);
        mpfr_init(r5264);
        mpfr_init(r5265);
        mpfr_init(r5266);
        mpfr_init(r5267);
        mpfr_init(r5268);
        mpfr_init(r5269);
        mpfr_init(r5270);
        mpfr_init(r5271);
        mpfr_init(r5272);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r5245, x, MPFR_RNDN);
        mpfr_set_d(r5246, y, MPFR_RNDN);
        mpfr_mul(r5247, r5245, r5246, MPFR_RNDN);
        mpfr_set_d(r5248, z, MPFR_RNDN);
        mpfr_add(r5249, r5247, r5248, MPFR_RNDN);
        mpfr_mul(r5250, r5249, r5246, MPFR_RNDN);
        ;
        mpfr_add(r5252, r5250, r5251, MPFR_RNDN);
        mpfr_mul(r5253, r5252, r5246, MPFR_RNDN);
        ;
        mpfr_add(r5255, r5253, r5254, MPFR_RNDN);
        mpfr_mul(r5256, r5255, r5246, MPFR_RNDN);
        mpfr_set_d(r5257, t, MPFR_RNDN);
        mpfr_add(r5258, r5256, r5257, MPFR_RNDN);
        ;
        mpfr_set_d(r5260, a, MPFR_RNDN);
        mpfr_add(r5261, r5246, r5260, MPFR_RNDN);
        mpfr_mul(r5262, r5261, r5246, MPFR_RNDN);
        mpfr_set_d(r5263, b, MPFR_RNDN);
        mpfr_add(r5264, r5262, r5263, MPFR_RNDN);
        mpfr_mul(r5265, r5264, r5246, MPFR_RNDN);
        mpfr_set_d(r5266, c, MPFR_RNDN);
        mpfr_add(r5267, r5265, r5266, MPFR_RNDN);
        mpfr_mul(r5268, r5267, r5246, MPFR_RNDN);
        mpfr_set_d(r5269, i, MPFR_RNDN);
        mpfr_add(r5270, r5268, r5269, MPFR_RNDN);
        mpfr_div(r5271, r5259, r5270, MPFR_RNDN);
        mpfr_mul(r5272, r5258, r5271, MPFR_RNDN);
        return mpfr_get_d(r5272, MPFR_RNDN);
}

