stattest.cc (9047:cf9fb00b6aad) stattest.cc (10055:6153b582c9b5)
1/*
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
9 * redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution;
12 * neither the name of the copyright holders nor the names of its
13 * contributors may be used to endorse or promote products derived from
14 * this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * Authors: Nathan Binkert
29 */
30
31#include <iomanip>
32#include <iostream>
33#include <string>
34
35#include "base/cprintf.hh"
36#include "base/misc.hh"
37#include "base/statistics.hh"
38#include "base/types.hh"
39#include "sim/core.hh"
40#include "sim/stat_control.hh"
41
42// override the default main() code for this unittest
43const char *m5MainCommands[] = {
44 "import m5.stattestmain",
45 "m5.stattestmain.main()",
46 0 // sentinel is required
47};
48
49using namespace std;
50using namespace Stats;
51
1/*
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
9 * redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution;
12 * neither the name of the copyright holders nor the names of its
13 * contributors may be used to endorse or promote products derived from
14 * this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * Authors: Nathan Binkert
29 */
30
31#include <iomanip>
32#include <iostream>
33#include <string>
34
35#include "base/cprintf.hh"
36#include "base/misc.hh"
37#include "base/statistics.hh"
38#include "base/types.hh"
39#include "sim/core.hh"
40#include "sim/stat_control.hh"
41
42// override the default main() code for this unittest
43const char *m5MainCommands[] = {
44 "import m5.stattestmain",
45 "m5.stattestmain.main()",
46 0 // sentinel is required
47};
48
49using namespace std;
50using namespace Stats;
51
52double testfunc();
53struct StatTest;
54StatTest & __stattest();
55void stattest_init();
56void stattest_run();
57
58
52double
53testfunc()
54{
55 return 9.8;
56}
57
58class TestClass {
59 public:
60 double operator()() { return 9.7; }
61};
62
63struct StatTest
64{
65 Scalar s1;
66 Scalar s2;
67 Average s3;
68 Scalar s4;
69 Vector s5;
70 Distribution s6;
71 Vector s7;
72 AverageVector s8;
73 StandardDeviation s9;
74 AverageDeviation s10;
75 Scalar s11;
76 Distribution s12;
77 VectorDistribution s13;
78 VectorStandardDeviation s14;
79 VectorAverageDeviation s15;
80 Vector2d s16;
81 Value s17;
82 Value s18;
83 Histogram h01;
84 Histogram h02;
85 Histogram h03;
86 Histogram h04;
87 Histogram h05;
88 Histogram h06;
89 Histogram h07;
90 Histogram h08;
91 Histogram h09;
92 Histogram h10;
93 Histogram h11;
94 Histogram h12;
95 SparseHistogram sh1;
96
97 Vector s19;
98 Vector s20;
99
100 Formula f1;
101 Formula f2;
102 Formula f3;
103 Formula f4;
104 Formula f5;
105 Formula f6;
106
107 void run();
108 void init();
109};
110
111StatTest &
112__stattest()
113{
114 static StatTest st;
115 return st;
116}
117
118void
119stattest_init()
120{
121 __stattest().init();
122}
123
124void
125stattest_run()
126{
127 __stattest().run();
128}
129
130void
131StatTest::init()
132{
59double
60testfunc()
61{
62 return 9.8;
63}
64
65class TestClass {
66 public:
67 double operator()() { return 9.7; }
68};
69
70struct StatTest
71{
72 Scalar s1;
73 Scalar s2;
74 Average s3;
75 Scalar s4;
76 Vector s5;
77 Distribution s6;
78 Vector s7;
79 AverageVector s8;
80 StandardDeviation s9;
81 AverageDeviation s10;
82 Scalar s11;
83 Distribution s12;
84 VectorDistribution s13;
85 VectorStandardDeviation s14;
86 VectorAverageDeviation s15;
87 Vector2d s16;
88 Value s17;
89 Value s18;
90 Histogram h01;
91 Histogram h02;
92 Histogram h03;
93 Histogram h04;
94 Histogram h05;
95 Histogram h06;
96 Histogram h07;
97 Histogram h08;
98 Histogram h09;
99 Histogram h10;
100 Histogram h11;
101 Histogram h12;
102 SparseHistogram sh1;
103
104 Vector s19;
105 Vector s20;
106
107 Formula f1;
108 Formula f2;
109 Formula f3;
110 Formula f4;
111 Formula f5;
112 Formula f6;
113
114 void run();
115 void init();
116};
117
118StatTest &
119__stattest()
120{
121 static StatTest st;
122 return st;
123}
124
125void
126stattest_init()
127{
128 __stattest().init();
129}
130
131void
132stattest_run()
133{
134 __stattest().run();
135}
136
137void
138StatTest::init()
139{
140 EventQueue *q = getEventQueue(0);
141 curEventQueue(q);
142
133 cprintf("sizeof(Scalar) = %d\n", sizeof(Scalar));
134 cprintf("sizeof(Vector) = %d\n", sizeof(Vector));
135 cprintf("sizeof(Distribution) = %d\n", sizeof(Distribution));
136
137 s1
138 .name("Stat01")
139 .desc("this is statistic 1")
140 ;
141
142 s2
143 .name("Stat02")
144 .desc("this is statistic 2")
145 .prereq(s11)
146 ;
147
148 s3
149 .name("Stat03")
150 .desc("this is statistic 3")
151 .prereq(f5)
152 ;
153
154 s4
155 .name("Stat04")
156 .desc("this is statistic 4")
157 .prereq(s11)
158 ;
159
160 s5
161 .init(5)
162 .name("Stat05")
163 .desc("this is statistic 5")
164 .prereq(s11)
165 .subname(0, "foo1")
166 .subname(1, "foo2")
167 .subname(2, "foo3")
168 .subname(3, "foo4")
169 .subname(4, "foo5")
170 ;
171
172 s6
173 .init(1, 100, 13)
174 .name("Stat06")
175 .desc("this is statistic 6")
176 .prereq(s11)
177 ;
178
179 s7
180 .init(7)
181 .name("Stat07")
182 .desc("this is statistic 7")
183 .precision(1)
184 .flags(pdf | total)
185 .prereq(s11)
186 ;
187
188 s8
189 .init(10)
190 .name("Stat08")
191 .desc("this is statistic 8")
192 .precision(2)
193 .prereq(s11)
194 .subname(4, "blarg")
195 ;
196
197 s9
198 .name("Stat09")
199 .desc("this is statistic 9")
200 .precision(4)
201 .prereq(s11)
202 ;
203
204 s10
205 .name("Stat10")
206 .desc("this is statistic 10")
207 .prereq(s11)
208 ;
209
210 s12
211 .init(1, 100, 13)
212 .name("Stat12")
213 .desc("this is statistic 12")
214 ;
215
216 s13
217 .init(4, 0, 99, 10)
218 .name("Stat13")
219 .desc("this is statistic 13")
220 ;
221
222 s14
223 .init(9)
224 .name("Stat14")
225 .desc("this is statistic 14")
226 ;
227
228 s15
229 .init(10)
230 .name("Stat15")
231 .desc("this is statistic 15")
232 ;
233
234 s16
235 .init(2, 9)
236 .name("Stat16")
237 .desc("this is statistic 16")
238 .flags(total)
239 .subname(0, "sub0")
240 .subname(1, "sub1")
241 .ysubname(0, "y0")
242 .ysubname(1, "y1")
243 ;
244
245 s17
246 .functor(testfunc)
247 .name("Stat17")
248 .desc("this is stat 17")
249 ;
250
251 TestClass testclass;
252 s18
253 .functor(testclass)
254 .name("Stat18")
255 .desc("this is stat 18")
256 ;
257
258 h01
259 .init(11)
260 .name("Histogram01")
261 .desc("this is histogram 1")
262 ;
263
264 h02
265 .init(10)
266 .name("Histogram02")
267 .desc("this is histogram 2")
268 ;
269
270 h03
271 .init(11)
272 .name("Histogram03")
273 .desc("this is histogram 3")
274 ;
275
276 h04
277 .init(10)
278 .name("Histogram04")
279 .desc("this is histogram 4")
280 ;
281
282 h05
283 .init(11)
284 .name("Histogram05")
285 .desc("this is histogram 5")
286 ;
287
288 h06
289 .init(10)
290 .name("Histogram06")
291 .desc("this is histogram 6")
292 ;
293
294 h07
295 .init(11)
296 .name("Histogram07")
297 .desc("this is histogram 7")
298 ;
299
300 h08
301 .init(10)
302 .name("Histogram08")
303 .desc("this is histogram 8")
304 ;
305
306 h09
307 .init(11)
308 .name("Histogram09")
309 .desc("this is histogram 9")
310 ;
311
312 h10
313 .init(10)
314 .name("Histogram10")
315 .desc("this is histogram 10")
316 ;
317
318 h11
319 .init(11)
320 .name("Histogram11")
321 .desc("this is histogram 11")
322 ;
323
324 h12
325 .init(10)
326 .name("Histogram12")
327 .desc("this is histogram 12")
328 ;
329
330 sh1
331 .init(0)
332 .name("SparseHistogram1")
333 .desc("this is sparse histogram 1")
334 ;
335
336 f1
337 .name("Formula1")
338 .desc("this is formula 1")
339 .prereq(s11)
340 ;
341
342 f2
343 .name("Formula2")
344 .desc("this is formula 2")
345 .prereq(s11)
346 .precision(1)
347 ;
348
349 f3
350 .name("Formula3")
351 .desc("this is formula 3")
352 .prereq(s11)
353 .subname(0, "bar1")
354 .subname(1, "bar2")
355 .subname(2, "bar3")
356 .subname(3, "bar4")
357 .subname(4, "bar5")
358 ;
359
360 f4
361 .name("Formula4")
362 .desc("this is formula 4")
363 ;
364
365 s19
366 .init(2)
367 .name("Stat19")
368 .desc("this is statistic 19 for vector op testing")
369 .flags(total | nozero | nonan)
370 ;
371 s20
372 .init(2)
373 .name("Stat20")
374 .desc("this is statistic 20 for vector op testing")
375 .flags(total | nozero | nonan)
376 ;
377
378 f6
379 .name("vector_op_test_formula")
380 .desc("The total stat should equal 1")
381 .flags(total |nozero |nonan)
382 ;
383
384 f1 = s1 + s2;
385 f2 = (-s1) / (-s2) * (-s3 + ULL(100) + s4);
386 f3 = sum(s5) * s7;
387 f4 += constant(10.0);
388 f4 += s5[3];
389 f5 = constant(1);
390 f6 = s19/s20;
391}
392
393void
394StatTest::run()
395{
396 s16[1][0] = 1;
397 s16[0][1] = 3;
398 s16[0][0] = 2;
399 s16[1][1] = 9;
400 s16[1][1] += 9;
401 s16[1][8] += 8;
402 s16[1][7] += 7;
403 s16[1][6] += 6;
404 s16[1][5] += 5;
405 s16[1][4] += 4;
406
407 s11 = 1;
408 s3 = 9;
409 s8[3] = 9;
410 s15[0].sample(1234);
411 s15[1].sample(1234);
412 s15[2].sample(1234);
413 s15[3].sample(1234);
414 s15[4].sample(1234);
415 s15[5].sample(1234);
416 s15[6].sample(1234);
417 s15[7].sample(1234);
418 s15[8].sample(1234);
419 s15[9].sample(1234);
420
421 s10.sample(1000000000);
143 cprintf("sizeof(Scalar) = %d\n", sizeof(Scalar));
144 cprintf("sizeof(Vector) = %d\n", sizeof(Vector));
145 cprintf("sizeof(Distribution) = %d\n", sizeof(Distribution));
146
147 s1
148 .name("Stat01")
149 .desc("this is statistic 1")
150 ;
151
152 s2
153 .name("Stat02")
154 .desc("this is statistic 2")
155 .prereq(s11)
156 ;
157
158 s3
159 .name("Stat03")
160 .desc("this is statistic 3")
161 .prereq(f5)
162 ;
163
164 s4
165 .name("Stat04")
166 .desc("this is statistic 4")
167 .prereq(s11)
168 ;
169
170 s5
171 .init(5)
172 .name("Stat05")
173 .desc("this is statistic 5")
174 .prereq(s11)
175 .subname(0, "foo1")
176 .subname(1, "foo2")
177 .subname(2, "foo3")
178 .subname(3, "foo4")
179 .subname(4, "foo5")
180 ;
181
182 s6
183 .init(1, 100, 13)
184 .name("Stat06")
185 .desc("this is statistic 6")
186 .prereq(s11)
187 ;
188
189 s7
190 .init(7)
191 .name("Stat07")
192 .desc("this is statistic 7")
193 .precision(1)
194 .flags(pdf | total)
195 .prereq(s11)
196 ;
197
198 s8
199 .init(10)
200 .name("Stat08")
201 .desc("this is statistic 8")
202 .precision(2)
203 .prereq(s11)
204 .subname(4, "blarg")
205 ;
206
207 s9
208 .name("Stat09")
209 .desc("this is statistic 9")
210 .precision(4)
211 .prereq(s11)
212 ;
213
214 s10
215 .name("Stat10")
216 .desc("this is statistic 10")
217 .prereq(s11)
218 ;
219
220 s12
221 .init(1, 100, 13)
222 .name("Stat12")
223 .desc("this is statistic 12")
224 ;
225
226 s13
227 .init(4, 0, 99, 10)
228 .name("Stat13")
229 .desc("this is statistic 13")
230 ;
231
232 s14
233 .init(9)
234 .name("Stat14")
235 .desc("this is statistic 14")
236 ;
237
238 s15
239 .init(10)
240 .name("Stat15")
241 .desc("this is statistic 15")
242 ;
243
244 s16
245 .init(2, 9)
246 .name("Stat16")
247 .desc("this is statistic 16")
248 .flags(total)
249 .subname(0, "sub0")
250 .subname(1, "sub1")
251 .ysubname(0, "y0")
252 .ysubname(1, "y1")
253 ;
254
255 s17
256 .functor(testfunc)
257 .name("Stat17")
258 .desc("this is stat 17")
259 ;
260
261 TestClass testclass;
262 s18
263 .functor(testclass)
264 .name("Stat18")
265 .desc("this is stat 18")
266 ;
267
268 h01
269 .init(11)
270 .name("Histogram01")
271 .desc("this is histogram 1")
272 ;
273
274 h02
275 .init(10)
276 .name("Histogram02")
277 .desc("this is histogram 2")
278 ;
279
280 h03
281 .init(11)
282 .name("Histogram03")
283 .desc("this is histogram 3")
284 ;
285
286 h04
287 .init(10)
288 .name("Histogram04")
289 .desc("this is histogram 4")
290 ;
291
292 h05
293 .init(11)
294 .name("Histogram05")
295 .desc("this is histogram 5")
296 ;
297
298 h06
299 .init(10)
300 .name("Histogram06")
301 .desc("this is histogram 6")
302 ;
303
304 h07
305 .init(11)
306 .name("Histogram07")
307 .desc("this is histogram 7")
308 ;
309
310 h08
311 .init(10)
312 .name("Histogram08")
313 .desc("this is histogram 8")
314 ;
315
316 h09
317 .init(11)
318 .name("Histogram09")
319 .desc("this is histogram 9")
320 ;
321
322 h10
323 .init(10)
324 .name("Histogram10")
325 .desc("this is histogram 10")
326 ;
327
328 h11
329 .init(11)
330 .name("Histogram11")
331 .desc("this is histogram 11")
332 ;
333
334 h12
335 .init(10)
336 .name("Histogram12")
337 .desc("this is histogram 12")
338 ;
339
340 sh1
341 .init(0)
342 .name("SparseHistogram1")
343 .desc("this is sparse histogram 1")
344 ;
345
346 f1
347 .name("Formula1")
348 .desc("this is formula 1")
349 .prereq(s11)
350 ;
351
352 f2
353 .name("Formula2")
354 .desc("this is formula 2")
355 .prereq(s11)
356 .precision(1)
357 ;
358
359 f3
360 .name("Formula3")
361 .desc("this is formula 3")
362 .prereq(s11)
363 .subname(0, "bar1")
364 .subname(1, "bar2")
365 .subname(2, "bar3")
366 .subname(3, "bar4")
367 .subname(4, "bar5")
368 ;
369
370 f4
371 .name("Formula4")
372 .desc("this is formula 4")
373 ;
374
375 s19
376 .init(2)
377 .name("Stat19")
378 .desc("this is statistic 19 for vector op testing")
379 .flags(total | nozero | nonan)
380 ;
381 s20
382 .init(2)
383 .name("Stat20")
384 .desc("this is statistic 20 for vector op testing")
385 .flags(total | nozero | nonan)
386 ;
387
388 f6
389 .name("vector_op_test_formula")
390 .desc("The total stat should equal 1")
391 .flags(total |nozero |nonan)
392 ;
393
394 f1 = s1 + s2;
395 f2 = (-s1) / (-s2) * (-s3 + ULL(100) + s4);
396 f3 = sum(s5) * s7;
397 f4 += constant(10.0);
398 f4 += s5[3];
399 f5 = constant(1);
400 f6 = s19/s20;
401}
402
403void
404StatTest::run()
405{
406 s16[1][0] = 1;
407 s16[0][1] = 3;
408 s16[0][0] = 2;
409 s16[1][1] = 9;
410 s16[1][1] += 9;
411 s16[1][8] += 8;
412 s16[1][7] += 7;
413 s16[1][6] += 6;
414 s16[1][5] += 5;
415 s16[1][4] += 4;
416
417 s11 = 1;
418 s3 = 9;
419 s8[3] = 9;
420 s15[0].sample(1234);
421 s15[1].sample(1234);
422 s15[2].sample(1234);
423 s15[3].sample(1234);
424 s15[4].sample(1234);
425 s15[5].sample(1234);
426 s15[6].sample(1234);
427 s15[7].sample(1234);
428 s15[8].sample(1234);
429 s15[9].sample(1234);
430
431 s10.sample(1000000000);
422 curTick(curTick() + ULL(1000000));
432 curEventQueue()->setCurTick(curTick() + ULL(1000000));
423 s10.sample(100000);
424 s10.sample(100000);
425 s10.sample(100000);
426 s10.sample(100000);
427 s10.sample(100000);
428 s10.sample(100000);
429 s10.sample(100000);
430 s10.sample(100000);
431 s10.sample(100000);
432 s10.sample(100000);
433 s10.sample(100000);
434 s10.sample(100000);
435 s10.sample(100000);
436 s13[0].sample(12);
437 s13[1].sample(29);
438 s13[2].sample(12);
439 s13[3].sample(29);
440 s13[0].sample(42);
441 s13[1].sample(29);
442 s13[2].sample(42);
443 s13[3].sample(32);
444 s13[0].sample(52);
445 s13[1].sample(49);
446 s13[2].sample(42);
447 s13[3].sample(25);
448 s13[0].sample(32);
449 s13[1].sample(49);
450 s13[2].sample(22);
451 s13[3].sample(49);
452 s13[0].sample(62);
453 s13[1].sample(99);
454 s13[2].sample(72);
455 s13[3].sample(23);
456 s13[0].sample(52);
457 s13[1].sample(78);
458 s13[2].sample(69);
459 s13[3].sample(49);
460
461 s14[0].sample(1234);
462 s14[1].sample(4134);
463 s14[4].sample(1213);
464 s14[3].sample(1124);
465 s14[2].sample(1243);
466 s14[7].sample(1244);
467 s14[4].sample(7234);
468 s14[2].sample(9234);
469 s14[3].sample(1764);
470 s14[7].sample(1564);
471 s14[3].sample(3234);
472 s14[1].sample(2234);
473 s14[5].sample(1234);
474 s14[2].sample(4334);
475 s14[2].sample(1234);
476 s14[4].sample(4334);
477 s14[6].sample(1234);
478 s14[8].sample(8734);
479 s14[1].sample(5234);
480 s14[3].sample(8234);
481 s14[7].sample(5234);
482 s14[4].sample(4434);
483 s14[3].sample(7234);
484 s14[2].sample(1934);
485 s14[1].sample(9234);
486 s14[5].sample(5634);
487 s14[3].sample(1264);
488 s14[7].sample(5223);
489 s14[0].sample(1234);
490 s14[0].sample(5434);
491 s14[3].sample(8634);
492 s14[1].sample(1234);
493
494
495 s15[0].sample(1234);
496 s15[1].sample(4134);
433 s10.sample(100000);
434 s10.sample(100000);
435 s10.sample(100000);
436 s10.sample(100000);
437 s10.sample(100000);
438 s10.sample(100000);
439 s10.sample(100000);
440 s10.sample(100000);
441 s10.sample(100000);
442 s10.sample(100000);
443 s10.sample(100000);
444 s10.sample(100000);
445 s10.sample(100000);
446 s13[0].sample(12);
447 s13[1].sample(29);
448 s13[2].sample(12);
449 s13[3].sample(29);
450 s13[0].sample(42);
451 s13[1].sample(29);
452 s13[2].sample(42);
453 s13[3].sample(32);
454 s13[0].sample(52);
455 s13[1].sample(49);
456 s13[2].sample(42);
457 s13[3].sample(25);
458 s13[0].sample(32);
459 s13[1].sample(49);
460 s13[2].sample(22);
461 s13[3].sample(49);
462 s13[0].sample(62);
463 s13[1].sample(99);
464 s13[2].sample(72);
465 s13[3].sample(23);
466 s13[0].sample(52);
467 s13[1].sample(78);
468 s13[2].sample(69);
469 s13[3].sample(49);
470
471 s14[0].sample(1234);
472 s14[1].sample(4134);
473 s14[4].sample(1213);
474 s14[3].sample(1124);
475 s14[2].sample(1243);
476 s14[7].sample(1244);
477 s14[4].sample(7234);
478 s14[2].sample(9234);
479 s14[3].sample(1764);
480 s14[7].sample(1564);
481 s14[3].sample(3234);
482 s14[1].sample(2234);
483 s14[5].sample(1234);
484 s14[2].sample(4334);
485 s14[2].sample(1234);
486 s14[4].sample(4334);
487 s14[6].sample(1234);
488 s14[8].sample(8734);
489 s14[1].sample(5234);
490 s14[3].sample(8234);
491 s14[7].sample(5234);
492 s14[4].sample(4434);
493 s14[3].sample(7234);
494 s14[2].sample(1934);
495 s14[1].sample(9234);
496 s14[5].sample(5634);
497 s14[3].sample(1264);
498 s14[7].sample(5223);
499 s14[0].sample(1234);
500 s14[0].sample(5434);
501 s14[3].sample(8634);
502 s14[1].sample(1234);
503
504
505 s15[0].sample(1234);
506 s15[1].sample(4134);
497 curTick(curTick() + ULL(1000000));
507 curEventQueue()->setCurTick(curTick() + ULL(1000000));
498 s15[4].sample(1213);
508 s15[4].sample(1213);
499 curTick(curTick() + ULL(1000000));
509 curEventQueue()->setCurTick(curTick() + ULL(1000000));
500 s15[3].sample(1124);
510 s15[3].sample(1124);
501 curTick(curTick() + ULL(1000000));
511 curEventQueue()->setCurTick(curTick() + ULL(1000000));
502 s15[2].sample(1243);
512 s15[2].sample(1243);
503 curTick(curTick() + ULL(1000000));
513 curEventQueue()->setCurTick(curTick() + ULL(1000000));
504 s15[7].sample(1244);
514 s15[7].sample(1244);
505 curTick(curTick() + ULL(1000000));
515 curEventQueue()->setCurTick(curTick() + ULL(1000000));
506 s15[4].sample(7234);
507 s15[2].sample(9234);
508 s15[3].sample(1764);
509 s15[7].sample(1564);
510 s15[3].sample(3234);
511 s15[1].sample(2234);
516 s15[4].sample(7234);
517 s15[2].sample(9234);
518 s15[3].sample(1764);
519 s15[7].sample(1564);
520 s15[3].sample(3234);
521 s15[1].sample(2234);
512 curTick(curTick() + ULL(1000000));
522 curEventQueue()->setCurTick(curTick() + ULL(1000000));
513 s15[5].sample(1234);
523 s15[5].sample(1234);
514 curTick(curTick() + ULL(1000000));
524 curEventQueue()->setCurTick(curTick() + ULL(1000000));
515 s15[9].sample(4334);
525 s15[9].sample(4334);
516 curTick(curTick() + ULL(1000000));
526 curEventQueue()->setCurTick(curTick() + ULL(1000000));
517 s15[2].sample(1234);
527 s15[2].sample(1234);
518 curTick(curTick() + ULL(1000000));
528 curEventQueue()->setCurTick(curTick() + ULL(1000000));
519 s15[4].sample(4334);
520 s15[6].sample(1234);
529 s15[4].sample(4334);
530 s15[6].sample(1234);
521 curTick(curTick() + ULL(1000000));
531 curEventQueue()->setCurTick(curTick() + ULL(1000000));
522 s15[8].sample(8734);
532 s15[8].sample(8734);
523 curTick(curTick() + ULL(1000000));
533 curEventQueue()->setCurTick(curTick() + ULL(1000000));
524 s15[1].sample(5234);
534 s15[1].sample(5234);
525 curTick(curTick() + ULL(1000000));
535 curEventQueue()->setCurTick(curTick() + ULL(1000000));
526 s15[3].sample(8234);
536 s15[3].sample(8234);
527 curTick(curTick() + ULL(1000000));
537 curEventQueue()->setCurTick(curTick() + ULL(1000000));
528 s15[7].sample(5234);
529 s15[4].sample(4434);
530 s15[3].sample(7234);
531 s15[2].sample(1934);
532 s15[1].sample(9234);
538 s15[7].sample(5234);
539 s15[4].sample(4434);
540 s15[3].sample(7234);
541 s15[2].sample(1934);
542 s15[1].sample(9234);
533 curTick(curTick() + ULL(1000000));
543 curEventQueue()->setCurTick(curTick() + ULL(1000000));
534 s15[5].sample(5634);
535 s15[3].sample(1264);
536 s15[7].sample(5223);
537 s15[0].sample(1234);
538 s15[0].sample(5434);
539 s15[3].sample(8634);
544 s15[5].sample(5634);
545 s15[3].sample(1264);
546 s15[7].sample(5223);
547 s15[0].sample(1234);
548 s15[0].sample(5434);
549 s15[3].sample(8634);
540 curTick(curTick() + ULL(1000000));
550 curEventQueue()->setCurTick(curTick() + ULL(1000000));
541 s15[1].sample(1234);
542
543 s4 = curTick();
544
545 s8[3] = 99999;
546
547 s3 = 12;
548 s3++;
551 s15[1].sample(1234);
552
553 s4 = curTick();
554
555 s8[3] = 99999;
556
557 s3 = 12;
558 s3++;
549 curTick(curTick() + 9);
559 curEventQueue()->setCurTick(curTick() + 9);
550
551 s1 = 9;
552 s1 += 9;
553 s1 -= 11;
554 s1++;
555 ++s1;
556 s1--;
557 --s1;
558
559 s2 = 9;
560
561 s5[0] += 1;
562 s5[1] += 2;
563 s5[2] += 3;
564 s5[3] += 4;
565 s5[4] += 5;
566
567 s7[0] = 10;
568 s7[1] = 20;
569 s7[2] = 30;
570 s7[3] = 40;
571 s7[4] = 50;
572 s7[5] = 60;
573 s7[6] = 70;
574
575 s6.sample(0);
576 s6.sample(1);
577 s6.sample(2);
578 s6.sample(3);
579 s6.sample(4);
580 s6.sample(5);
581 s6.sample(6);
582 s6.sample(7);
583 s6.sample(8);
584 s6.sample(9);
585
586 s6.sample(10);
587 s6.sample(10);
588 s6.sample(10);
589 s6.sample(10);
590 s6.sample(10);
591 s6.sample(10);
592 s6.sample(10);
593 s6.sample(10);
594 s6.sample(11);
595 s6.sample(19);
596 s6.sample(20);
597 s6.sample(20);
598 s6.sample(21);
599 s6.sample(21);
600 s6.sample(31);
601 s6.sample(98);
602 s6.sample(99);
603 s6.sample(99);
604 s6.sample(99);
605
606 s7[0] = 700;
607 s7[1] = 600;
608 s7[2] = 500;
609 s7[3] = 400;
610 s7[4] = 300;
611 s7[5] = 200;
612 s7[6] = 100;
613
614 s9.sample(100);
615 s9.sample(100);
616 s9.sample(100);
617 s9.sample(100);
618 s9.sample(10);
619 s9.sample(10);
620 s9.sample(10);
621 s9.sample(10);
622 s9.sample(10);
623
560
561 s1 = 9;
562 s1 += 9;
563 s1 -= 11;
564 s1++;
565 ++s1;
566 s1--;
567 --s1;
568
569 s2 = 9;
570
571 s5[0] += 1;
572 s5[1] += 2;
573 s5[2] += 3;
574 s5[3] += 4;
575 s5[4] += 5;
576
577 s7[0] = 10;
578 s7[1] = 20;
579 s7[2] = 30;
580 s7[3] = 40;
581 s7[4] = 50;
582 s7[5] = 60;
583 s7[6] = 70;
584
585 s6.sample(0);
586 s6.sample(1);
587 s6.sample(2);
588 s6.sample(3);
589 s6.sample(4);
590 s6.sample(5);
591 s6.sample(6);
592 s6.sample(7);
593 s6.sample(8);
594 s6.sample(9);
595
596 s6.sample(10);
597 s6.sample(10);
598 s6.sample(10);
599 s6.sample(10);
600 s6.sample(10);
601 s6.sample(10);
602 s6.sample(10);
603 s6.sample(10);
604 s6.sample(11);
605 s6.sample(19);
606 s6.sample(20);
607 s6.sample(20);
608 s6.sample(21);
609 s6.sample(21);
610 s6.sample(31);
611 s6.sample(98);
612 s6.sample(99);
613 s6.sample(99);
614 s6.sample(99);
615
616 s7[0] = 700;
617 s7[1] = 600;
618 s7[2] = 500;
619 s7[3] = 400;
620 s7[4] = 300;
621 s7[5] = 200;
622 s7[6] = 100;
623
624 s9.sample(100);
625 s9.sample(100);
626 s9.sample(100);
627 s9.sample(100);
628 s9.sample(10);
629 s9.sample(10);
630 s9.sample(10);
631 s9.sample(10);
632 s9.sample(10);
633
624 curTick(curTick() + 9);
634 curEventQueue()->setCurTick(curTick() + 9);
625 s4 = curTick();
626 s6.sample(100);
627 s6.sample(100);
628 s6.sample(100);
629 s6.sample(101);
630 s6.sample(102);
631
632 s12.sample(100);
633 for (int i = 0; i < 100; i++) {
634 h01.sample(i);
635 h02.sample(i);
636 }
637
638 for (int i = -100; i < 100; i++) {
639 h03.sample(i);
640 h04.sample(i);
641 }
642
643 for (int i = -100; i < 1000; i++) {
644 h05.sample(i);
645 h06.sample(i);
646 }
647
648 for (int i = 100; i >= -1000; i--) {
649 h07.sample(i);
650 h08.sample(i);
651 }
652
653 for (int i = 0; i <= 1023; i++) {
654 h09.sample(i);
655 h10.sample(i);
656 }
657
658 for (int i = -1024; i <= 1023; i++) {
659 h11.sample(i);
660 h12.sample(i);
661 }
662
663 for (int i = 0; i < 1000; i++) {
664 sh1.sample(random() % 10000);
665 }
666
667 s19[0] = 1;
668 s19[1] = 100000;
669 s20[0] = 100000;
670 s20[1] = 1;
671
672}
635 s4 = curTick();
636 s6.sample(100);
637 s6.sample(100);
638 s6.sample(100);
639 s6.sample(101);
640 s6.sample(102);
641
642 s12.sample(100);
643 for (int i = 0; i < 100; i++) {
644 h01.sample(i);
645 h02.sample(i);
646 }
647
648 for (int i = -100; i < 100; i++) {
649 h03.sample(i);
650 h04.sample(i);
651 }
652
653 for (int i = -100; i < 1000; i++) {
654 h05.sample(i);
655 h06.sample(i);
656 }
657
658 for (int i = 100; i >= -1000; i--) {
659 h07.sample(i);
660 h08.sample(i);
661 }
662
663 for (int i = 0; i <= 1023; i++) {
664 h09.sample(i);
665 h10.sample(i);
666 }
667
668 for (int i = -1024; i <= 1023; i++) {
669 h11.sample(i);
670 h12.sample(i);
671 }
672
673 for (int i = 0; i < 1000; i++) {
674 sh1.sample(random() % 10000);
675 }
676
677 s19[0] = 1;
678 s19[1] = 100000;
679 s20[0] = 100000;
680 s20[1] = 1;
681
682}