#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 r9128 = x;
        float r9129 = y;
        float r9130 = r9128 * r9129;
        float r9131 = z;
        float r9132 = r9130 + r9131;
        float r9133 = r9132 * r9129;
        float r9134 = 27464.7644705;
        float r9135 = r9133 + r9134;
        float r9136 = r9135 * r9129;
        float r9137 = 230661.510616;
        float r9138 = r9136 + r9137;
        float r9139 = r9138 * r9129;
        float r9140 = t;
        float r9141 = r9139 + r9140;
        float r9142 = a;
        float r9143 = r9129 + r9142;
        float r9144 = r9143 * r9129;
        float r9145 = b;
        float r9146 = r9144 + r9145;
        float r9147 = r9146 * r9129;
        float r9148 = c;
        float r9149 = r9147 + r9148;
        float r9150 = r9149 * r9129;
        float r9151 = i;
        float r9152 = r9150 + r9151;
        float r9153 = r9141 / r9152;
        return r9153;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r9154 = x;
        double r9155 = y;
        double r9156 = r9154 * r9155;
        double r9157 = z;
        double r9158 = r9156 + r9157;
        double r9159 = r9158 * r9155;
        double r9160 = 27464.7644705;
        double r9161 = r9159 + r9160;
        double r9162 = r9161 * r9155;
        double r9163 = 230661.510616;
        double r9164 = r9162 + r9163;
        double r9165 = r9164 * r9155;
        double r9166 = t;
        double r9167 = r9165 + r9166;
        double r9168 = a;
        double r9169 = r9155 + r9168;
        double r9170 = r9169 * r9155;
        double r9171 = b;
        double r9172 = r9170 + r9171;
        double r9173 = r9172 * r9155;
        double r9174 = c;
        double r9175 = r9173 + r9174;
        double r9176 = r9175 * r9155;
        double r9177 = i;
        double r9178 = r9176 + r9177;
        double r9179 = r9167 / r9178;
        return r9179;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r9180 = y;
        float r9181 = -5.721255550282204e+59;
        bool r9182 = r9180 <= r9181;
        float r9183 = 4.361653924738468e+54;
        bool r9184 = r9180 <= r9183;
        float r9185 = !r9184;
        bool r9186 = r9182 || r9185;
        float r9187 = x;
        float r9188 = z;
        float r9189 = r9188 / r9180;
        float r9190 = r9187 + r9189;
        float r9191 = 1;
        float r9192 = i;
        float r9193 = a;
        float r9194 = r9180 + r9193;
        float r9195 = r9194 * r9180;
        float r9196 = b;
        float r9197 = r9195 + r9196;
        float r9198 = r9180 * r9197;
        float r9199 = c;
        float r9200 = r9198 + r9199;
        float r9201 = r9180 * r9200;
        float r9202 = r9192 + r9201;
        float r9203 = 230661.510616;
        float r9204 = 27464.7644705;
        float r9205 = r9187 * r9180;
        float r9206 = r9188 + r9205;
        float r9207 = r9180 * r9206;
        float r9208 = r9204 + r9207;
        float r9209 = r9180 * r9208;
        float r9210 = r9203 + r9209;
        float r9211 = r9180 * r9210;
        float r9212 = t;
        float r9213 = r9211 + r9212;
        float r9214 = r9202 / r9213;
        float r9215 = r9191 / r9214;
        float r9216 = r9186 ? r9190 : r9215;
        return r9216;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r9217 = y;
        double r9218 = -5.721255550282204e+59;
        bool r9219 = r9217 <= r9218;
        double r9220 = 4.361653924738468e+54;
        bool r9221 = r9217 <= r9220;
        double r9222 = !r9221;
        bool r9223 = r9219 || r9222;
        double r9224 = x;
        double r9225 = z;
        double r9226 = r9225 / r9217;
        double r9227 = r9224 + r9226;
        double r9228 = 1;
        double r9229 = i;
        double r9230 = a;
        double r9231 = r9217 + r9230;
        double r9232 = r9231 * r9217;
        double r9233 = b;
        double r9234 = r9232 + r9233;
        double r9235 = r9217 * r9234;
        double r9236 = c;
        double r9237 = r9235 + r9236;
        double r9238 = r9217 * r9237;
        double r9239 = r9229 + r9238;
        double r9240 = 230661.510616;
        double r9241 = 27464.7644705;
        double r9242 = r9224 * r9217;
        double r9243 = r9225 + r9242;
        double r9244 = r9217 * r9243;
        double r9245 = r9241 + r9244;
        double r9246 = r9217 * r9245;
        double r9247 = r9240 + r9246;
        double r9248 = r9217 * r9247;
        double r9249 = t;
        double r9250 = r9248 + r9249;
        double r9251 = r9239 / r9250;
        double r9252 = r9228 / r9251;
        double r9253 = r9223 ? r9227 : r9252;
        return r9253;
}

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 r9254, r9255, r9256, r9257, r9258, r9259, r9260, r9261, r9262, r9263, r9264, r9265, r9266, r9267, r9268, r9269, r9270, r9271, r9272, r9273, r9274, r9275, r9276, r9277, r9278, r9279;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9254);
        mpfr_init(r9255);
        mpfr_init(r9256);
        mpfr_init(r9257);
        mpfr_init(r9258);
        mpfr_init(r9259);
        mpfr_init_set_str(r9260, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r9261);
        mpfr_init(r9262);
        mpfr_init_set_str(r9263, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r9264);
        mpfr_init(r9265);
        mpfr_init(r9266);
        mpfr_init(r9267);
        mpfr_init(r9268);
        mpfr_init(r9269);
        mpfr_init(r9270);
        mpfr_init(r9271);
        mpfr_init(r9272);
        mpfr_init(r9273);
        mpfr_init(r9274);
        mpfr_init(r9275);
        mpfr_init(r9276);
        mpfr_init(r9277);
        mpfr_init(r9278);
        mpfr_init(r9279);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r9254, x, MPFR_RNDN);
        mpfr_set_d(r9255, y, MPFR_RNDN);
        mpfr_mul(r9256, r9254, r9255, MPFR_RNDN);
        mpfr_set_d(r9257, z, MPFR_RNDN);
        mpfr_add(r9258, r9256, r9257, MPFR_RNDN);
        mpfr_mul(r9259, r9258, r9255, MPFR_RNDN);
        ;
        mpfr_add(r9261, r9259, r9260, MPFR_RNDN);
        mpfr_mul(r9262, r9261, r9255, MPFR_RNDN);
        ;
        mpfr_add(r9264, r9262, r9263, MPFR_RNDN);
        mpfr_mul(r9265, r9264, r9255, MPFR_RNDN);
        mpfr_set_d(r9266, t, MPFR_RNDN);
        mpfr_add(r9267, r9265, r9266, MPFR_RNDN);
        mpfr_set_d(r9268, a, MPFR_RNDN);
        mpfr_add(r9269, r9255, r9268, MPFR_RNDN);
        mpfr_mul(r9270, r9269, r9255, MPFR_RNDN);
        mpfr_set_d(r9271, b, MPFR_RNDN);
        mpfr_add(r9272, r9270, r9271, MPFR_RNDN);
        mpfr_mul(r9273, r9272, r9255, MPFR_RNDN);
        mpfr_set_d(r9274, c, MPFR_RNDN);
        mpfr_add(r9275, r9273, r9274, MPFR_RNDN);
        mpfr_mul(r9276, r9275, r9255, MPFR_RNDN);
        mpfr_set_d(r9277, i, MPFR_RNDN);
        mpfr_add(r9278, r9276, r9277, MPFR_RNDN);
        mpfr_div(r9279, r9267, r9278, MPFR_RNDN);
        return mpfr_get_d(r9279, MPFR_RNDN);
}

