#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 r8681 = x;
        float r8682 = y;
        float r8683 = r8681 * r8682;
        float r8684 = z;
        float r8685 = r8683 + r8684;
        float r8686 = r8685 * r8682;
        float r8687 = 27464.7644705f;
        float r8688 = r8686 + r8687;
        float r8689 = r8688 * r8682;
        float r8690 = 230661.510616f;
        float r8691 = r8689 + r8690;
        float r8692 = r8691 * r8682;
        float r8693 = t;
        float r8694 = r8692 + r8693;
        float r8695 = a;
        float r8696 = r8682 + r8695;
        float r8697 = r8696 * r8682;
        float r8698 = b;
        float r8699 = r8697 + r8698;
        float r8700 = r8699 * r8682;
        float r8701 = c;
        float r8702 = r8700 + r8701;
        float r8703 = r8702 * r8682;
        float r8704 = i;
        float r8705 = r8703 + r8704;
        float r8706 = r8694 / r8705;
        return r8706;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r8707 = x;
        double r8708 = y;
        double r8709 = r8707 * r8708;
        double r8710 = z;
        double r8711 = r8709 + r8710;
        double r8712 = r8711 * r8708;
        double r8713 = 27464.7644705;
        double r8714 = r8712 + r8713;
        double r8715 = r8714 * r8708;
        double r8716 = 230661.510616;
        double r8717 = r8715 + r8716;
        double r8718 = r8717 * r8708;
        double r8719 = t;
        double r8720 = r8718 + r8719;
        double r8721 = a;
        double r8722 = r8708 + r8721;
        double r8723 = r8722 * r8708;
        double r8724 = b;
        double r8725 = r8723 + r8724;
        double r8726 = r8725 * r8708;
        double r8727 = c;
        double r8728 = r8726 + r8727;
        double r8729 = r8728 * r8708;
        double r8730 = i;
        double r8731 = r8729 + r8730;
        double r8732 = r8720 / r8731;
        return r8732;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i) {
        float r8733 = y;
        float r8734 = -1.0100253264217397e+67f;
        bool r8735 = r8733 <= r8734;
        float r8736 = 3.756033471922753e+52f;
        bool r8737 = r8733 <= r8736;
        float r8738 = !r8737;
        bool r8739 = r8735 || r8738;
        float r8740 = x;
        float r8741 = z;
        float r8742 = r8741 / r8733;
        float r8743 = r8740 + r8742;
        float r8744 = 27464.7644705f;
        float r8745 = r8740 * r8733;
        float r8746 = r8741 + r8745;
        float r8747 = r8733 * r8746;
        float r8748 = r8744 + r8747;
        float r8749 = r8748 * r8733;
        float r8750 = 230661.510616f;
        float r8751 = r8749 + r8750;
        float r8752 = r8733 * r8751;
        float r8753 = t;
        float r8754 = r8752 + r8753;
        float r8755 = i;
        float r8756 = b;
        float r8757 = a;
        float r8758 = r8757 + r8733;
        float r8759 = r8758 * r8733;
        float r8760 = r8756 + r8759;
        float r8761 = r8733 * r8760;
        float r8762 = c;
        float r8763 = r8761 + r8762;
        float r8764 = r8763 * r8733;
        float r8765 = cbrt(r8764);
        float r8766 = r8765 * r8765;
        float r8767 = r8766 * r8765;
        float r8768 = r8755 + r8767;
        float r8769 = r8754 / r8768;
        float r8770 = r8739 ? r8743 : r8769;
        return r8770;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r8771 = y;
        double r8772 = -1.0100253264217397e+67;
        bool r8773 = r8771 <= r8772;
        double r8774 = 3.756033471922753e+52;
        bool r8775 = r8771 <= r8774;
        double r8776 = !r8775;
        bool r8777 = r8773 || r8776;
        double r8778 = x;
        double r8779 = z;
        double r8780 = r8779 / r8771;
        double r8781 = r8778 + r8780;
        double r8782 = 27464.7644705;
        double r8783 = r8778 * r8771;
        double r8784 = r8779 + r8783;
        double r8785 = r8771 * r8784;
        double r8786 = r8782 + r8785;
        double r8787 = r8786 * r8771;
        double r8788 = 230661.510616;
        double r8789 = r8787 + r8788;
        double r8790 = r8771 * r8789;
        double r8791 = t;
        double r8792 = r8790 + r8791;
        double r8793 = i;
        double r8794 = b;
        double r8795 = a;
        double r8796 = r8795 + r8771;
        double r8797 = r8796 * r8771;
        double r8798 = r8794 + r8797;
        double r8799 = r8771 * r8798;
        double r8800 = c;
        double r8801 = r8799 + r8800;
        double r8802 = r8801 * r8771;
        double r8803 = cbrt(r8802);
        double r8804 = r8803 * r8803;
        double r8805 = r8804 * r8803;
        double r8806 = r8793 + r8805;
        double r8807 = r8792 / r8806;
        double r8808 = r8777 ? r8781 : r8807;
        return r8808;
}

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 r8809, r8810, r8811, r8812, r8813, r8814, r8815, r8816, r8817, r8818, r8819, r8820, r8821, r8822, r8823, r8824, r8825, r8826, r8827, r8828, r8829, r8830, r8831, r8832, r8833, r8834;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8809);
        mpfr_init(r8810);
        mpfr_init(r8811);
        mpfr_init(r8812);
        mpfr_init(r8813);
        mpfr_init(r8814);
        mpfr_init_set_str(r8815, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r8816);
        mpfr_init(r8817);
        mpfr_init_set_str(r8818, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r8819);
        mpfr_init(r8820);
        mpfr_init(r8821);
        mpfr_init(r8822);
        mpfr_init(r8823);
        mpfr_init(r8824);
        mpfr_init(r8825);
        mpfr_init(r8826);
        mpfr_init(r8827);
        mpfr_init(r8828);
        mpfr_init(r8829);
        mpfr_init(r8830);
        mpfr_init(r8831);
        mpfr_init(r8832);
        mpfr_init(r8833);
        mpfr_init(r8834);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r8809, x, MPFR_RNDN);
        mpfr_set_d(r8810, y, MPFR_RNDN);
        mpfr_mul(r8811, r8809, r8810, MPFR_RNDN);
        mpfr_set_d(r8812, z, MPFR_RNDN);
        mpfr_add(r8813, r8811, r8812, MPFR_RNDN);
        mpfr_mul(r8814, r8813, r8810, MPFR_RNDN);
        ;
        mpfr_add(r8816, r8814, r8815, MPFR_RNDN);
        mpfr_mul(r8817, r8816, r8810, MPFR_RNDN);
        ;
        mpfr_add(r8819, r8817, r8818, MPFR_RNDN);
        mpfr_mul(r8820, r8819, r8810, MPFR_RNDN);
        mpfr_set_d(r8821, t, MPFR_RNDN);
        mpfr_add(r8822, r8820, r8821, MPFR_RNDN);
        mpfr_set_d(r8823, a, MPFR_RNDN);
        mpfr_add(r8824, r8810, r8823, MPFR_RNDN);
        mpfr_mul(r8825, r8824, r8810, MPFR_RNDN);
        mpfr_set_d(r8826, b, MPFR_RNDN);
        mpfr_add(r8827, r8825, r8826, MPFR_RNDN);
        mpfr_mul(r8828, r8827, r8810, MPFR_RNDN);
        mpfr_set_d(r8829, c, MPFR_RNDN);
        mpfr_add(r8830, r8828, r8829, MPFR_RNDN);
        mpfr_mul(r8831, r8830, r8810, MPFR_RNDN);
        mpfr_set_d(r8832, i, MPFR_RNDN);
        mpfr_add(r8833, r8831, r8832, MPFR_RNDN);
        mpfr_div(r8834, r8822, r8833, MPFR_RNDN);
        return mpfr_get_d(r8834, MPFR_RNDN);
}

