📄 test.c
字号:
}doubletest_binomial_tpe (void){ return gsl_ran_binomial_tpe (r_global, 0.3, 5);}doubletest_binomial_tpe_pdf (unsigned int n){ return gsl_ran_binomial_pdf (n, 0.3, 5);}doubletest_binomial_large (void){ return gsl_ran_binomial (r_global, 0.3, 55);}doubletest_binomial_large_pdf (unsigned int n){ return gsl_ran_binomial_pdf (n, 0.3, 55);}doubletest_binomial_large_tpe (void){ return gsl_ran_binomial_tpe (r_global, 0.3, 55);}doubletest_binomial_large_tpe_pdf (unsigned int n){ return gsl_ran_binomial_pdf (n, 0.3, 55);}doubletest_binomial_huge (void){ return gsl_ran_binomial (r_global, 0.3, 5500);}doubletest_binomial_huge_pdf (unsigned int n){ return gsl_ran_binomial_pdf (n, 0.3, 5500);}doubletest_binomial_huge_tpe (void){ return gsl_ran_binomial_tpe (r_global, 0.3, 5500);}doubletest_binomial_huge_tpe_pdf (unsigned int n){ return gsl_ran_binomial_pdf (n, 0.3, 5500);}doubletest_cauchy (void){ return gsl_ran_cauchy (r_global, 2.0);}doubletest_cauchy_pdf (double x){ return gsl_ran_cauchy_pdf (x, 2.0);}doubletest_chisq (void){ return gsl_ran_chisq (r_global, 13.0);}doubletest_chisq_pdf (double x){ return gsl_ran_chisq_pdf (x, 13.0);}doubletest_dir2d (void){ double x = 0, y = 0, theta; gsl_ran_dir_2d (r_global, &x, &y); theta = atan2 (x, y); return theta;}doubletest_dir2d_pdf (double x){ if (x > -M_PI && x <= M_PI) { return 1 / (2 * M_PI); } else { return 0; }}doubletest_dir2d_trig_method (void){ double x = 0, y = 0, theta; gsl_ran_dir_2d_trig_method (r_global, &x, &y); theta = atan2 (x, y); return theta;}doubletest_dir2d_trig_method_pdf (double x){ if (x > -M_PI && x <= M_PI) { return 1 / (2 * M_PI); } else { return 0; }}doubletest_dir3dxy (void){ double x = 0, y = 0, z = 0, theta; gsl_ran_dir_3d (r_global, &x, &y, &z); theta = atan2 (x, y); return theta;}doubletest_dir3dxy_pdf (double x){ if (x > -M_PI && x <= M_PI) { return 1 / (2 * M_PI); } else { return 0; }}doubletest_dir3dyz (void){ double x = 0, y = 0, z = 0, theta; gsl_ran_dir_3d (r_global, &x, &y, &z); theta = atan2 (y, z); return theta;}doubletest_dir3dyz_pdf (double x){ if (x > -M_PI && x <= M_PI) { return 1 / (2 * M_PI); } else { return 0; }}doubletest_dir3dzx (void){ double x = 0, y = 0, z = 0, theta; gsl_ran_dir_3d (r_global, &x, &y, &z); theta = atan2 (z, x); return theta;}doubletest_dir3dzx_pdf (double x){ if (x > -M_PI && x <= M_PI) { return 1 / (2 * M_PI); } else { return 0; }}doubletest_dirichlet (void){ /* This is a bit of a lame test, since when K=2, the Dirichlet distribution becomes a beta distribution */ size_t K = 2; double alpha[2] = { 2.5, 5.0 }; double theta[2] = { 0.0, 0.0 }; gsl_ran_dirichlet (r_global, K, alpha, theta); return theta[0];}doubletest_dirichlet_pdf (double x){ size_t K = 2; double alpha[2] = { 2.5, 5.0 }; double theta[2]; if (x <= 0.0 || x >= 1.0) return 0.0; /* Out of range */ theta[0] = x; theta[1] = 1.0 - x; return gsl_ran_dirichlet_pdf (K, alpha, theta);}/* Check that the observed means of the Dirichlet variables are within reasonable statistical errors of their correct values. */#define DIRICHLET_K 10voidtest_dirichlet_moments (void){ double alpha[DIRICHLET_K]; double theta[DIRICHLET_K]; double theta_sum[DIRICHLET_K]; double alpha_sum = 0.0; double mean, obs_mean, sd, sigma; int status, k, n; for (k = 0; k < DIRICHLET_K; k++) { alpha[k] = gsl_ran_exponential (r_global, 0.1); alpha_sum += alpha[k]; theta_sum[k] = 0.0; } for (n = 0; n < N; n++) { gsl_ran_dirichlet (r_global, DIRICHLET_K, alpha, theta); for (k = 0; k < DIRICHLET_K; k++) theta_sum[k] += theta[k]; } for (k = 0; k < DIRICHLET_K; k++) { mean = alpha[k] / alpha_sum; sd = sqrt ((alpha[k] * (1. - alpha[k] / alpha_sum)) / (alpha_sum * (alpha_sum + 1.))); obs_mean = theta_sum[k] / N; sigma = sqrt ((double) N) * fabs (mean - obs_mean) / sd; status = (sigma > 3.0); gsl_test (status, "test gsl_ran_dirichlet: mean (%g observed vs %g expected)", obs_mean, mean); }}/* Check that the observed means of the multinomial variables are within reasonable statistical errors of their correct values. */voidtest_multinomial_moments (void){ const unsigned int sum_n = 100; const double p[MULTI_DIM] ={ 0.2, 0.20, 0.17, 0.14, 0.12, 0.07, 0.05, 0.02, 0.02, 0.01 }; unsigned int x[MULTI_DIM]; double x_sum[MULTI_DIM]; double mean, obs_mean, sd, sigma; int status, k, n; for (k = 0; k < MULTI_DIM; k++) x_sum[k] =0.0; for (n = 0; n < N; n++) { gsl_ran_multinomial (r_global, MULTI_DIM, sum_n, p, x); for (k = 0; k < MULTI_DIM; k++) x_sum[k] += x[k]; } for (k = 0; k < MULTI_DIM; k++) { mean = p[k] * sum_n; sd = p[k] * (1.-p[k]) * sum_n; obs_mean = x_sum[k] / N; sigma = sqrt ((double) N) * fabs (mean - obs_mean) / sd; status = (sigma > 3.0); gsl_test (status, "test gsl_ran_multinomial: mean (%g observed vs %g expected)", obs_mean, mean); }}static gsl_ran_discrete_t *g1 = NULL;static gsl_ran_discrete_t *g2 = NULL;static gsl_ran_discrete_t *g3 = NULL;doubletest_discrete1 (void){ static double P[3] = { 0.59, 0.4, 0.01 }; if (g1 == NULL) { g1 = gsl_ran_discrete_preproc (3, P); } return gsl_ran_discrete (r_global, g1);}doubletest_discrete1_pdf (unsigned int n){ return gsl_ran_discrete_pdf ((size_t) n, g1);}doubletest_discrete2 (void){ static double P[10] = { 1, 9, 3, 4, 5, 8, 6, 7, 2, 0 }; if (g2 == NULL) { g2 = gsl_ran_discrete_preproc (10, P); } return gsl_ran_discrete (r_global, g2);}doubletest_discrete2_pdf (unsigned int n){ return gsl_ran_discrete_pdf ((size_t) n, g2);}doubletest_discrete3 (void){ static double P[20]; if (g3 == NULL) { int i; for (i=0; i<20; ++i) P[i]=1.0/20; g3 = gsl_ran_discrete_preproc (20, P); } return gsl_ran_discrete (r_global, g3);}doubletest_discrete3_pdf (unsigned int n){ return gsl_ran_discrete_pdf ((size_t) n, g3);}doubletest_erlang (void){ return gsl_ran_erlang (r_global, 3.0, 4.0);}doubletest_erlang_pdf (double x){ return gsl_ran_erlang_pdf (x, 3.0, 4.0);}doubletest_exponential (void){ return gsl_ran_exponential (r_global, 2.0);}doubletest_exponential_pdf (double x){ return gsl_ran_exponential_pdf (x, 2.0);}doubletest_exppow0 (void){ return gsl_ran_exppow (r_global, 3.7, 0.3);}doubletest_exppow0_pdf (double x){ return gsl_ran_exppow_pdf (x, 3.7, 0.3);}doubletest_exppow1 (void){ return gsl_ran_exppow (r_global, 3.7, 1.0);}doubletest_exppow1_pdf (double x){ return gsl_ran_exppow_pdf (x, 3.7, 1.0);}doubletest_exppow1a (void){ return gsl_ran_exppow (r_global, 3.7, 1.9);}doubletest_exppow1a_pdf (double x){ return gsl_ran_exppow_pdf (x, 3.7, 1.9);}doubletest_exppow2 (void){ return gsl_ran_exppow (r_global, 3.7, 2.0);}doubletest_exppow2_pdf (double x){ return gsl_ran_exppow_pdf (x, 3.7, 2.0);}doubletest_exppow2a (void){ return gsl_ran_exppow (r_global, 3.7, 7.5);}doubletest_exppow2a_pdf (double x){ return gsl_ran_exppow_pdf (x, 3.7, 7.5);}doubletest_fdist (void){ return gsl_ran_fdist (r_global, 3.0, 4.0);}doubletest_fdist_pdf (double x){ return gsl_ran_fdist_pdf (x, 3.0, 4.0);}doubletest_flat (void){ return gsl_ran_flat (r_global, 3.0, 4.0);}doubletest_flat_pdf (double x){ return gsl_ran_flat_pdf (x, 3.0, 4.0);}doubletest_gamma (void){ return gsl_ran_gamma (r_global, 2.5, 2.17);}doubletest_gamma_pdf (double x){ return gsl_ran_gamma_pdf (x, 2.5, 2.17);}doubletest_gamma1 (void){ return gsl_ran_gamma (r_global, 1.0, 2.17);}doubletest_gamma1_pdf (double x){ return gsl_ran_gamma_pdf (x, 1.0, 2.17);}doubletest_gamma_int (void){ return gsl_ran_gamma (r_global, 10.0, 2.17);}doubletest_gamma_int_pdf (double x){ return gsl_ran_gamma_pdf (x, 10.0, 2.17);}doubletest_gamma_large (void){ return gsl_ran_gamma (r_global, 20.0, 2.17);}doubletest_gamma_large_pdf (double x){ return gsl_ran_gamma_pdf (x, 20.0, 2.17);}doubletest_gaussian (void){ return gsl_ran_gaussian (r_global, 3.0);}doubletest_gaussian_pdf (double x){ return gsl_ran_gaussian_pdf (x, 3.0);}doubletest_gaussian_ratio_method (void){ return gsl_ran_gaussian_ratio_method (r_global, 3.0);}doubletest_gaussian_ratio_method_pdf (double x){ return gsl_ran_gaussian_pdf (x, 3.0);}doubletest_gaussian_tail (void){ return gsl_ran_gaussian_tail (r_global, 1.7, 0.25);}doubletest_gaussian_tail_pdf (double x){ return gsl_ran_gaussian_tail_pdf (x, 1.7, 0.25);}doubletest_gaussian_tail1 (void){ return gsl_ran_gaussian_tail (r_global, -1.7, 5.0);}doubletest_gaussian_tail1_pdf (double x){ return gsl_ran_gaussian_tail_pdf (x, -1.7, 5.0);}doubletest_gaussian_tail2 (void){ return gsl_ran_gaussian_tail (r_global, 0.1, 2.0);}doubletest_gaussian_tail2_pdf (double x){ return gsl_ran_gaussian_tail_pdf (x, 0.1, 2.0);}doubletest_ugaussian (void){ return gsl_ran_ugaussian (r_global);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -