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