summaryrefslogtreecommitdiff
path: root/test/bench
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2012-05-30 14:40:59 -0400
committerRuss Cox <rsc@golang.org>2012-05-30 14:40:59 -0400
commita4cbf1c330d5431d3f8d865f39c6398e895d94c7 (patch)
treeb1853ee5d248cbf4b74cd4e980743b08232b7c76 /test/bench
parent83c5c385a18c4813a3ceccbb0b6f47d268034e19 (diff)
downloadgo-a4cbf1c330d5431d3f8d865f39c6398e895d94c7.tar.gz
shootout: make mandelbrot.go more like mandelbrot.c
Surprise! The C code is using floating point values for its counters. Its off the critical path, but the Go code and C code are supposed to be as similar as possible to make comparisons meaningful. It doesn't have a significant effect. R=golang-dev, r CC=golang-dev http://codereview.appspot.com/6260058
Diffstat (limited to 'test/bench')
-rw-r--r--test/bench/shootout/mandelbrot.go16
1 files changed, 8 insertions, 8 deletions
diff --git a/test/bench/shootout/mandelbrot.go b/test/bench/shootout/mandelbrot.go
index 1f9fbfd3d..df60343c2 100644
--- a/test/bench/shootout/mandelbrot.go
+++ b/test/bench/shootout/mandelbrot.go
@@ -50,21 +50,21 @@ func main() {
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
- w := *n
- h := *n
+ w := float64(*n)
+ h := float64(*n)
bit_num := 0
byte_acc := byte(0)
const Iter = 50
const Zero float64 = 0
const Limit = 2.0
- fmt.Fprintf(out, "P4\n%d %d\n", w, h)
+ fmt.Fprintf(out, "P4\n%d %d\n", *n, *n)
- for y := 0; y < h; y++ {
- for x := 0; x < w; x++ {
+ for y := 0.0; y < h; y++ {
+ for x := 0.0; x < w; x++ {
Zr, Zi, Tr, Ti := Zero, Zero, Zero, Zero
- Cr := (2*float64(x)/float64(w) - 1.5)
- Ci := (2*float64(y)/float64(h) - 1.0)
+ Cr := (2*x/w - 1.5)
+ Ci := (2*y/h - 1.0)
for i := 0; i < Iter && (Tr+Ti <= Limit*Limit); i++ {
Zi = 2*Zr*Zi + Ci
@@ -85,7 +85,7 @@ func main() {
byte_acc = 0
bit_num = 0
} else if x == w-1 {
- byte_acc <<= uint(8 - w%8)
+ byte_acc <<= uint(8 - uint(*n)%8)
out.WriteByte(byte_acc)
byte_acc = 0
bit_num = 0