xref: /freebsd/contrib/bc/tests/bc/rand.txt (revision 81ad6265)
1print "Gathering array...\n"
2
3s = seed
4
5sum = 0
6
7for (i = 0; i < 100; ++i) {
8	a[i] = rand()
9	sum += a[i]
10	b[i] = irand(sum)
11}
12
13print "Testing implementation...\n"
14
15if (maxrand() >= 2^64 - 1) {
16
17	seed = 54.86785590782347282592869373784717814475564948862907968939359536927733440\
18	          901359008180088183692646452982444316148757934570312500000
19
20	ibase = G
21	obase = G
22
23	for (i = 0; i < 64; ++i) {
24		rand()
25	}
26
27	seed = 0.2890120
28
29	rand()
30
31	7B47F409
32	BA1D3330
33	83D2F293
34	BFA4784B
35	CBED606E
36	BFC6A3AD
37	812FFF6D
38	E61F305A
39	F9384B90
40	32DB86FE
41	1DC035F9
42	ED786826
43	3822441D
44	2BA113D7
45	1C5B818B
46	A233956A
47	84DA65E3
48	CED67292
49	B2C0FE06
50	91817130
51
52	55FE8917
53	47E92091
54	486AF299
55	B1E882BB
56	C261E845
57	1A9B90F6
58	7964E884
59	5F36D7A4
60	1EE2052D
61	8519F5D5
62	293D4E4F
63	6D8F99FC
64	C3421509
65	A06CD7C6
66	E43064D3
67	E20F9BF0
68	401B50B7
69	8EF1FF3E
70	E357E2B2
71	A4AEEE37
72
73	2AD4426A
74	9D11BE94
75	7290C556
76	6E6F3787
77	050C2EE3
78	4FD73703
79	C6FF478B
80	4B1CA1E1
81	1654EA91
82	CD08B2F2
83	F7FF3DA8
84	78B1B8DA
85	A100602C
86	9588585F
87	DA028873
88	66B4F376
89	0E6B4B9A
90	48167094
91	0D58CDA0
92	8F7238BE
93
94	F79983F3
95	07E5D324
96	AD78DF52
97	1532BA74
98	1E4899E2
99	6C75DF64
100	171DDC36
101	F2D8D74A
102	24E6D907
103	4780FD32
104	9ADF408C
105	A25544CF
106	EFC6A738
107	1AA23A54
108	C5A13EBB
109	F739EDC9
110	C3A015FA
111	3D5E1511
112	AFC4D7FB
113	3F413B5E
114
115	4660CB73
116	88FC773F
117	D6BED59C
118	63B3B54A
119	D67D3DDE
120	23394F8B
121	13384B44
122	DD8B3ABC
123	FF59A21E
124	3BB16D7E
125	6E01CB68
126	EC34790E
127	B26C42AD
128	D723C830
129	DFD10FCA
130	7E362AA1
131	826FF323
132	CB8F63B5
133	9B3227E5
134	9A61E339
135
136	40BDACF
137}
138else {
139
140	ibase = G
141	obase = G
142
143	86B1DA1D72062B68
144	1304AA46C9853D39
145	A3670E9E0DD50358
146	F9090E529A7DAE00
147	C85B9FD837996F2C
148	606121F8E3919196
149	7CE1C7FF478354BA
150	CBC4AC70E541310E
151	74BE71999EC37F2C
152	B81F9C99A934F1A7
153	120E9901A900C97F
154	0F983BAD4B19F493
155	5934619363660D96
156	D5A7FE2717A2014E
157	6E437241C9E6676E
158	6A75C9DD6329CD29
159	2D9E477683673437
160	51FB0CF3D4405437
161	217BB90392D08B20
162	47C528A018B07A82
163
164	1B4E474C418C835E
165	BDB2BDA74A119ED6
166	C6DB79D0B9E43493
167	C3CF4834E94A41D1
168	AB8312FC7877C7DC
169	094B108133E8B5EC
170	37CA97AC830113BD
171	EF02D7347F9192BF
172	959517DD9896C53A
173	7A80EB7629EFE9F9
174	AE53C23F2B1CF57C
175	CA605CD189F6D5CD
176	921C2704886A9622
177	B68C9FBF826AF7AA
178	73F8C733124772C3
179	6B57F7E459EFBCDF
180	9DE7696DDB6B8E18
181	02CA67560DC26877
182	A24E353080777DEC
183	4D600156763FD65C
184
185	5CDF9C7E26DD2C38
186	6A32443BBBB16774
187	3D8415FFECFB8B7F
188	3090ED9C475635A3
189	6DBF241361C3E652
190	2CA9EF5A2AD971FC
191	44FBE937A1CF0FFC
192	DB17CF0577CB7853
193	AA3747D98D31B24C
194	5D9A104C5D7F43F7
195	BAE65E3E293B2C7B
196	16A396F0DB4EF984
197	6DD2BACDC4445A05
198	7B7A13D1858E5CA8
199	F73722BCAA52447C
200	31A2C7BBE77CBA00
201	7FC8AF9003BA1ACE
202	5703F11DD3F235EF
203	FA1952267EF836C7
204	BBFA558C9E2D51E2
205
206	3A29661D8145AF36
207	608DEA6358DABD7C
208	9E34E9E53431B447
209	325A05E35EA524EB
210	63A87CCF0C80ABB1
211	8EA183287A46F292
212	E2AA5F119CBF2A08
213	2F3BEB0DE8B730C8
214	4B8006A928CF8F5B
215	57B8BA85069C201C
216	3422D962DDF59474
217	FD744940BA7366A1
218	23D24B06B5DA4F6F
219	AA187C608319D1DC
220	DC60CA6FEA738B8A
221	C9FC61DF96A769FE
222	82E2457708658A20
223	2BECEC9B3E7D93EC
224	1340DAEC04588952
225	F533446AD5C50B1D
226
227	31FD1C7F434A62CE
228	D16DAEDD1F281A39
229	6B5D9648931D7057
230	62FEE3392DBB06D5
231	0358BC87B00DF25A
232	F3C882D22946175D
233	65BA8F11B4516EFE
234	2DA5A96E626DA4FE
235	DCC669F4CD6121F0
236	7A47FAC054319CA2
237	9661CFEE277284C8
238	01E483A14F4EB23A
239	ADDC115507390607
240	5AB47C343BD3B0BD
241	4882FB3A3957B11F
242	615B7C9C3626DD44
243	F79CF49562969219
244	88C32C194EA78D27
245	DA8AFFE1353FF352
246	A7A3C331A64CB146
247
248	A1F53517A7BE0CAA
249
250	ibase = A
251
252	seed = 54.0950779151573258314404657465246373249101452529430389404296875000
253
254	ibase = G
255
256	for (i = 0; i < 64; ++i) {
257		rand()
258	}
259
260	seed = 0.2890120
261
262	rand()
263}
264
265print "Testing array...\n"
266
267ibase = A
268
269seed = s
270
271sum = 0
272
273for (i = 0; i < 100; ++i) {
274	a[i] == rand()
275	sum += a[i]
276	b[i] == irand(sum)
277}
278
279print "Exercising irand()...\n"
280
281scale = 256
282
283pow = (maxrand() + 1) ^ 4
284s = 2^256 + 2^128 + (irand(pow) / pow)
285seed = s
286seed < s
287
288s = -459.125
289seed = s
290seed == -s
291
292irand(0)
293irand(1)
294seed == -s
295irand(maxrand() + 1) <= maxrand()
296
297for (i = 0; i < 200; ++i) {
298	irand(20) < 20
299}
300
301seed = 738
302seed != 738
303
304s = 2398@0625
305seed = s
306seed != s
307
308pow = (maxrand() + 1) ^ 4
309s = 2^2560 + 2^128 + (irand(pow) / pow)
310seed = s
311seed < s
312
313b = 0
314m = maxrand() + 1
315n = m + 1
316
317for (i = 0; !b && i < 100; ++i) {
318	c = irand(n)
319	b = (c != 0 && c != m)
320	if (c >= n) print "irand() result is too large.\n"
321}
322
323b
324