]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix complex division benchmarks
authorShenghou Ma <minux.ma@gmail.com>
Thu, 10 May 2012 19:09:14 +0000 (03:09 +0800)
committerShenghou Ma <minux.ma@gmail.com>
Thu, 10 May 2012 19:09:14 +0000 (03:09 +0800)
we can't add the division result to n during iteration, because it might
turn n into NaN or Inf.

R=golang-dev, rsc, iant, iant
CC=golang-dev
https://golang.org/cl/6197045

src/pkg/runtime/complex_test.go

index ebe2d59124df25e7f1d2aaf7647488d9d1c5f7a7..f41e6a3570140cf71bbade054b7e5591b3ebc927 100644 (file)
@@ -14,44 +14,54 @@ var result complex128
 func BenchmarkComplex128DivNormal(b *testing.B) {
        d := 15 + 2i
        n := 32 + 3i
+       res := 0i
        for i := 0; i < b.N; i++ {
-               n += n / d
+               n += 0.1i
+               res += n / d
        }
-       result = n
+       result = res
 }
 
 func BenchmarkComplex128DivNisNaN(b *testing.B) {
        d := cmplx.NaN()
        n := 32 + 3i
+       res := 0i
        for i := 0; i < b.N; i++ {
-               n += n / d
+               n += 0.1i
+               res += n / d
        }
-       result = n
+       result = res
 }
 
 func BenchmarkComplex128DivDisNaN(b *testing.B) {
        d := 15 + 2i
        n := cmplx.NaN()
+       res := 0i
        for i := 0; i < b.N; i++ {
-               n += n / d
+               d += 0.1i
+               res += n / d
        }
-       result = n
+       result = res
 }
 
 func BenchmarkComplex128DivNisInf(b *testing.B) {
        d := 15 + 2i
        n := cmplx.Inf()
+       res := 0i
        for i := 0; i < b.N; i++ {
-               n += n / d
+               d += 0.1i
+               res += n / d
        }
-       result = n
+       result = res
 }
 
 func BenchmarkComplex128DivDisInf(b *testing.B) {
        d := cmplx.Inf()
        n := 32 + 3i
+       res := 0i
        for i := 0; i < b.N; i++ {
-               n += n / d
+               n += 0.1i
+               res += n / d
        }
-       result = n
+       result = res
 }