codekingpro/portable-devtools
114k
1#cython: wraparound=False, nonecheck=False, boundscheck=False, cdivision=True, language_level=3
2from numpy cimport npy_intp
3
4from libc.stdint cimport (uint64_t, int32_t, int64_t)
5from numpy.random cimport bitgen_t
6
7cdef extern from "numpy/random/distributions.h":
8
9 struct s_binomial_t:
10 int has_binomial
11 double psave
12 int64_t nsave
13 double r
14 double q
15 double fm
16 int64_t m
17 double p1
18 double xm
19 double xl
20 double xr
21 double c
22 double laml
23 double lamr
24 double p2
25 double p3
26 double p4
27
28 ctypedef s_binomial_t binomial_t
29
30 float random_standard_uniform_f(bitgen_t *bitgen_state) nogil
31 double random_standard_uniform(bitgen_t *bitgen_state) nogil
32 void random_standard_uniform_fill(bitgen_t* bitgen_state, npy_intp cnt, double *out) nogil
33 void random_standard_uniform_fill_f(bitgen_t *bitgen_state, npy_intp cnt, float *out) nogil
34
35 double random_standard_exponential(bitgen_t *bitgen_state) nogil
36 float random_standard_exponential_f(bitgen_t *bitgen_state) nogil
37 void random_standard_exponential_fill(bitgen_t *bitgen_state, npy_intp cnt, double *out) nogil
38 void random_standard_exponential_fill_f(bitgen_t *bitgen_state, npy_intp cnt, float *out) nogil
39 void random_standard_exponential_inv_fill(bitgen_t *bitgen_state, npy_intp cnt, double *out) nogil
40 void random_standard_exponential_inv_fill_f(bitgen_t *bitgen_state, npy_intp cnt, float *out) nogil
41
42 double random_standard_normal(bitgen_t* bitgen_state) nogil
43 float random_standard_normal_f(bitgen_t *bitgen_state) nogil
44 void random_standard_normal_fill(bitgen_t *bitgen_state, npy_intp count, double *out) nogil
45 void random_standard_normal_fill_f(bitgen_t *bitgen_state, npy_intp count, float *out) nogil
46 double random_standard_gamma(bitgen_t *bitgen_state, double shape) nogil
47 float random_standard_gamma_f(bitgen_t *bitgen_state, float shape) nogil
48
49 float random_standard_uniform_f(bitgen_t *bitgen_state) nogil
50 void random_standard_uniform_fill_f(bitgen_t* bitgen_state, npy_intp cnt, float *out) nogil
51 float random_standard_normal_f(bitgen_t* bitgen_state) nogil
52 float random_standard_gamma_f(bitgen_t *bitgen_state, float shape) nogil
53
54 int64_t random_positive_int64(bitgen_t *bitgen_state) nogil
55 int32_t random_positive_int32(bitgen_t *bitgen_state) nogil
56 int64_t random_positive_int(bitgen_t *bitgen_state) nogil
57 uint64_t random_uint(bitgen_t *bitgen_state) nogil
58
59 double random_normal(bitgen_t *bitgen_state, double loc, double scale) nogil
60
61 double random_gamma(bitgen_t *bitgen_state, double shape, double scale) nogil
62 float random_gamma_f(bitgen_t *bitgen_state, float shape, float scale) nogil
63
64 double random_exponential(bitgen_t *bitgen_state, double scale) nogil
65 double random_uniform(bitgen_t *bitgen_state, double lower, double range) nogil
66 double random_beta(bitgen_t *bitgen_state, double a, double b) nogil
67 double random_chisquare(bitgen_t *bitgen_state, double df) nogil
68 double random_f(bitgen_t *bitgen_state, double dfnum, double dfden) nogil
69 double random_standard_cauchy(bitgen_t *bitgen_state) nogil
70 double random_pareto(bitgen_t *bitgen_state, double a) nogil
71 double random_weibull(bitgen_t *bitgen_state, double a) nogil
72 double random_power(bitgen_t *bitgen_state, double a) nogil
73 double random_laplace(bitgen_t *bitgen_state, double loc, double scale) nogil
74 double random_gumbel(bitgen_t *bitgen_state, double loc, double scale) nogil
75 double random_logistic(bitgen_t *bitgen_state, double loc, double scale) nogil
76 double random_lognormal(bitgen_t *bitgen_state, double mean, double sigma) nogil
77 double random_rayleigh(bitgen_t *bitgen_state, double mode) nogil
78 double random_standard_t(bitgen_t *bitgen_state, double df) nogil
79 double random_noncentral_chisquare(bitgen_t *bitgen_state, double df,
80 double nonc) nogil
81 double random_noncentral_f(bitgen_t *bitgen_state, double dfnum,
82 double dfden, double nonc) nogil
83 double random_wald(bitgen_t *bitgen_state, double mean, double scale) nogil
84 double random_vonmises(bitgen_t *bitgen_state, double mu, double kappa) nogil
85 double random_triangular(bitgen_t *bitgen_state, double left, double mode,
86 double right) nogil
87
88 int64_t random_poisson(bitgen_t *bitgen_state, double lam) nogil
89 int64_t random_negative_binomial(bitgen_t *bitgen_state, double n, double p) nogil
90 int64_t random_binomial(bitgen_t *bitgen_state, double p, int64_t n, binomial_t *binomial) nogil
91 int64_t random_logseries(bitgen_t *bitgen_state, double p) nogil
92 int64_t random_geometric_search(bitgen_t *bitgen_state, double p) nogil
93 int64_t random_geometric_inversion(bitgen_t *bitgen_state, double p) nogil
94 int64_t random_geometric(bitgen_t *bitgen_state, double p) nogil
95 int64_t random_zipf(bitgen_t *bitgen_state, double a) nogil
96 int64_t random_hypergeometric(bitgen_t *bitgen_state, int64_t good, int64_t bad,
97 int64_t sample) nogil
98
99 uint64_t random_interval(bitgen_t *bitgen_state, uint64_t max) nogil
100
101 # Generate random uint64 numbers in closed interval [off, off + rng].
102 uint64_t random_bounded_uint64(bitgen_t *bitgen_state,
103 uint64_t off, uint64_t rng,
104 uint64_t mask, bint use_masked) nogil
105
106 void random_multinomial(bitgen_t *bitgen_state, int64_t n, int64_t *mnix,
107 double *pix, npy_intp d, binomial_t *binomial) nogil
108
109 int random_multivariate_hypergeometric_count(bitgen_t *bitgen_state,
110 int64_t total,
111 size_t num_colors, int64_t *colors,
112 int64_t nsample,
113 size_t num_variates, int64_t *variates) nogil
114 void random_multivariate_hypergeometric_marginals(bitgen_t *bitgen_state,
115 int64_t total,
116 size_t num_colors, int64_t *colors,
117 int64_t nsample,
118 size_t num_variates, int64_t *variates) nogil
119
120 