static mpfr_t r9280, r9281, r9282, r9283, r9284, r9285, r9286, r9287, r9288, r9289, r9290, r9291, r9292, r9293, r9294, r9295, r9296, r9297, r9298, r9299, r9300, r9301, r9302, r9303, r9304, r9305, r9306, r9307, r9308, r9309, r9310, r9311, r9312, r9313, r9314, r9315, r9316;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9280);
        mpfr_init_set_str(r9281, "-5.721255550282204e+59", 10, MPFR_RNDN);
        mpfr_init(r9282);
        mpfr_init_set_str(r9283, "4.361653924738468e+54", 10, MPFR_RNDN);
        mpfr_init(r9284);
        mpfr_init(r9285);
        mpfr_init(r9286);
        mpfr_init(r9287);
        mpfr_init(r9288);
        mpfr_init(r9289);
        mpfr_init(r9290);
        mpfr_init_set_str(r9291, "1", 10, MPFR_RNDN);
        mpfr_init(r9292);
        mpfr_init(r9293);
        mpfr_init(r9294);
        mpfr_init(r9295);
        mpfr_init(r9296);
        mpfr_init(r9297);
        mpfr_init(r9298);
        mpfr_init(r9299);
        mpfr_init(r9300);
        mpfr_init(r9301);
        mpfr_init(r9302);
        mpfr_init_set_str(r9303, "230661.510616", 10, MPFR_RNDN);
        mpfr_init_set_str(r9304, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r9305);
        mpfr_init(r9306);
        mpfr_init(r9307);
        mpfr_init(r9308);
        mpfr_init(r9309);
        mpfr_init(r9310);
        mpfr_init(r9311);
        mpfr_init(r9312);
        mpfr_init(r9313);
        mpfr_init(r9314);
        mpfr_init(r9315);
        mpfr_init(r9316);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r9280, y, MPFR_RNDN);
        ;
        mpfr_set_si(r9282, mpfr_cmp(r9280, r9281) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r9284, mpfr_cmp(r9280, r9283) <= 0, MPFR_RNDN);
        mpfr_set_si(r9285, !mpfr_get_si(r9284, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r9286, mpfr_get_si(r9282, MPFR_RNDN) || mpfr_get_si(r9285, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r9287, x, MPFR_RNDN);
        mpfr_set_d(r9288, z, MPFR_RNDN);
        mpfr_div(r9289, r9288, r9280, MPFR_RNDN);
        mpfr_add(r9290, r9287, r9289, MPFR_RNDN);
        ;
        mpfr_set_d(r9292, i, MPFR_RNDN);
        mpfr_set_d(r9293, a, MPFR_RNDN);
        mpfr_add(r9294, r9280, r9293, MPFR_RNDN);
        mpfr_mul(r9295, r9294, r9280, MPFR_RNDN);
        mpfr_set_d(r9296, b, MPFR_RNDN);
        mpfr_add(r9297, r9295, r9296, MPFR_RNDN);
        mpfr_mul(r9298, r9280, r9297, MPFR_RNDN);
        mpfr_set_d(r9299, c, MPFR_RNDN);
        mpfr_add(r9300, r9298, r9299, MPFR_RNDN);
        mpfr_mul(r9301, r9280, r9300, MPFR_RNDN);
        mpfr_add(r9302, r9292, r9301, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9305, r9287, r9280, MPFR_RNDN);
        mpfr_add(r9306, r9288, r9305, MPFR_RNDN);
        mpfr_mul(r9307, r9280, r9306, MPFR_RNDN);
        mpfr_add(r9308, r9304, r9307, MPFR_RNDN);
        mpfr_mul(r9309, r9280, r9308, MPFR_RNDN);
        mpfr_add(r9310, r9303, r9309, MPFR_RNDN);
        mpfr_mul(r9311, r9280, r9310, MPFR_RNDN);
        mpfr_set_d(r9312, t, MPFR_RNDN);
        mpfr_add(r9313, r9311, r9312, MPFR_RNDN);
        mpfr_div(r9314, r9302, r9313, MPFR_RNDN);
        mpfr_div(r9315, r9291, r9314, MPFR_RNDN);
        if (mpfr_get_si(r9286, MPFR_RNDN)) { mpfr_set(r9316, r9290, MPFR_RNDN); } else { mpfr_set(r9316, r9315, MPFR_RNDN); };
        return mpfr_get_d(r9316, MPFR_RNDN);
}

static mpfr_t r9317, r9318, r9319, r9320, r9321, r9322, r9323, r9324, r9325, r9326, r9327, r9328, r9329, r9330, r9331, r9332, r9333, r9334, r9335, r9336, r9337, r9338, r9339, r9340, r9341, r9342, r9343, r9344, r9345, r9346, r9347, r9348, r9349, r9350, r9351, r9352, r9353;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9317);
        mpfr_init_set_str(r9318, "-5.721255550282204e+59", 10, MPFR_RNDN);
        mpfr_init(r9319);
        mpfr_init_set_str(r9320, "4.361653924738468e+54", 10, MPFR_RNDN);
        mpfr_init(r9321);
        mpfr_init(r9322);
        mpfr_init(r9323);
        mpfr_init(r9324);
        mpfr_init(r9325);
        mpfr_init(r9326);
        mpfr_init(r9327);
        mpfr_init_set_str(r9328, "1", 10, MPFR_RNDN);
        mpfr_init(r9329);
        mpfr_init(r9330);
        mpfr_init(r9331);
        mpfr_init(r9332);
        mpfr_init(r9333);
        mpfr_init(r9334);
        mpfr_init(r9335);
        mpfr_init(r9336);
        mpfr_init(r9337);
        mpfr_init(r9338);
        mpfr_init(r9339);
        mpfr_init_set_str(r9340, "230661.510616", 10, MPFR_RNDN);
        mpfr_init_set_str(r9341, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r9342);
        mpfr_init(r9343);
        mpfr_init(r9344);
        mpfr_init(r9345);
        mpfr_init(r9346);
        mpfr_init(r9347);
        mpfr_init(r9348);
        mpfr_init(r9349);
        mpfr_init(r9350);
        mpfr_init(r9351);
        mpfr_init(r9352);
        mpfr_init(r9353);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r9317, y, MPFR_RNDN);
        ;
        mpfr_set_si(r9319, mpfr_cmp(r9317, r9318) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r9321, mpfr_cmp(r9317, r9320) <= 0, MPFR_RNDN);
        mpfr_set_si(r9322, !mpfr_get_si(r9321, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r9323, mpfr_get_si(r9319, MPFR_RNDN) || mpfr_get_si(r9322, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r9324, x, MPFR_RNDN);
        mpfr_set_d(r9325, z, MPFR_RNDN);
        mpfr_div(r9326, r9325, r9317, MPFR_RNDN);
        mpfr_add(r9327, r9324, r9326, MPFR_RNDN);
        ;
        mpfr_set_d(r9329, i, MPFR_RNDN);
        mpfr_set_d(r9330, a, MPFR_RNDN);
        mpfr_add(r9331, r9317, r9330, MPFR_RNDN);
        mpfr_mul(r9332, r9331, r9317, MPFR_RNDN);
        mpfr_set_d(r9333, b, MPFR_RNDN);
        mpfr_add(r9334, r9332, r9333, MPFR_RNDN);
        mpfr_mul(r9335, r9317, r9334, MPFR_RNDN);
        mpfr_set_d(r9336, c, MPFR_RNDN);
        mpfr_add(r9337, r9335, r9336, MPFR_RNDN);
        mpfr_mul(r9338, r9317, r9337, MPFR_RNDN);
        mpfr_add(r9339, r9329, r9338, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r9342, r9324, r9317, MPFR_RNDN);
        mpfr_add(r9343, r9325, r9342, MPFR_RNDN);
        mpfr_mul(r9344, r9317, r9343, MPFR_RNDN);
        mpfr_add(r9345, r9341, r9344, MPFR_RNDN);
        mpfr_mul(r9346, r9317, r9345, MPFR_RNDN);
        mpfr_add(r9347, r9340, r9346, MPFR_RNDN);
        mpfr_mul(r9348, r9317, r9347, MPFR_RNDN);
        mpfr_set_d(r9349, t, MPFR_RNDN);
        mpfr_add(r9350, r9348, r9349, MPFR_RNDN);
        mpfr_div(r9351, r9339, r9350, MPFR_RNDN);
        mpfr_div(r9352, r9328, r9351, MPFR_RNDN);
        if (mpfr_get_si(r9323, MPFR_RNDN)) { mpfr_set(r9353, r9327, MPFR_RNDN); } else { mpfr_set(r9353, r9352, MPFR_RNDN); };
        return mpfr_get_d(r9353, MPFR_RNDN);
}

