#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 r8660 = x;
        float r8661 = y;
        float r8662 = r8660 * r8661;
        float r8663 = z;
        float r8664 = r8662 + r8663;
        float r8665 = r8664 * r8661;
        float r8666 = 27464.7644705f;
        float r8667 = r8665 + r8666;
        float r8668 = r8667 * r8661;
        float r8669 = 230661.510616f;
        float r8670 = r8668 + r8669;
        float r8671 = r8670 * r8661;
        float r8672 = t;
        float r8673 = r8671 + r8672;
        float r8674 = a;
        float r8675 = r8661 + r8674;
        float r8676 = r8675 * r8661;
        float r8677 = b;
        float r8678 = r8676 + r8677;
        float r8679 = r8678 * r8661;
        float r8680 = c;
        float r8681 = r8679 + r8680;
        float r8682 = r8681 * r8661;
        float r8683 = i;
        float r8684 = r8682 + r8683;
        float r8685 = r8673 / r8684;
        return r8685;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r8686 = x;
        double r8687 = y;
        double r8688 = r8686 * r8687;
        double r8689 = z;
        double r8690 = r8688 + r8689;
        double r8691 = r8690 * r8687;
        double r8692 = 27464.7644705;
        double r8693 = r8691 + r8692;
        double r8694 = r8693 * r8687;
        double r8695 = 230661.510616;
        double r8696 = r8694 + r8695;
        double r8697 = r8696 * r8687;
        double r8698 = t;
        double r8699 = r8697 + r8698;
        double r8700 = a;
        double r8701 = r8687 + r8700;
        double r8702 = r8701 * r8687;
        double r8703 = b;
        double r8704 = r8702 + r8703;
        double r8705 = r8704 * r8687;
        double r8706 = c;
        double r8707 = r8705 + r8706;
        double r8708 = r8707 * r8687;
        double r8709 = i;
        double r8710 = r8708 + r8709;
        double r8711 = r8699 / r8710;
        return r8711;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r8712 = t;
        float r8713 = y;
        float r8714 = z;
        float r8715 = x;
        float r8716 = r8715 * r8713;
        float r8717 = r8714 + r8716;
        float r8718 = r8713 * r8717;
        float r8719 = 27464.7644705f;
        float r8720 = r8718 + r8719;
        float r8721 = r8713 * r8720;
        float r8722 = 230661.510616f;
        float r8723 = r8721 + r8722;
        float r8724 = r8723 * r8713;
        float r8725 = r8712 + r8724;
        float r8726 = i;
        float r8727 = c;
        float r8728 = b;
        float r8729 = a;
        float r8730 = r8713 + r8729;
        float r8731 = r8730 * r8713;
        float r8732 = r8728 + r8731;
        float r8733 = r8713 * r8732;
        float r8734 = r8727 + r8733;
        float r8735 = r8734 * r8713;
        float r8736 = r8726 + r8735;
        float r8737 = r8725 / r8736;
        return r8737;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r8738 = t;
        double r8739 = y;
        double r8740 = z;
        double r8741 = x;
        double r8742 = r8741 * r8739;
        double r8743 = r8740 + r8742;
        double r8744 = r8739 * r8743;
        double r8745 = 27464.7644705;
        double r8746 = r8744 + r8745;
        double r8747 = r8739 * r8746;
        double r8748 = 230661.510616;
        double r8749 = r8747 + r8748;
        double r8750 = r8749 * r8739;
        double r8751 = r8738 + r8750;
        double r8752 = i;
        double r8753 = c;
        double r8754 = b;
        double r8755 = a;
        double r8756 = r8739 + r8755;
        double r8757 = r8756 * r8739;
        double r8758 = r8754 + r8757;
        double r8759 = r8739 * r8758;
        double r8760 = r8753 + r8759;
        double r8761 = r8760 * r8739;
        double r8762 = r8752 + r8761;
        double r8763 = r8751 / r8762;
        return r8763;
}

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 r8764, r8765, r8766, r8767, r8768, r8769, r8770, r8771, r8772, r8773, r8774, r8775, r8776, r8777, r8778, r8779, r8780, r8781, r8782, r8783, r8784, r8785, r8786, r8787, r8788, r8789;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8764);
        mpfr_init(r8765);
        mpfr_init(r8766);
        mpfr_init(r8767);
        mpfr_init(r8768);
        mpfr_init(r8769);
        mpfr_init_set_str(r8770, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r8771);
        mpfr_init(r8772);
        mpfr_init_set_str(r8773, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r8774);
        mpfr_init(r8775);
        mpfr_init(r8776);
        mpfr_init(r8777);
        mpfr_init(r8778);
        mpfr_init(r8779);
        mpfr_init(r8780);
        mpfr_init(r8781);
        mpfr_init(r8782);
        mpfr_init(r8783);
        mpfr_init(r8784);
        mpfr_init(r8785);
        mpfr_init(r8786);
        mpfr_init(r8787);
        mpfr_init(r8788);
        mpfr_init(r8789);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r8764, x, MPFR_RNDN);
        mpfr_set_d(r8765, y, MPFR_RNDN);
        mpfr_mul(r8766, r8764, r8765, MPFR_RNDN);
        mpfr_set_d(r8767, z, MPFR_RNDN);
        mpfr_add(r8768, r8766, r8767, MPFR_RNDN);
        mpfr_mul(r8769, r8768, r8765, MPFR_RNDN);
        ;
        mpfr_add(r8771, r8769, r8770, MPFR_RNDN);
        mpfr_mul(r8772, r8771, r8765, MPFR_RNDN);
        ;
        mpfr_add(r8774, r8772, r8773, MPFR_RNDN);
        mpfr_mul(r8775, r8774, r8765, MPFR_RNDN);
        mpfr_set_d(r8776, t, MPFR_RNDN);
        mpfr_add(r8777, r8775, r8776, MPFR_RNDN);
        mpfr_set_d(r8778, a, MPFR_RNDN);
        mpfr_add(r8779, r8765, r8778, MPFR_RNDN);
        mpfr_mul(r8780, r8779, r8765, MPFR_RNDN);
        mpfr_set_d(r8781, b, MPFR_RNDN);
        mpfr_add(r8782, r8780, r8781, MPFR_RNDN);
        mpfr_mul(r8783, r8782, r8765, MPFR_RNDN);
        mpfr_set_d(r8784, c, MPFR_RNDN);
        mpfr_add(r8785, r8783, r8784, MPFR_RNDN);
        mpfr_mul(r8786, r8785, r8765, MPFR_RNDN);
        mpfr_set_d(r8787, i, MPFR_RNDN);
        mpfr_add(r8788, r8786, r8787, MPFR_RNDN);
        mpfr_div(r8789, r8777, r8788, MPFR_RNDN);
        return mpfr_get_d(r8789, MPFR_RNDN);
}

