Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
golang
/
1.22.0
/
test
/
ken
/
Filename :
cplx4.go
back
Copy
// 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 complex numbers,including fmt support. // Used to crash. package main import "fmt" const ( R = 5 I = 6i C1 = R + I // ADD(5,6) ) func want(s, w string) { if s != w { panic(s + " != " + w) } } func doprint(c complex128, w string) { s := fmt.Sprintf("%f", c) want(s, w) } func main() { // constants s := fmt.Sprintf("%f", -C1) want(s, "(-5.000000-6.000000i)") doprint(C1, "(5.000000+6.000000i)") // variables c1 := C1 s = fmt.Sprintf("%f", c1) want(s, "(5.000000+6.000000i)") doprint(c1, "(5.000000+6.000000i)") // 128 c2 := complex128(C1) s = fmt.Sprintf("%G", c2) want(s, "(5+6i)") // real, imag, complex c3 := complex(real(c2)+3, imag(c2)-5) + c2 s = fmt.Sprintf("%G", c3) want(s, "(13+7i)") // compiler used to crash on nested divide c4 := complex(real(c3/2), imag(c3/2)) if c4 != c3/2 { fmt.Printf("BUG: c3 = %G != c4 = %G\n", c3, c4) panic(0) } }