From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- libgo/go/math/floor.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 libgo/go/math/floor.go (limited to 'libgo/go/math/floor.go') diff --git a/libgo/go/math/floor.go b/libgo/go/math/floor.go new file mode 100644 index 000000000..b22b94ad6 --- /dev/null +++ b/libgo/go/math/floor.go @@ -0,0 +1,53 @@ +// Copyright 2009-2010 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(+Inf) = +Inf +// Floor(-Inf) = -Inf +// Floor(NaN) = NaN +func Floor(x float64) float64 { + // TODO(rsc): Remove manual inlining of IsNaN, IsInf + // when compiler does it for us + if x == 0 || x != x || x > MaxFloat64 || x < -MaxFloat64 { // x == 0 || IsNaN(x) || IsInf(x, 0) + return x + } + if x < 0 { + d, fract := Modf(-x) + if fract != 0.0 { + d = d + 1 + } + return -d + } + d, _ := Modf(x) + return d +} + +// Ceil returns the least integer value greater than or equal to x. +// +// Special cases are: +// Ceil(+Inf) = +Inf +// Ceil(-Inf) = -Inf +// Ceil(NaN) = NaN +func Ceil(x float64) float64 { return -Floor(-x) } + +// Trunc returns the integer value of x. +// +// Special cases are: +// Trunc(+Inf) = +Inf +// Trunc(-Inf) = -Inf +// Trunc(NaN) = NaN +func Trunc(x float64) float64 { + // TODO(rsc): Remove manual inlining of IsNaN, IsInf + // when compiler does it for us + if x == 0 || x != x || x > MaxFloat64 || x < -MaxFloat64 { // x == 0 || IsNaN(x) || IsInf(x, 0) + return x + } + d, _ := Modf(x) + return d +} -- cgit v1.2.3