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