scc

A fork of https://git.simple-cc.org/scc/ for Qute

git clone https://git.8pit.net/scc.git

 1#include <assert.h>
 2#include <stdio.h>
 3#include <stdlib.h>
 4#include <limits.h>
 5
 6/*
 7output:
 8testing
 9test1
10test2
11done
12end:
13*/
14
15#define NR_BINS 64
16#define NR_DOTS 16000
17#define CRITLVL 82.53
18
19static void
20test1(void)
21{
22	int max, min, i, n;
23	float chi, d;
24	static int bins[NR_BINS];
25
26	puts("test1");
27	for (i = 0; i < NR_DOTS; ++i) {
28		n = rand();
29		assert(n >= 0 && n <= RAND_MAX);
30		bins[n & NR_BINS-1]++;
31	}
32
33	chi = 0;
34	for (i = 0; i < NR_BINS; ++i) {
35		d = bins[i] - (float) NR_DOTS / NR_BINS;
36		d *= d;
37		d /= (float) NR_DOTS / NR_BINS;
38		chi += d;
39	}
40
41	assert(chi <= CRITLVL);
42}
43
44#undef NR_DOTS
45
46#define NR_SEEDS 10
47#define NR_DOTS  32
48
49static void
50test2(void)
51{
52	int i, j, dots[NR_SEEDS][NR_DOTS];
53	unsigned seeds[NR_SEEDS];
54
55	puts("test2");
56	for (i = 0; i < NR_SEEDS; i++)
57		seeds[i] = rand();
58
59	for (i = 0; i < NR_SEEDS; i++) {
60		srand(seeds[i]);
61
62		for (j = 0; j < NR_DOTS; ++j)
63			dots[i][j] = rand();
64	}
65
66	for (i = 0; i < NR_SEEDS; i++) {
67		srand(seeds[i]);
68
69		for (j = 0; j < NR_DOTS; ++j)
70			assert(dots[i][j] == rand());
71	}
72}
73
74int
75main(void)
76{
77	puts("testing");
78	test1();
79	test2();
80	puts("done");
81
82	return 0;
83}