Copyright 2009 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 math
Floor returns the greatest integer value less than or equal to x. Special cases are: Floor(±0) = ±0 Floor(±Inf) = ±Inf Floor(NaN) = NaN
func ( float64) float64

func ( float64) float64 {
	if  == 0 || IsNaN() || IsInf(, 0) {
		return 
	}
	if  < 0 {
		,  := Modf(-)
		if  != 0.0 {
			 =  + 1
		}
		return -
	}
	,  := Modf()
	return 
}
Ceil returns the least integer value greater than or equal to x. Special cases are: Ceil(±0) = ±0 Ceil(±Inf) = ±Inf Ceil(NaN) = NaN
func ( float64) float64

func ( float64) float64 {
	return -Floor(-)
}
Trunc returns the integer value of x. Special cases are: Trunc(±0) = ±0 Trunc(±Inf) = ±Inf Trunc(NaN) = NaN
func ( float64) float64

func ( float64) float64 {
	if  == 0 || IsNaN() || IsInf(, 0) {
		return 
	}
	,  := Modf()
	return 
}
Round returns the nearest integer, rounding half away from zero. Special cases are: Round(±0) = ±0 Round(±Inf) = ±Inf Round(NaN) = NaN
Round is a faster implementation of: func Round(x float64) float64 { t := Trunc(x) if Abs(x-t) >= 0.5 { return t + Copysign(1, x) } return t }
	 := Float64bits()
	 := uint(>>shift) & mask
Round abs(x) < 1 including denormals.
		 &= signMask // +-0
		if  == bias-1 {
			 |= uvone // +-1
		}
Round any abs(x) >= 1 containing a fractional component [0,1). Numbers with larger exponents are returned unchanged since they must be either an integer, infinity, or NaN.
		const  = 1 << (shift - 1)
		 -= bias
		 +=  >> 
		 &^= fracMask >> 
	}
	return Float64frombits()
}
RoundToEven returns the nearest integer, rounding ties to even. Special cases are: RoundToEven(±0) = ±0 RoundToEven(±Inf) = ±Inf RoundToEven(NaN) = NaN
RoundToEven is a faster implementation of: func RoundToEven(x float64) float64 { t := math.Trunc(x) odd := math.Remainder(t, 2) != 0 if d := math.Abs(x - t); d > 0.5 || (d == 0.5 && odd) { return t + math.Copysign(1, x) } return t }
	 := Float64bits()
	 := uint(>>shift) & mask
Round abs(x) >= 1. - Large numbers without fractional components, infinity, and NaN are unchanged. - Add 0.499.. or 0.5 before truncating depending on whether the truncated number is even or odd (respectively).
		const  = (1 << (shift - 1)) - 1
		 -= bias
		 += ( + (>>(shift-))&1) >> 
		 &^= fracMask >> 
Round 0.5 < abs(x) < 1.
		 = &signMask | uvone // +-1
Round abs(x) <= 0.5 including denormals.
		 &= signMask // +-0
	}
	return Float64frombits()