Skip to content

Commit 2632c9f

Browse files
committed
more bench
1 parent b913cd7 commit 2632c9f

File tree

3 files changed

+753
-0
lines changed

3 files changed

+753
-0
lines changed

wasm/test/fannkuch2.ml

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
(* The Computer Language Benchmarks Game
2+
http://shootout.alioth.debian.org/
3+
4+
contributed by Isaac Gouy, transliterated from Mike Pall's Lua program
5+
*)
6+
7+
let fannkuch n =
8+
let p = Array.make n 0 in
9+
let q = Array.make n 0 in
10+
let s = Array.make n 0 in
11+
let sign = ref 1 in
12+
let maxflips = ref 0 in
13+
let sum = ref 0 in
14+
for i = 0 to n - 1 do
15+
p.(i) <- i;
16+
q.(i) <- i;
17+
s.(i) <- i
18+
done;
19+
while true do
20+
let q0 = ref p.(0) in
21+
if !q0 <> 0
22+
then (
23+
for i = 1 to n - 1 do
24+
q.(i) <- p.(i)
25+
done;
26+
let flips = ref 1 in
27+
while
28+
let qq = q.(!q0) in
29+
if qq = 0
30+
then (
31+
sum := !sum + (!sign * !flips);
32+
if !flips > !maxflips then maxflips := !flips;
33+
false)
34+
else true
35+
do
36+
let qq = q.(!q0) in
37+
q.(!q0) <- !q0;
38+
(if !q0 >= 3
39+
then
40+
let i = ref 1 in
41+
let j = ref (!q0 - 1) in
42+
while
43+
let t = q.(!i) in
44+
q.(!i) <- q.(!j);
45+
q.(!j) <- t;
46+
incr i;
47+
decr j;
48+
!i < !j
49+
do
50+
()
51+
done);
52+
q0 := qq;
53+
incr flips
54+
done);
55+
if !sign = 1
56+
then (
57+
let t = p.(1) in
58+
p.(1) <- p.(0);
59+
p.(0) <- t;
60+
sign := -1)
61+
else
62+
let t = p.(1) in
63+
p.(1) <- p.(2);
64+
p.(2) <- t;
65+
sign := 1;
66+
try
67+
for i = 2 to n - 1 do
68+
let sx = s.(i) in
69+
if sx <> 0
70+
then (
71+
s.(i) <- sx - 1;
72+
raise Exit);
73+
if i = n - 1
74+
then (
75+
if false then Format.eprintf "%d %d@." !sum !maxflips;
76+
exit 0);
77+
s.(i) <- i;
78+
let t = p.(0) in
79+
for j = 0 to i do
80+
p.(j) <- p.(j + 1)
81+
done;
82+
p.(i + 1) <- t
83+
done
84+
with Exit -> ()
85+
done
86+
87+
let n = 10
88+
89+
let pf = fannkuch n
90+
91+
(*
92+
//print(pf[0] + "\n" + "Pfannkuchen(" + n + ") = " + pf[1]);
93+
*)

0 commit comments

Comments
 (0)