go issue27718 源码

  • 2022-07-15
  • 浏览 (849)

golang issue27718 代码

文件路径:/test/fixedbugs/issue27718.go

// run

// Copyright 2018 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.

// (-0)+0 should be 0, not -0.

package main

//go:noinline
func add64(x float64) float64 {
	return x + 0
}

func testAdd64() {
	var zero float64
	inf := 1.0 / zero
	negZero := -1 / inf
	if 1/add64(negZero) != inf {
		panic("negZero+0 != posZero (64 bit)")
	}
}

//go:noinline
func sub64(x float64) float64 {
	return x - 0
}

func testSub64() {
	var zero float64
	inf := 1.0 / zero
	negZero := -1 / inf
	if 1/sub64(negZero) != -inf {
		panic("negZero-0 != negZero (64 bit)")
	}
}

//go:noinline
func neg64(x float64) float64 {
	return -x
}

func testNeg64() {
	var zero float64
	inf := 1.0 / zero
	negZero := -1 / inf
	if 1/neg64(negZero) != inf {
		panic("-negZero != posZero (64 bit)")
	}
}

//go:noinline
func add32(x float32) float32 {
	return x + 0
}

func testAdd32() {
	var zero float32
	inf := 1.0 / zero
	negZero := -1 / inf
	if 1/add32(negZero) != inf {
		panic("negZero+0 != posZero (32 bit)")
	}
}

//go:noinline
func sub32(x float32) float32 {
	return x - 0
}

func testSub32() {
	var zero float32
	inf := 1.0 / zero
	negZero := -1 / inf
	if 1/sub32(negZero) != -inf {
		panic("negZero-0 != negZero (32 bit)")
	}
}

//go:noinline
func neg32(x float32) float32 {
	return -x
}

func testNeg32() {
	var zero float32
	inf := 1.0 / zero
	negZero := -1 / inf
	if 1/neg32(negZero) != inf {
		panic("-negZero != posZero (32 bit)")
	}
}

func main() {
	testAdd64()
	testSub64()
	testNeg64()
	testAdd32()
	testSub32()
	testNeg32()
}

相关信息

go 源码目录

相关文章

go bug000 源码

go bug002 源码

go bug003 源码

go bug004 源码

go bug005 源码

go bug006 源码

go bug007 源码

go bug008 源码

go bug009 源码

go bug010 源码

0  赞