1 /* Author: G. Jungman (+modifications from O. Teytaud olivier.teytaud@inria.fr)
5 #include <gsl/gsl_ieee_utils.h>
7 #include <gsl/gsl_qrng.h>
8 #include <gsl/gsl_test.h>
17 /* test in dimension 2 */
18 gsl_qrng * g = gsl_qrng_alloc(gsl_qrng_sobol, 2);
22 status += ( v[0] != 0.25 || v[1] != 0.75 );
24 status += ( v[0] != 0.375 || v[1] != 0.375 );
27 gsl_test (status, "Sobol d=2");
30 /* test in dimension 3 */
31 g = gsl_qrng_alloc(gsl_qrng_sobol, 3);
35 status += ( v[0] != 0.25 || v[1] != 0.75 || v[2] != 0.25 );
37 status += ( v[0] != 0.375 || v[1] != 0.375 || v[2] != 0.625 );
39 gsl_test (status, "Sobol d=3");
46 status += ( v[0] != 0.25 || v[1] != 0.75 || v[2] != 0.25 );
48 status += ( v[0] != 0.375 || v[1] != 0.375 || v[2] != 0.625 );
51 gsl_test (status, "Sobol d=3 (reinitialized)");
54 void test_halton(void)
60 /* test in dimension 1229 */
62 gsl_qrng * g = gsl_qrng_alloc(gsl_qrng_halton, 1229);
67 gsl_test (status, "Halton d=1229");
70 /* test in dimension 2 */
76 g = gsl_qrng_alloc(gsl_qrng_halton, 2);
80 gsl_test_rel (v[0], 3.0/4.0, 1e-3, "halton(2) k=2 v[0]");
81 gsl_test_rel (v[1], 1.0/9.0, 1e-3, "halton(2) k=2 v[1]");
84 gsl_test_rel (v[0], 1.0/8.0, 1e-3, "halton(2) k=3 v[0]");
85 gsl_test_rel (v[1], 4.0/9.0, 1e-3, "halton(2) k=3 v[1]");
89 /* test in dimension 3 */
90 g = gsl_qrng_alloc(gsl_qrng_halton, 3);
94 gsl_test_rel (v[0], 0.75, 1e-3, "halton(3) k=3 v[0]");
95 gsl_test_rel (v[1], 1.0/9.0, 1e-3, "halton(3) k=3 v[1]");
96 gsl_test_rel (v[2], 0.6, 1e-3, "halton(3) k=3 v[2]");
99 gsl_test_rel (v[0], 0.125, 1e-3, "halton(3) k=4 v[0]");
100 gsl_test_rel (v[1], 4.0/9.0, 1e-3, "halton(3) k=4 v[1]");
101 gsl_test_rel (v[2], 0.8, 1e-3, "halton(3) k=4 v[2]");
107 gsl_test_rel (v[0], 0.75, 1e-3, "halton(3) reinitialized k=3 v[0]");
108 gsl_test_rel (v[1], 1.0/9.0, 1e-3, "halton(3) reinitialized k=3 v[1]");
109 gsl_test_rel (v[2], 0.6, 1e-3, "halton(3) reinitialized k=3 v[2]");
112 gsl_test_rel (v[0], 0.125, 1e-3, "halton(3) reinitialized k=4 v[0]");
113 gsl_test_rel (v[1], 4.0/9.0, 1e-3, "halton(3) reinitialized k=4 v[1]");
114 gsl_test_rel (v[2], 0.8, 1e-3, "halton(3) reinitialized k=4 v[2]");
119 void test_reversehalton(void)
124 /* test in dimension 2 */
125 gsl_qrng * g = gsl_qrng_alloc(gsl_qrng_reversehalton, 2);
135 gsl_test_rel (v[0], 3.0/4.0, 1e-3, "reversehalton(2) k=2 v[0]");
136 gsl_test_rel (v[1], 2.0/9.0, 1e-3, "reversehalton(2) k=2 v[1]");
139 gsl_test_rel (v[0], 1.0/8.0, 1e-3, "reversehalton(2) k=2 v[0]");
140 gsl_test_rel (v[1], 8.0/9.0, 1e-3, "reversehalton(2) k=2 v[1]");
145 /* test in dimension 3 */
146 g = gsl_qrng_alloc(gsl_qrng_reversehalton, 3);
150 gsl_test_rel (v[0], 0.75, 1e-3, "reversehalton(3) k=3 v[0]");
151 gsl_test_rel (v[1], 2.0/9.0, 1e-3, "reversehalton(3) k=3 v[1]");
152 gsl_test_rel (v[2], 0.4, 1e-3, "reversehalton(3) k=3 v[2]");
155 gsl_test_rel (v[0], 0.125, 1e-3, "reversehalton(3) k=3 v[0]");
156 gsl_test_rel (v[1], 8.0/9.0, 1e-3, "reversehalton(3) k=3 v[1]");
157 gsl_test_rel (v[2], 0.2, 1e-3, "reversehalton(3) k=3 v[2]");
164 gsl_test_rel (v[0], 0.75, 1e-3, "reversehalton(3) reinitialized k=3 v[0]");
165 gsl_test_rel (v[1], 2.0/9.0, 1e-3, "reversehalton(3) reinitialized k=3 v[1]");
166 gsl_test_rel (v[2], 0.4, 1e-3, "reversehalton(3) reinitialized k=3 v[2]");
169 gsl_test_rel (v[0], 0.125, 1e-3, "reversehalton(3) reinitialized k=3 v[0]");
170 gsl_test_rel (v[1], 8.0/9.0, 1e-3, "reversehalton(3) reinitialized k=3 v[1]");
171 gsl_test_rel (v[2], 0.2, 1e-3, "reversehalton(3) reinitialized k=3 v[2]");
177 void test_nied2(void)
183 /* test in dimension 2 */
184 gsl_qrng * g = gsl_qrng_alloc(gsl_qrng_niederreiter_2, 2);
188 status += ( v[0] != 0.75 || v[1] != 0.25 );
190 status += ( v[0] != 0.25 || v[1] != 0.75 );
194 status += ( v[0] != 0.625 || v[1] != 0.125 );
197 gsl_test (status, "Niederreiter d=2");
201 /* test in dimension 3 */
202 g = gsl_qrng_alloc(gsl_qrng_niederreiter_2, 3);
206 status += ( v[0] != 0.75 || v[1] != 0.25 || v[2] != 0.3125 );
208 status += ( v[0] != 0.25 || v[1] != 0.75 || v[2] != 0.5625 );
212 status += ( v[0] != 0.625 || v[1] != 0.125 || v[2] != 0.6875 );
214 gsl_test (status, "Niederreiter d=3");
222 status += ( v[0] != 0.75 || v[1] != 0.25 || v[2] != 0.3125 );
224 status += ( v[0] != 0.25 || v[1] != 0.75 || v[2] != 0.5625 );
228 status += ( v[0] != 0.625 || v[1] != 0.125 || v[2] != 0.6875 );
232 gsl_test (status, "Niederreiter d=3 (reinitialized)");
239 gsl_ieee_env_setup ();
243 test_reversehalton();
246 exit (gsl_test_summary ());