Home | History | Annotate | Download | only in math
      1 // Copyright 2009-2010 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 package math
      6 
      7 // Floor returns the greatest integer value less than or equal to x.
      8 //
      9 // Special cases are:
     10 //	Floor(0) = 0
     11 //	Floor(Inf) = Inf
     12 //	Floor(NaN) = NaN
     13 func Floor(x float64) float64
     14 
     15 func floor(x float64) float64 {
     16 	if x == 0 || IsNaN(x) || IsInf(x, 0) {
     17 		return x
     18 	}
     19 	if x < 0 {
     20 		d, fract := Modf(-x)
     21 		if fract != 0.0 {
     22 			d = d + 1
     23 		}
     24 		return -d
     25 	}
     26 	d, _ := Modf(x)
     27 	return d
     28 }
     29 
     30 // Ceil returns the least integer value greater than or equal to x.
     31 //
     32 // Special cases are:
     33 //	Ceil(0) = 0
     34 //	Ceil(Inf) = Inf
     35 //	Ceil(NaN) = NaN
     36 func Ceil(x float64) float64
     37 
     38 func ceil(x float64) float64 {
     39 	return -Floor(-x)
     40 }
     41 
     42 // Trunc returns the integer value of x.
     43 //
     44 // Special cases are:
     45 //	Trunc(0) = 0
     46 //	Trunc(Inf) = Inf
     47 //	Trunc(NaN) = NaN
     48 func Trunc(x float64) float64
     49 
     50 func trunc(x float64) float64 {
     51 	if x == 0 || IsNaN(x) || IsInf(x, 0) {
     52 		return x
     53 	}
     54 	d, _ := Modf(x)
     55 	return d
     56 }
     57