Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:03:52

0001 /* randist/gsl_randist.h
0002  * 
0003  * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough
0004  * 
0005  * This program is free software; you can redistribute it and/or modify
0006  * it under the terms of the GNU General Public License as published by
0007  * the Free Software Foundation; either version 3 of the License, or (at
0008  * your option) any later version.
0009  * 
0010  * This program is distributed in the hope that it will be useful, but
0011  * WITHOUT ANY WARRANTY; without even the implied warranty of
0012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013  * General Public License for more details.
0014  * 
0015  * You should have received a copy of the GNU General Public License
0016  * along with this program; if not, write to the Free Software
0017  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0018  */
0019 
0020 #ifndef __GSL_RANDIST_H__
0021 #define __GSL_RANDIST_H__
0022 #include <gsl/gsl_rng.h>
0023 #include <gsl/gsl_vector.h>
0024 #include <gsl/gsl_matrix.h>
0025 
0026 #undef __BEGIN_DECLS
0027 #undef __END_DECLS
0028 #ifdef __cplusplus
0029 # define __BEGIN_DECLS extern "C" {
0030 # define __END_DECLS }
0031 #else
0032 # define __BEGIN_DECLS /* empty */
0033 # define __END_DECLS /* empty */
0034 #endif
0035 
0036 __BEGIN_DECLS
0037 
0038 unsigned int gsl_ran_bernoulli (const gsl_rng * r, double p);
0039 double gsl_ran_bernoulli_pdf (const unsigned int k, double p);
0040 
0041 double gsl_ran_beta (const gsl_rng * r, const double a, const double b);
0042 double gsl_ran_beta_pdf (const double x, const double a, const double b);
0043 
0044 unsigned int gsl_ran_binomial (const gsl_rng * r, double p, unsigned int n);
0045 unsigned int gsl_ran_binomial_knuth (const gsl_rng * r, double p, unsigned int n);
0046 unsigned int gsl_ran_binomial_tpe (const gsl_rng * r, double p, unsigned int n);
0047 double gsl_ran_binomial_pdf (const unsigned int k, const double p, const unsigned int n);
0048 
0049 double gsl_ran_exponential (const gsl_rng * r, const double mu);
0050 double gsl_ran_exponential_pdf (const double x, const double mu);
0051 
0052 double gsl_ran_exppow (const gsl_rng * r, const double a, const double b);
0053 double gsl_ran_exppow_pdf (const double x, const double a, const double b);
0054 
0055 double gsl_ran_cauchy (const gsl_rng * r, const double a);
0056 double gsl_ran_cauchy_pdf (const double x, const double a);
0057 
0058 double gsl_ran_chisq (const gsl_rng * r, const double nu);
0059 double gsl_ran_chisq_pdf (const double x, const double nu);
0060 
0061 void gsl_ran_dirichlet (const gsl_rng * r, const size_t K, const double alpha[], double theta[]);
0062 double gsl_ran_dirichlet_pdf (const size_t K, const double alpha[], const double theta[]);
0063 double gsl_ran_dirichlet_lnpdf (const size_t K, const double alpha[], const double theta[]);
0064 
0065 double gsl_ran_erlang (const gsl_rng * r, const double a, const double n);
0066 double gsl_ran_erlang_pdf (const double x, const double a, const double n);
0067 
0068 double gsl_ran_fdist (const gsl_rng * r, const double nu1, const double nu2);
0069 double gsl_ran_fdist_pdf (const double x, const double nu1, const double nu2);
0070 
0071 double gsl_ran_flat (const gsl_rng * r, const double a, const double b);
0072 double gsl_ran_flat_pdf (double x, const double a, const double b);
0073 
0074 double gsl_ran_gamma (const gsl_rng * r, const double a, const double b);
0075 double gsl_ran_gamma_int (const gsl_rng * r, const unsigned int a);
0076 double gsl_ran_gamma_pdf (const double x, const double a, const double b);
0077 double gsl_ran_gamma_mt (const gsl_rng * r, const double a, const double b);
0078 double gsl_ran_gamma_knuth (const gsl_rng * r, const double a, const double b);
0079 
0080 double gsl_ran_gaussian (const gsl_rng * r, const double sigma);
0081 double gsl_ran_gaussian_ratio_method (const gsl_rng * r, const double sigma);
0082 double gsl_ran_gaussian_ziggurat (const gsl_rng * r, const double sigma);
0083 double gsl_ran_gaussian_pdf (const double x, const double sigma);
0084 
0085 double gsl_ran_ugaussian (const gsl_rng * r);
0086 double gsl_ran_ugaussian_ratio_method (const gsl_rng * r);
0087 double gsl_ran_ugaussian_pdf (const double x);
0088 
0089 double gsl_ran_gaussian_tail (const gsl_rng * r, const double a, const double sigma);
0090 double gsl_ran_gaussian_tail_pdf (const double x, const double a, const double sigma);
0091 
0092 double gsl_ran_ugaussian_tail (const gsl_rng * r, const double a);
0093 double gsl_ran_ugaussian_tail_pdf (const double x, const double a);
0094 
0095 void gsl_ran_bivariate_gaussian (const gsl_rng * r, double sigma_x, double sigma_y, double rho, double *x, double *y);
0096 double gsl_ran_bivariate_gaussian_pdf (const double x, const double y, const double sigma_x, const double sigma_y, const double rho);
0097 
0098 int gsl_ran_multivariate_gaussian (const gsl_rng * r, const gsl_vector * mu, const gsl_matrix * L, gsl_vector * result);
0099 int gsl_ran_multivariate_gaussian_log_pdf (const gsl_vector * x,
0100                                            const gsl_vector * mu,
0101                                            const gsl_matrix * L,
0102                                            double * result,
0103                                            gsl_vector * work);
0104 int gsl_ran_multivariate_gaussian_pdf (const gsl_vector * x,
0105                                        const gsl_vector * mu,
0106                                        const gsl_matrix * L,
0107                                        double * result,
0108                                        gsl_vector * work);
0109 int gsl_ran_multivariate_gaussian_mean (const gsl_matrix * X, gsl_vector * mu_hat);
0110 int gsl_ran_multivariate_gaussian_vcov (const gsl_matrix * X, gsl_matrix * sigma_hat);
0111 
0112 int gsl_ran_wishart (const gsl_rng * r,
0113                      const double df,
0114                      const gsl_matrix * L,
0115                      gsl_matrix * result,
0116                      gsl_matrix * work);
0117 int gsl_ran_wishart_log_pdf (const gsl_matrix * X,
0118                              const gsl_matrix * L_X,
0119                              const double df,
0120                              const gsl_matrix * L,
0121                              double * result,
0122                              gsl_matrix * work);
0123 int gsl_ran_wishart_pdf (const gsl_matrix * X,
0124                          const gsl_matrix * L_X,
0125                          const double df,
0126                          const gsl_matrix * L,
0127                          double * result,
0128                          gsl_matrix * work);
0129 
0130 double gsl_ran_landau (const gsl_rng * r);
0131 double gsl_ran_landau_pdf (const double x);
0132 
0133 unsigned int gsl_ran_geometric (const gsl_rng * r, const double p);
0134 double gsl_ran_geometric_pdf (const unsigned int k, const double p);
0135 
0136 unsigned int gsl_ran_hypergeometric (const gsl_rng * r, unsigned int n1, unsigned int n2, unsigned int t);
0137 double gsl_ran_hypergeometric_pdf (const unsigned int k, const unsigned int n1, const unsigned int n2, unsigned int t);
0138 
0139 double gsl_ran_gumbel1 (const gsl_rng * r, const double a, const double b);
0140 double gsl_ran_gumbel1_pdf (const double x, const double a, const double b);
0141 
0142 double gsl_ran_gumbel2 (const gsl_rng * r, const double a, const double b);
0143 double gsl_ran_gumbel2_pdf (const double x, const double a, const double b);
0144 
0145 double gsl_ran_logistic (const gsl_rng * r, const double a);
0146 double gsl_ran_logistic_pdf (const double x, const double a);
0147 
0148 double gsl_ran_lognormal (const gsl_rng * r, const double zeta, const double sigma);
0149 double gsl_ran_lognormal_pdf (const double x, const double zeta, const double sigma);
0150 
0151 unsigned int gsl_ran_logarithmic (const gsl_rng * r, const double p);
0152 double gsl_ran_logarithmic_pdf (const unsigned int k, const double p);
0153 
0154 void gsl_ran_multinomial (const gsl_rng * r, const size_t K,
0155                           const unsigned int N, const double p[],
0156                           unsigned int n[] );
0157 double gsl_ran_multinomial_pdf (const size_t K,
0158                                 const double p[], const unsigned int n[] );
0159 double gsl_ran_multinomial_lnpdf (const size_t K,
0160                            const double p[], const unsigned int n[] );
0161 
0162 
0163 unsigned int gsl_ran_negative_binomial (const gsl_rng * r, double p, double n);
0164 double gsl_ran_negative_binomial_pdf (const unsigned int k, const double p, double n);
0165 
0166 unsigned int gsl_ran_pascal (const gsl_rng * r, double p, unsigned int n);
0167 double gsl_ran_pascal_pdf (const unsigned int k, const double p, unsigned int n);
0168 
0169 double gsl_ran_pareto (const gsl_rng * r, double a, const double b);
0170 double gsl_ran_pareto_pdf (const double x, const double a, const double b);
0171 
0172 unsigned int gsl_ran_poisson (const gsl_rng * r, double mu);
0173 void gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[],
0174                             double mu);
0175 double gsl_ran_poisson_pdf (const unsigned int k, const double mu);
0176 
0177 double gsl_ran_rayleigh (const gsl_rng * r, const double sigma);
0178 double gsl_ran_rayleigh_pdf (const double x, const double sigma);
0179 
0180 double gsl_ran_rayleigh_tail (const gsl_rng * r, const double a, const double sigma);
0181 double gsl_ran_rayleigh_tail_pdf (const double x, const double a, const double sigma);
0182 
0183 double gsl_ran_tdist (const gsl_rng * r, const double nu);
0184 double gsl_ran_tdist_pdf (const double x, const double nu);
0185 
0186 double gsl_ran_laplace (const gsl_rng * r, const double a);
0187 double gsl_ran_laplace_pdf (const double x, const double a);
0188 
0189 double gsl_ran_levy (const gsl_rng * r, const double c, const double alpha);
0190 double gsl_ran_levy_skew (const gsl_rng * r, const double c, const double alpha, const double beta);
0191 
0192 double gsl_ran_weibull (const gsl_rng * r, const double a, const double b);
0193 double gsl_ran_weibull_pdf (const double x, const double a, const double b);
0194 
0195 void gsl_ran_dir_2d (const gsl_rng * r, double * x, double * y);
0196 void gsl_ran_dir_2d_trig_method (const gsl_rng * r, double * x, double * y);
0197 void gsl_ran_dir_3d (const gsl_rng * r, double * x, double * y, double * z);
0198 void gsl_ran_dir_nd (const gsl_rng * r, size_t n, double * x);
0199 
0200 void gsl_ran_shuffle (const gsl_rng * r, void * base, size_t nmembm, size_t size);
0201 int gsl_ran_choose (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ;
0202 void gsl_ran_sample (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ;
0203 
0204 
0205 typedef struct {                /* struct for Walker algorithm */
0206     size_t K;
0207     size_t *A;
0208     double *F;
0209 } gsl_ran_discrete_t;
0210 
0211 gsl_ran_discrete_t * gsl_ran_discrete_preproc (size_t K, const double *P);
0212 void gsl_ran_discrete_free(gsl_ran_discrete_t *g);
0213 size_t gsl_ran_discrete (const gsl_rng *r, const gsl_ran_discrete_t *g);
0214 double gsl_ran_discrete_pdf (size_t k, const gsl_ran_discrete_t *g);
0215 
0216 
0217 __END_DECLS
0218 
0219 #endif /* __GSL_RANDIST_H__ */