22 #if !defined(ISOSPEC_G_FACT_TABLE_SIZE)
27 #if ISOSPEC_BUILDING_OPENMS
28 #define ISOSPEC_G_FACT_TABLE_SIZE 1024
30 #define ISOSPEC_G_FACT_TABLE_SIZE 1024*1024*10
37 extern double* g_lfact_table;
39 static inline double minuslogFactorial(
int n)
43 #if ISOSPEC_BUILDING_OPENMS
44 if (n >= ISOSPEC_G_FACT_TABLE_SIZE)
47 if (g_lfact_table[n] == 0.0)
48 g_lfact_table[n] = -lgamma(n+1);
50 return g_lfact_table[n];
53 const double pi = 3.14159265358979323846264338328;
54 const double logpi = 1.144729885849400174143427351353058711647294812915311571513623071472137769884826079783623270275489708;
56 double NormalCDFInverse(
double p);
57 double NormalCDFInverse(
double p,
double mean,
double stdev);
58 double NormalCDF(
double x,
double mean,
double stdev);
59 double NormalPDF(
double x,
double mean = 0.0,
double stdev = 1.0);
62 double LowerIncompleteGamma2(
int a,
double x);
65 double InverseLowerIncompleteGamma2(
int a,
double x);
68 inline double InverseChiSquareCDF2(
int k,
double x)
70 return InverseLowerIncompleteGamma2(k, x*tgamma(
static_cast<double>(k)/2.0)) * 2.0;
73 extern std::mt19937 random_gen;
74 extern std::uniform_real_distribution<double> stdunif;
76 inline double rdvariate_beta_1_b(
double b, std::mt19937& rgen = random_gen)
78 return 1.0 - pow(stdunif(rgen), 1.0/b);
82 size_t rdvariate_binom(
size_t tries,
double succ_prob, std::mt19937& rgen = random_gen);