summaryrefslogtreecommitdiff
path: root/tests/bc/scripts/rand.bc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bc/scripts/rand.bc')
-rw-r--r--tests/bc/scripts/rand.bc97
1 files changed, 97 insertions, 0 deletions
diff --git a/tests/bc/scripts/rand.bc b/tests/bc/scripts/rand.bc
new file mode 100644
index 0000000000000..54173c7136123
--- /dev/null
+++ b/tests/bc/scripts/rand.bc
@@ -0,0 +1,97 @@
+#! /usr/bin/bc
+
+define x(x) {
+ seed = x
+ seed@20
+ return seed
+}
+
+define y(x) {
+ auto s
+ seed@20
+ s = x(x)
+ seed@20
+ return s
+}
+
+define void u(x) {
+ seed = x
+ seed@20
+}
+
+define void v(x) {
+ u(x)
+ seed@20
+}
+
+define g(x) {
+ auto s
+ s = irand(x)
+ s < x
+ return seed
+}
+
+define h(x) {
+ auto s
+ s = g(x)
+ s == seed
+ return s
+}
+
+define j(x) {
+ auto s, r
+ seed@20
+ s = seed
+ r = rand()
+ seed = x
+ s != seed
+ return rand()
+}
+
+define k(x) {
+ auto s, r
+ s = seed
+ seed@20
+ r = j(x)
+ s != seed
+ seed = x
+ rand() == r
+ return r
+}
+
+define m(*a[]) {
+ auto i
+ seed = seed
+ for (i = 0; i < 100; ++i) {
+ a[i] = rand()
+ }
+ return seed
+}
+
+v(50.5)
+seed@20
+
+s = y(75.25)
+s@20
+seed@20
+
+r = rand()
+i = irand(r)
+
+i < r
+
+s = h(maxrand() ^ 4)
+s == seed
+
+seed = 2398.0625
+r = k(38.45)
+seed = 38.45
+r == rand()
+
+s = m(a[])
+
+for (i = 0; i < 100; ++i) {
+ rand() == a[i]
+}
+
+s == seed