````// Copyright 2017 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.`

`package runtime`

`import "unsafe"`

`var inf = float64frombits(0x7FF0000000000000)`

`// isNaN reports whether f is an IEEE 754 ``not-a-number'' value.`
`func isNaN(f float64) (is bool) {`
`	// IEEE 754 says that only NaNs satisfy f != f.`
`	return f != f`
`}`

`// isFinite reports whether f is neither NaN nor an infinity.`
`func isFinite(f float64) bool {`
`	return !isNaN(f - f)`
`}`

`// isInf reports whether f is an infinity.`
`func isInf(f float64) bool {`
`	return !isNaN(f) && !isFinite(f)`
`}`

`// Abs returns the absolute value of x.`
`//`
`// Special cases are:`
`//	Abs(±Inf) = +Inf`
`//	Abs(NaN) = NaN`
`func abs(x float64) float64 {`
`	const sign = 1 << 63`
`	return float64frombits(float64bits(x) &^ sign)`
`}`

`// copysign returns a value with the magnitude`
`// of x and the sign of y.`
`func copysign(x, y float64) float64 {`
`	const sign = 1 << 63`
`	return float64frombits(float64bits(x)&^sign | float64bits(y)&sign)`
`}`

`// Float64bits returns the IEEE 754 binary representation of f.`
`func float64bits(f float64) uint64 {`
`	return *(*uint64)(unsafe.Pointer(&f))`
`}`

`// Float64frombits returns the floating point number corresponding`
`// the IEEE 754 binary representation b.`
`func float64frombits(b uint64) float64 {`
`	return *(*float64)(unsafe.Pointer(&b))`
`}`
```