static mpfr_t r8790, r8791, r8792, r8793, r8794, r8795, r8796, r8797, r8798, r8799, r8800, r8801, r8802, r8803, r8804, r8805, r8806, r8807, r8808, r8809, r8810, r8811, r8812, r8813, r8814, r8815;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8790);
        mpfr_init(r8791);
        mpfr_init(r8792);
        mpfr_init(r8793);
        mpfr_init(r8794);
        mpfr_init(r8795);
        mpfr_init(r8796);
        mpfr_init_set_str(r8797, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r8798);
        mpfr_init(r8799);
        mpfr_init_set_str(r8800, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r8801);
        mpfr_init(r8802);
        mpfr_init(r8803);
        mpfr_init(r8804);
        mpfr_init(r8805);
        mpfr_init(r8806);
        mpfr_init(r8807);
        mpfr_init(r8808);
        mpfr_init(r8809);
        mpfr_init(r8810);
        mpfr_init(r8811);
        mpfr_init(r8812);
        mpfr_init(r8813);
        mpfr_init(r8814);
        mpfr_init(r8815);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r8790, t, MPFR_RNDN);
        mpfr_set_d(r8791, y, MPFR_RNDN);
        mpfr_set_d(r8792, z, MPFR_RNDN);
        mpfr_set_d(r8793, x, MPFR_RNDN);
        mpfr_mul(r8794, r8793, r8791, MPFR_RNDN);
        mpfr_add(r8795, r8792, r8794, MPFR_RNDN);
        mpfr_mul(r8796, r8791, r8795, MPFR_RNDN);
        ;
        mpfr_add(r8798, r8796, r8797, MPFR_RNDN);
        mpfr_mul(r8799, r8791, r8798, MPFR_RNDN);
        ;
        mpfr_add(r8801, r8799, r8800, MPFR_RNDN);
        mpfr_mul(r8802, r8801, r8791, MPFR_RNDN);
        mpfr_add(r8803, r8790, r8802, MPFR_RNDN);
        mpfr_set_d(r8804, i, MPFR_RNDN);
        mpfr_set_d(r8805, c, MPFR_RNDN);
        mpfr_set_d(r8806, b, MPFR_RNDN);
        mpfr_set_d(r8807, a, MPFR_RNDN);
        mpfr_add(r8808, r8791, r8807, MPFR_RNDN);
        mpfr_mul(r8809, r8808, r8791, MPFR_RNDN);
        mpfr_add(r8810, r8806, r8809, MPFR_RNDN);
        mpfr_mul(r8811, r8791, r8810, MPFR_RNDN);
        mpfr_add(r8812, r8805, r8811, MPFR_RNDN);
        mpfr_mul(r8813, r8812, r8791, MPFR_RNDN);
        mpfr_add(r8814, r8804, r8813, MPFR_RNDN);
        mpfr_div(r8815, r8803, r8814, MPFR_RNDN);
        return mpfr_get_d(r8815, MPFR_RNDN);
}