static mpfr_t r8835, r8836, r8837, r8838, r8839, r8840, r8841, r8842, r8843, r8844, r8845, r8846, r8847, r8848, r8849, r8850, r8851, r8852, r8853, r8854, r8855, r8856, r8857, r8858, r8859, r8860, r8861, r8862, r8863, r8864, r8865, r8866, r8867, r8868, r8869, r8870, r8871, r8872;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8835);
        mpfr_init_set_str(r8836, "-1.0100253264217397e+67", 10, MPFR_RNDN);
        mpfr_init(r8837);
        mpfr_init_set_str(r8838, "3.756033471922753e+52", 10, MPFR_RNDN);
        mpfr_init(r8839);
        mpfr_init(r8840);
        mpfr_init(r8841);
        mpfr_init(r8842);
        mpfr_init(r8843);
        mpfr_init(r8844);
        mpfr_init(r8845);
        mpfr_init_set_str(r8846, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r8847);
        mpfr_init(r8848);
        mpfr_init(r8849);
        mpfr_init(r8850);
        mpfr_init(r8851);
        mpfr_init_set_str(r8852, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r8853);
        mpfr_init(r8854);
        mpfr_init(r8855);
        mpfr_init(r8856);
        mpfr_init(r8857);
        mpfr_init(r8858);
        mpfr_init(r8859);
        mpfr_init(r8860);
        mpfr_init(r8861);
        mpfr_init(r8862);
        mpfr_init(r8863);
        mpfr_init(r8864);
        mpfr_init(r8865);
        mpfr_init(r8866);
        mpfr_init(r8867);
        mpfr_init(r8868);
        mpfr_init(r8869);
        mpfr_init(r8870);
        mpfr_init(r8871);
        mpfr_init(r8872);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r8835, y, MPFR_RNDN);
        ;
        mpfr_set_si(r8837, mpfr_cmp(r8835, r8836) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8839, mpfr_cmp(r8835, r8838) <= 0, MPFR_RNDN);
        mpfr_set_si(r8840, !mpfr_get_si(r8839, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8841, mpfr_get_si(r8837, MPFR_RNDN) || mpfr_get_si(r8840, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r8842, x, MPFR_RNDN);
        mpfr_set_d(r8843, z, MPFR_RNDN);
        mpfr_div(r8844, r8843, r8835, MPFR_RNDN);
        mpfr_add(r8845, r8842, r8844, MPFR_RNDN);
        ;
        mpfr_mul(r8847, r8842, r8835, MPFR_RNDN);
        mpfr_add(r8848, r8843, r8847, MPFR_RNDN);
        mpfr_mul(r8849, r8835, r8848, MPFR_RNDN);
        mpfr_add(r8850, r8846, r8849, MPFR_RNDN);
        mpfr_mul(r8851, r8850, r8835, MPFR_RNDN);
        ;
        mpfr_add(r8853, r8851, r8852, MPFR_RNDN);
        mpfr_mul(r8854, r8835, r8853, MPFR_RNDN);
        mpfr_set_d(r8855, t, MPFR_RNDN);
        mpfr_add(r8856, r8854, r8855, MPFR_RNDN);
        mpfr_set_d(r8857, i, MPFR_RNDN);
        mpfr_set_d(r8858, b, MPFR_RNDN);
        mpfr_set_d(r8859, a, MPFR_RNDN);
        mpfr_add(r8860, r8859, r8835, MPFR_RNDN);
        mpfr_mul(r8861, r8860, r8835, MPFR_RNDN);
        mpfr_add(r8862, r8858, r8861, MPFR_RNDN);
        mpfr_mul(r8863, r8835, r8862, MPFR_RNDN);
        mpfr_set_d(r8864, c, MPFR_RNDN);
        mpfr_add(r8865, r8863, r8864, MPFR_RNDN);
        mpfr_mul(r8866, r8865, r8835, MPFR_RNDN);
        mpfr_cbrt(r8867, r8866, MPFR_RNDN);
        mpfr_mul(r8868, r8867, r8867, MPFR_RNDN);
        mpfr_mul(r8869, r8868, r8867, MPFR_RNDN);
        mpfr_add(r8870, r8857, r8869, MPFR_RNDN);
        mpfr_div(r8871, r8856, r8870, MPFR_RNDN);
        if (mpfr_get_si(r8841, MPFR_RNDN)) { mpfr_set(r8872, r8845, MPFR_RNDN); } else { mpfr_set(r8872, r8871, MPFR_RNDN); };
        return mpfr_get_d(r8872, MPFR_RNDN);
}

static mpfr_t r8873, r8874, r8875, r8876, r8877, r8878, r8879, r8880, r8881, r8882, r8883, r8884, r8885, r8886, r8887, r8888, r8889, r8890, r8891, r8892, r8893, r8894, r8895, r8896, r8897, r8898, r8899, r8900, r8901, r8902, r8903, r8904, r8905, r8906, r8907, r8908, r8909, r8910;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8873);
        mpfr_init_set_str(r8874, "-1.0100253264217397e+67", 10, MPFR_RNDN);
        mpfr_init(r8875);
        mpfr_init_set_str(r8876, "3.756033471922753e+52", 10, MPFR_RNDN);
        mpfr_init(r8877);
        mpfr_init(r8878);
        mpfr_init(r8879);
        mpfr_init(r8880);
        mpfr_init(r8881);
        mpfr_init(r8882);
        mpfr_init(r8883);
        mpfr_init_set_str(r8884, "27464.7644705", 10, MPFR_RNDN);
        mpfr_init(r8885);
        mpfr_init(r8886);
        mpfr_init(r8887);
        mpfr_init(r8888);
        mpfr_init(r8889);
        mpfr_init_set_str(r8890, "230661.510616", 10, MPFR_RNDN);
        mpfr_init(r8891);
        mpfr_init(r8892);
        mpfr_init(r8893);
        mpfr_init(r8894);
        mpfr_init(r8895);
        mpfr_init(r8896);
        mpfr_init(r8897);
        mpfr_init(r8898);
        mpfr_init(r8899);
        mpfr_init(r8900);
        mpfr_init(r8901);
        mpfr_init(r8902);
        mpfr_init(r8903);
        mpfr_init(r8904);
        mpfr_init(r8905);
        mpfr_init(r8906);
        mpfr_init(r8907);
        mpfr_init(r8908);
        mpfr_init(r8909);
        mpfr_init(r8910);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i) {
        mpfr_set_d(r8873, y, MPFR_RNDN);
        ;
        mpfr_set_si(r8875, mpfr_cmp(r8873, r8874) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8877, mpfr_cmp(r8873, r8876) <= 0, MPFR_RNDN);
        mpfr_set_si(r8878, !mpfr_get_si(r8877, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8879, mpfr_get_si(r8875, MPFR_RNDN) || mpfr_get_si(r8878, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r8880, x, MPFR_RNDN);
        mpfr_set_d(r8881, z, MPFR_RNDN);
        mpfr_div(r8882, r8881, r8873, MPFR_RNDN);
        mpfr_add(r8883, r8880, r8882, MPFR_RNDN);
        ;
        mpfr_mul(r8885, r8880, r8873, MPFR_RNDN);
        mpfr_add(r8886, r8881, r8885, MPFR_RNDN);
        mpfr_mul(r8887, r8873, r8886, MPFR_RNDN);
        mpfr_add(r8888, r8884, r8887, MPFR_RNDN);
        mpfr_mul(r8889, r8888, r8873, MPFR_RNDN);
        ;
        mpfr_add(r8891, r8889, r8890, MPFR_RNDN);
        mpfr_mul(r8892, r8873, r8891, MPFR_RNDN);
        mpfr_set_d(r8893, t, MPFR_RNDN);
        mpfr_add(r8894, r8892, r8893, MPFR_RNDN);
        mpfr_set_d(r8895, i, MPFR_RNDN);
        mpfr_set_d(r8896, b, MPFR_RNDN);
        mpfr_set_d(r8897, a, MPFR_RNDN);
        mpfr_add(r8898, r8897, r8873, MPFR_RNDN);
        mpfr_mul(r8899, r8898, r8873, MPFR_RNDN);
        mpfr_add(r8900, r8896, r8899, MPFR_RNDN);
        mpfr_mul(r8901, r8873, r8900, MPFR_RNDN);
        mpfr_set_d(r8902, c, MPFR_RNDN);
        mpfr_add(r8903, r8901, r8902, MPFR_RNDN);
        mpfr_mul(r8904, r8903, r8873, MPFR_RNDN);
        mpfr_cbrt(r8905, r8904, MPFR_RNDN);
        mpfr_mul(r8906, r8905, r8905, MPFR_RNDN);
        mpfr_mul(r8907, r8906, r8905, MPFR_RNDN);
        mpfr_add(r8908, r8895, r8907, MPFR_RNDN);
        mpfr_div(r8909, r8894, r8908, MPFR_RNDN);
        if (mpfr_get_si(r8879, MPFR_RNDN)) { mpfr_set(r8910, r8883, MPFR_RNDN); } else { mpfr_set(r8910, r8909, MPFR_RNDN); };
        return mpfr_get_d(r8910, MPFR_RNDN);
}

