// 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 } }