diff options
Diffstat (limited to 'test/ken/cplx3.go')
-rw-r--r-- | test/ken/cplx3.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/test/ken/cplx3.go b/test/ken/cplx3.go new file mode 100644 index 0000000..be0b864 --- /dev/null +++ b/test/ken/cplx3.go @@ -0,0 +1,54 @@ +// run + +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Test composition, decomposition, and reflection on complex numbers. + +package main + +import "unsafe" +import "reflect" + +const ( + R = 5 + I = 6i + + C1 = R + I // ADD(5,6) +) + +func main() { + c0 := C1 + c0 = (c0 + c0 + c0) / (c0 + c0 + 3i) + r, i := real(c0), imag(c0) + d := r - 1.292308 + if d < 0 { + d = - d + } + if d > 1e-6 { + println(r, "!= 1.292308") + panic(0) + } + d = i + 0.1384615 + if d < 0 { + d = - d + } + if d > 1e-6 { + println(i, "!= -0.1384615") + panic(0) + } + + c := *(*complex128)(unsafe.Pointer(&c0)) + if c != c0 { + println(c, "!=", c) + panic(0) + } + + var a interface{} + switch c := reflect.ValueOf(a); c.Kind() { + case reflect.Complex64, reflect.Complex128: + v := c.Complex() + _, _ = complex128(v), true + } +} |