ROOTPLOIT
Server: LiteSpeed
System: Linux in-mum-web1878.main-hosting.eu 5.14.0-570.21.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 11 07:22:35 EDT 2025 x86_64
User: u435929562 (435929562)
PHP: 7.4.33
Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/golang/1.22.0/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()
}