|
Packit |
67cb25 |
/* randist/gsl-randist.c
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
67cb25 |
* it under the terms of the GNU General Public License as published by
|
|
Packit |
67cb25 |
* the Free Software Foundation; either version 3 of the License, or (at
|
|
Packit |
67cb25 |
* your option) any later version.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* This program is distributed in the hope that it will be useful, but
|
|
Packit |
67cb25 |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
67cb25 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
67cb25 |
* General Public License for more details.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
67cb25 |
* along with this program; if not, write to the Free Software
|
|
Packit |
67cb25 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#include <config.h>
|
|
Packit |
67cb25 |
#include <stdio.h>
|
|
Packit |
67cb25 |
#include <stdlib.h>
|
|
Packit |
67cb25 |
#include <math.h>
|
|
Packit |
67cb25 |
#include <string.h>
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#include <gsl/gsl_randist.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_rng.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_test.h>
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
void error (const char * s);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int
|
|
Packit |
67cb25 |
main (int argc, char *argv[])
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
size_t i,j;
|
|
Packit |
67cb25 |
size_t n = 0;
|
|
Packit |
67cb25 |
double mu = 0, nu = 0, nu1 = 0, nu2 = 0, sigma = 0, a = 0, b = 0, c = 0;
|
|
Packit |
67cb25 |
double zeta = 0, sigmax = 0, sigmay = 0, rho = 0;
|
|
Packit |
67cb25 |
double p = 0;
|
|
Packit |
67cb25 |
double x = 0, y =0, z=0 ;
|
|
Packit |
67cb25 |
unsigned int N = 0, t = 0, n1 = 0, n2 = 0 ;
|
|
Packit |
67cb25 |
unsigned long int seed = 0 ;
|
|
Packit |
67cb25 |
const char * name ;
|
|
Packit |
67cb25 |
gsl_rng * r ;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
if (argc < 4)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
printf (
|
|
Packit |
67cb25 |
"Usage: gsl-randist seed n DIST param1 param2 ...\n"
|
|
Packit |
67cb25 |
"Generates n samples from the distribution DIST with parameters param1,\n"
|
|
Packit |
67cb25 |
"param2, etc. Valid distributions are,\n\n");
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
printf(
|
|
Packit |
67cb25 |
" beta\n"
|
|
Packit |
67cb25 |
" binomial\n"
|
|
Packit |
67cb25 |
" bivariate-gaussian\n"
|
|
Packit |
67cb25 |
" cauchy\n"
|
|
Packit |
67cb25 |
" chisq\n"
|
|
Packit |
67cb25 |
" dir-2d\n"
|
|
Packit |
67cb25 |
" dir-3d\n"
|
|
Packit |
67cb25 |
" dir-nd\n"
|
|
Packit |
67cb25 |
" erlang\n"
|
|
Packit |
67cb25 |
" exponential\n"
|
|
Packit |
67cb25 |
" exppow\n"
|
|
Packit |
67cb25 |
" fdist\n"
|
|
Packit |
67cb25 |
" flat\n"
|
|
Packit |
67cb25 |
" gamma\n"
|
|
Packit |
67cb25 |
" gaussian-tail\n"
|
|
Packit |
67cb25 |
" gaussian\n"
|
|
Packit |
67cb25 |
" geometric\n"
|
|
Packit |
67cb25 |
" gumbel1\n"
|
|
Packit |
67cb25 |
" gumbel2\n"
|
|
Packit |
67cb25 |
" hypergeometric\n"
|
|
Packit |
67cb25 |
" laplace\n"
|
|
Packit |
67cb25 |
" landau\n"
|
|
Packit |
67cb25 |
" levy\n"
|
|
Packit |
67cb25 |
" levy-skew\n"
|
|
Packit |
67cb25 |
" logarithmic\n"
|
|
Packit |
67cb25 |
" logistic\n"
|
|
Packit |
67cb25 |
" lognormal\n"
|
|
Packit |
67cb25 |
" negative-binomial\n"
|
|
Packit |
67cb25 |
" pareto\n"
|
|
Packit |
67cb25 |
" pascal\n"
|
|
Packit |
67cb25 |
" poisson\n"
|
|
Packit |
67cb25 |
" rayleigh-tail\n"
|
|
Packit |
67cb25 |
" rayleigh\n"
|
|
Packit |
67cb25 |
" tdist\n"
|
|
Packit |
67cb25 |
" ugaussian-tail\n"
|
|
Packit |
67cb25 |
" ugaussian\n"
|
|
Packit |
67cb25 |
" weibull\n") ;
|
|
Packit |
67cb25 |
exit (0);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
argv++ ; seed = atol (argv[0]); argc-- ;
|
|
Packit |
67cb25 |
argv++ ; n = atol (argv[0]); argc-- ;
|
|
Packit |
67cb25 |
argv++ ; name = argv[0] ; argc-- ; argc-- ;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_rng_env_setup() ;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
if (gsl_rng_default_seed != 0) {
|
|
Packit |
67cb25 |
fprintf(stderr,
|
|
Packit |
67cb25 |
"overriding GSL_RNG_SEED with command line value, seed = %ld\n",
|
|
Packit |
67cb25 |
seed) ;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_rng_default_seed = seed ;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
r = gsl_rng_alloc(gsl_rng_default) ;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#define NAME(x) !strcmp(name,(x))
|
|
Packit |
67cb25 |
#define OUTPUT(x) for (i = 0; i < n; i++) { printf("%g\n", (x)) ; }
|
|
Packit |
67cb25 |
#define OUTPUT1(a,x) for(i = 0; i < n; i++) { a ; printf("%g\n", x) ; }
|
|
Packit |
67cb25 |
#define OUTPUT2(a,x,y) for(i = 0; i < n; i++) { a ; printf("%g %g\n", x, y) ; }
|
|
Packit |
67cb25 |
#define OUTPUT3(a,x,y,z) for(i = 0; i < n; i++) { a ; printf("%g %g %g\n", x, y, z) ; }
|
|
Packit |
67cb25 |
#define INT_OUTPUT(x) for (i = 0; i < n; i++) { printf("%d\n", (x)) ; }
|
|
Packit |
67cb25 |
#define ARGS(x,y) if (argc != x) error(y) ;
|
|
Packit |
67cb25 |
#define DBL_ARG(x) if (argc) { x=atof((++argv)[0]);argc--;} else {error( #x);};
|
|
Packit |
67cb25 |
#define INT_ARG(x) if (argc) { x=atoi((++argv)[0]);argc--;} else {error( #x);};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
if (NAME("bernoulli"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "p = probability of success");
|
|
Packit |
67cb25 |
DBL_ARG(p)
|
|
Packit |
67cb25 |
INT_OUTPUT(gsl_ran_bernoulli (r, p));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("beta"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a,b = shape parameters");
|
|
Packit |
67cb25 |
DBL_ARG(a)
|
|
Packit |
67cb25 |
DBL_ARG(b)
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_beta (r, a, b));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("binomial"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "p = probability, N = number of trials");
|
|
Packit |
67cb25 |
DBL_ARG(p)
|
|
Packit |
67cb25 |
INT_ARG(N)
|
|
Packit |
67cb25 |
INT_OUTPUT(gsl_ran_binomial (r, p, N));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("cauchy"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "a = scale parameter");
|
|
Packit |
67cb25 |
DBL_ARG(a)
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_cauchy (r, a));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("chisq"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "nu = degrees of freedom");
|
|
Packit |
67cb25 |
DBL_ARG(nu)
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_chisq (r, nu));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("erlang"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a = scale parameter, b = order");
|
|
Packit |
67cb25 |
DBL_ARG(a)
|
|
Packit |
67cb25 |
DBL_ARG(b)
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_erlang (r, a, b));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("exponential"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "mu = mean value");
|
|
Packit |
67cb25 |
DBL_ARG(mu) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_exponential (r, mu));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("exppow"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a = scale parameter, b = power (1=exponential, 2=gaussian)");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
DBL_ARG(b) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_exppow (r, a, b));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("fdist"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "nu1, nu2 = degrees of freedom parameters");
|
|
Packit |
67cb25 |
DBL_ARG(nu1) ;
|
|
Packit |
67cb25 |
DBL_ARG(nu2) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_fdist (r, nu1, nu2));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("flat"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a = lower limit, b = upper limit");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
DBL_ARG(b) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_flat (r, a, b));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("gamma"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a = order, b = scale");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
DBL_ARG(b) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_gamma (r, a, b));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("gaussian"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "sigma = standard deviation");
|
|
Packit |
67cb25 |
DBL_ARG(sigma) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_gaussian (r, sigma));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("gaussian-tail"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a = lower limit, sigma = standard deviation");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
DBL_ARG(sigma) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_gaussian_tail (r, a, sigma));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("ugaussian"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(0, "unit gaussian, no parameters required");
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_ugaussian (r));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("ugaussian-tail"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "a = lower limit");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_ugaussian_tail (r, a));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("bivariate-gaussian"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(3, "sigmax = x std.dev., sigmay = y std.dev., rho = correlation");
|
|
Packit |
67cb25 |
DBL_ARG(sigmax) ;
|
|
Packit |
67cb25 |
DBL_ARG(sigmay) ;
|
|
Packit |
67cb25 |
DBL_ARG(rho) ;
|
|
Packit |
67cb25 |
OUTPUT2(gsl_ran_bivariate_gaussian (r, sigmax, sigmay, rho, &x, &y),
|
|
Packit |
67cb25 |
x, y);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("dir-2d"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
OUTPUT2(gsl_ran_dir_2d (r, &x, &y), x, y);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("dir-3d"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
OUTPUT3(gsl_ran_dir_3d (r, &x, &y, &z), x, y, z);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("dir-nd"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double *xarr;
|
|
Packit |
67cb25 |
ARGS(1, "n1 = number of dimensions of hypersphere");
|
|
Packit |
67cb25 |
INT_ARG(n1) ;
|
|
Packit |
67cb25 |
xarr = (double *)malloc(n1*sizeof(double));
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for(i = 0; i < n; i++) {
|
|
Packit |
67cb25 |
gsl_ran_dir_nd (r, n1, xarr) ;
|
|
Packit |
67cb25 |
for (j = 0; j < n1; j++) {
|
|
Packit |
67cb25 |
if (j) putchar(' ');
|
|
Packit |
67cb25 |
printf("%g", xarr[j]) ;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
putchar('\n');
|
|
Packit |
67cb25 |
} ;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
free(xarr);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("geometric"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "p = bernoulli trial probability of success");
|
|
Packit |
67cb25 |
DBL_ARG(p) ;
|
|
Packit |
67cb25 |
INT_OUTPUT(gsl_ran_geometric (r, p));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("gumbel1"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a = order, b = scale parameter");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
DBL_ARG(b) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_gumbel1 (r, a, b));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("gumbel2"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a = order, b = scale parameter");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
DBL_ARG(b) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_gumbel2 (r, a, b));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("hypergeometric"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(3, "n1 = tagged population, n2 = untagged population, t = number of trials");
|
|
Packit |
67cb25 |
INT_ARG(n1) ;
|
|
Packit |
67cb25 |
INT_ARG(n2) ;
|
|
Packit |
67cb25 |
INT_ARG(t) ;
|
|
Packit |
67cb25 |
INT_OUTPUT(gsl_ran_hypergeometric (r, n1, n2, t));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("laplace"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "a = scale parameter");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_laplace (r, a));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("landau"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(0, "no arguments required");
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_landau (r));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("levy"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "c = scale, a = power (1=cauchy, 2=gaussian)");
|
|
Packit |
67cb25 |
DBL_ARG(c) ;
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_levy (r, c, a));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("levy-skew"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(3, "c = scale, a = power (1=cauchy, 2=gaussian), b = skew");
|
|
Packit |
67cb25 |
DBL_ARG(c) ;
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
DBL_ARG(b) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_levy_skew (r, c, a, b));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("logarithmic"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "p = probability");
|
|
Packit |
67cb25 |
DBL_ARG(p) ;
|
|
Packit |
67cb25 |
INT_OUTPUT(gsl_ran_logarithmic (r, p));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("logistic"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "a = scale parameter");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_logistic (r, a));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("lognormal"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "zeta = location parameter, sigma = scale parameter");
|
|
Packit |
67cb25 |
DBL_ARG(zeta) ;
|
|
Packit |
67cb25 |
DBL_ARG(sigma) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_lognormal (r, zeta, sigma));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("negative-binomial"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "p = probability, a = order");
|
|
Packit |
67cb25 |
DBL_ARG(p) ;
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
INT_OUTPUT(gsl_ran_negative_binomial (r, p, a));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("pareto"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a = power, b = scale parameter");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
DBL_ARG(b) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_pareto (r, a, b));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("pascal"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "p = probability, n = order (integer)");
|
|
Packit |
67cb25 |
DBL_ARG(p) ;
|
|
Packit |
67cb25 |
INT_ARG(N) ;
|
|
Packit |
67cb25 |
INT_OUTPUT(gsl_ran_pascal (r, p, N));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("poisson"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "mu = scale parameter");
|
|
Packit |
67cb25 |
DBL_ARG(mu) ;
|
|
Packit |
67cb25 |
INT_OUTPUT(gsl_ran_poisson (r, mu));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("rayleigh"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "sigma = scale parameter");
|
|
Packit |
67cb25 |
DBL_ARG(sigma) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_rayleigh (r, sigma));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("rayleigh-tail"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a = lower limit, sigma = scale parameter");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
DBL_ARG(sigma) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_rayleigh_tail (r, a, sigma));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("tdist"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(1, "nu = degrees of freedom");
|
|
Packit |
67cb25 |
DBL_ARG(nu) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_tdist (r, nu));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else if (NAME("weibull"))
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
ARGS(2, "a = scale parameter, b = exponent");
|
|
Packit |
67cb25 |
DBL_ARG(a) ;
|
|
Packit |
67cb25 |
DBL_ARG(b) ;
|
|
Packit |
67cb25 |
OUTPUT(gsl_ran_weibull (r, a, b));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
else
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
fprintf(stderr,"Error: unrecognized distribution: %s\n", name) ;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
return 0 ;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
void
|
|
Packit |
67cb25 |
error (const char * s)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
fprintf(stderr, "Error: arguments should be %s\n",s) ;
|
|
Packit |
67cb25 |
exit (EXIT_FAILURE) ;
|
|
Packit |
67cb25 |
}
|