src/pkg/math/nextafter.go - The Go Programming Language

Golang

Source file src/pkg/math/nextafter.go

     1	// Copyright 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	// Nextafter returns the next representable value after x towards y.
     8	// If x == y, then x is returned.
     9	//
    10	// Special cases are:
    11	//      Nextafter(NaN, y) = NaN
    12	//      Nextafter(x, NaN) = NaN
    13	func Nextafter(x, y float64) (r float64) {
    14		switch {
    15		case IsNaN(x) || IsNaN(y): // special case
    16			r = NaN()
    17		case x == y:
    18			r = x
    19		case x == 0:
    20			r = Copysign(Float64frombits(1), y)
    21		case (y > x) == (x > 0):
    22			r = Float64frombits(Float64bits(x) + 1)
    23		default:
    24			r = Float64frombits(Float64bits(x) - 1)
    25		}
    26		return
    27	}