static mpfr_t r8816, r8817, r8818, r8819, r8820, r8821, r8822, r8823, r8824, r8825, r8826, r8827, r8828, r8829, r8830, r8831, r8832, r8833, r8834, r8835, r8836, r8837, r8838, r8839, r8840, r8841;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8816);
        mpfr_init(r8817);
        mpfr_init(r8818);
        mpfr_init(r8819);
        mpfr_init(r8820);
        mpfr_init(r8821);
        mpfr_init(r8822);
        mpfr_init_set_str(r8823, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r8824);
        mpfr_init(r8825);
        mpfr_init_set_str(r8826, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r8827);
        mpfr_init(r8828);
        mpfr_init(r8829);
        mpfr_init(r8830);
        mpfr_init(r8831);
        mpfr_init(r8832);
        mpfr_init(r8833);
        mpfr_init(r8834);
        mpfr_init(r8835);
        mpfr_init(r8836);
        mpfr_init(r8837);
        mpfr_init(r8838);
        mpfr_init(r8839);
        mpfr_init(r8840);
        mpfr_init(r8841);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r8816, t, MPFR_RNDN);
        mpfr_set_d(r8817, y, MPFR_RNDN);
        mpfr_set_d(r8818, z, MPFR_RNDN);
        mpfr_set_d(r8819, x, MPFR_RNDN);
        mpfr_mul(r8820, r8819, r8817, MPFR_RNDN);
        mpfr_add(r8821, r8818, r8820, MPFR_RNDN);
        mpfr_mul(r8822, r8817, r8821, MPFR_RNDN);
        ;
        mpfr_add(r8824, r8822, r8823, MPFR_RNDN);
        mpfr_mul(r8825, r8817, r8824, MPFR_RNDN);
        ;
        mpfr_add(r8827, r8825, r8826, MPFR_RNDN);
        mpfr_mul(r8828, r8827, r8817, MPFR_RNDN);
        mpfr_add(r8829, r8816, r8828, MPFR_RNDN);
        mpfr_set_d(r8830, i, MPFR_RNDN);
        mpfr_set_d(r8831, c, MPFR_RNDN);
        mpfr_set_d(r8832, b, MPFR_RNDN);
        mpfr_set_d(r8833, a, MPFR_RNDN);
        mpfr_add(r8834, r8817, r8833, MPFR_RNDN);
        mpfr_mul(r8835, r8834, r8817, MPFR_RNDN);
        mpfr_add(r8836, r8832, r8835, MPFR_RNDN);
        mpfr_mul(r8837, r8817, r8836, MPFR_RNDN);
        mpfr_add(r8838, r8831, r8837, MPFR_RNDN);
        mpfr_mul(r8839, r8838, r8817, MPFR_RNDN);
        mpfr_add(r8840, r8830, r8839, MPFR_RNDN);
        mpfr_div(r8841, r8829, r8840, MPFR_RNDN);
        return mpfr_get_d(r8841, MPFR_RNDN);
}

