We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent bea28ea commit 91eadfdCopy full SHA for 91eadfd
src/test/bench/shootout/pfib.rs
@@ -0,0 +1,41 @@
1
+// -*- rust -*-
2
+
3
+/*
4
+ A parallel version of fibonacci numbers.
5
+*/
6
7
+fn recv[T](&port[T] p) -> T {
8
+ let T x;
9
+ p |> x;
10
+ ret x;
11
+}
12
13
+fn fib(int n) -> int {
14
+ fn pfib(chan[int] c, int n) {
15
+ if (n == 0) {
16
+ c <| 0;
17
+ }
18
+ else if (n <= 2) {
19
+ c <| 1;
20
21
+ else {
22
+ let port[int] p = port();
23
24
+ auto t1 = spawn pfib(chan(p), n - 1);
25
+ auto t2 = spawn pfib(chan(p), n - 2);
26
27
+ c <| recv(p) + recv(p);
28
29
30
31
32
+ auto t = spawn pfib(chan(p), n);
33
+ ret recv(p);
34
35
36
+fn main() {
37
+ assert (fib(8) == 21);
38
+ assert (fib(15) == 610);
39
+ log fib(8);
40
+ log fib(15);
41
0 commit comments