xref: /freebsd/contrib/bc/tests/bc/scripts/rand.bc (revision e17f5b1d)
1#! /usr/bin/bc
2
3define x(x) {
4	seed = x
5	seed@20
6	return seed
7}
8
9define y(x) {
10	auto s
11	seed@20
12	s = x(x)
13	seed@20
14	return s
15}
16
17define void u(x) {
18	seed = x
19	seed@20
20}
21
22define void v(x) {
23	u(x)
24	seed@20
25}
26
27define g(x) {
28	auto s
29	s = irand(x)
30	s < x
31	return seed
32}
33
34define h(x) {
35	auto s
36	s = g(x)
37	s == seed
38	return s
39}
40
41define j(x) {
42	auto s, r
43	seed@20
44	s = seed
45	r = rand()
46	seed = x
47	s != seed
48	return rand()
49}
50
51define k(x) {
52	auto s, r
53	s = seed
54	seed@20
55	r = j(x)
56	s != seed
57	seed = x
58	rand() == r
59	return r
60}
61
62define m(*a[]) {
63	auto i
64	seed = seed
65	for (i = 0; i < 100; ++i) {
66		a[i] = rand()
67	}
68	return seed
69}
70
71v(50.5)
72seed@20
73
74s = y(75.25)
75s@20
76seed@20
77
78r = rand()
79i = irand(r)
80
81i < r
82
83s = h(maxrand() ^ 4)
84s == seed
85
86seed = 2398.0625
87r = k(38.45)
88seed = 38.45
89r == rand()
90
91s = m(a[])
92
93for (i = 0; i < 100; ++i) {
94	rand() == a[i]
95}
96
97s == seed
98