|  | // run | 
|  |  | 
|  | // Copyright 2015 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. | 
|  |  | 
|  | // Issue 12577: Test that there are no -0 floating-point constants. | 
|  |  | 
|  | package main | 
|  |  | 
|  | import "math" | 
|  |  | 
|  | const ( | 
|  | z0 = 0.0 | 
|  | z1 = -0.0 | 
|  | z2 = -z0 | 
|  | z3 = -z2 | 
|  | ) | 
|  |  | 
|  | var ( | 
|  | x0 float32 = z0 | 
|  | x1 float32 = z1 | 
|  | x2 float32 = z2 | 
|  | x3 float32 = z3 | 
|  |  | 
|  | y0 float64 = z0 | 
|  | y1 float64 = z1 | 
|  | y2 float64 = z2 | 
|  | y3 float64 = z3 | 
|  | ) | 
|  |  | 
|  | func test32(f float32) { | 
|  | if f != 0 || math.Signbit(float64(f)) { | 
|  | println("BUG: got", f, "want 0.0") | 
|  | return | 
|  | } | 
|  | } | 
|  |  | 
|  | func test64(f float64) { | 
|  | if f != 0 || math.Signbit(f) { | 
|  | println("BUG: got", f, "want 0.0") | 
|  | return | 
|  | } | 
|  | } | 
|  |  | 
|  | func main() { | 
|  | if f := -x0; f != 0 || !math.Signbit(float64(f)) { | 
|  | println("BUG: got", f, "want -0.0") | 
|  | } | 
|  |  | 
|  | test32(-0.0) | 
|  | test32(x0) | 
|  | test32(x1) | 
|  | test32(x2) | 
|  | test32(x3) | 
|  |  | 
|  | if f := -y0; f != 0 || !math.Signbit(f) { | 
|  | println("BUG: got", f, "want -0.0") | 
|  | } | 
|  |  | 
|  | test64(-0.0) | 
|  | test64(y0) | 
|  | test64(y1) | 
|  | test64(y2) | 
|  | test64(y3) | 
|  | } |