corrade-nucleus-nucleons – Blame information for rev 20

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 1 // Concurrent computation of pi.
2 // See http://goo.gl/ZuTZM.
3 //
4 // This demonstrates Go's ability to handle
5 // large numbers of concurrent processes.
6 // It is an unreasonable way to calculate pi.
7 package main
8  
9 import (
10 "fmt"
11 "math"
12 )
13  
14 func main() {
15 fmt.Println(pi(5000))
16 }
17  
18 // pi launches n goroutines to compute an
19 // approximation of pi.
20 func pi(n int) float64 {
21 ch := make(chan float64)
22 for k := 0; k <= n; k++ {
23 go term(ch, float64(k))
24 }
25 f := 0.0
26 for k := 0; k <= n; k++ {
27 f += <-ch
28 }
29 return f
30 }
31  
32 func term(ch chan float64, k float64) {
33 ch <- 4 * math.Pow(-1, k) / (2*k + 1)
34 }