Hi, This is an interesting benchmark:
Given this function: // ImagPowN computes iⁿ = (√-1)ⁿ // // i¹ = i i² = -1 i³ = -i i⁴ = 1 // i⁵ = i i⁶ = -1 i⁷ = -i i⁸ = 1 // i⁹ = i i¹⁰ = -1 i¹¹ = -i i¹² = 1 // func ImagPowN(n int) complex128 { if n == 0 { return 1 } switch n % 4 { case 1: return 1i case 2: return -1 case 3: return -1i } return 1 } And this benchmark test: var ( imagpownRes complex128 ) func BenchmarkImagPowN(b *testing.B) { var res complex128 for i := 0; i < b.N; i++ { for n := 0; n < 200; n++ { res = ImagPowN(n) } } imagpownRes = res } func BenchmarkImagPowNcmplx(b *testing.B) { var res complex128 for i := 0; i < b.N; i++ { for n := 0; n < 200; n++ { res = cmplx.Pow(1i, complex(float64(n), 0)) } } imagpownRes = res } We get this output ( go test -run=XXX -bench=. ): BenchmarkImagPowN-32 3000000 470 ns/op BenchmarkImagPowNcmplx-32 200000 10050 ns/op A 20x speed up... Cheers. Dorival -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.