Function std.math.nextafter
			 Calculates the next representable value after x in the direction of y.
 If y > x, the result will be the next largest floating-point value;
 if y < x, the result will be the next smallest value.
 If x == y, the result is y.
Prototype
T nextafter(T)( T x, T y ) pure nothrow @nogc @safe;
Remarks
 This function is not generally very useful; it's almost always better to use
 the faster functions nextUp() or nextDown() instead.
 The FE_INEXACT and FE_OVERFLOW exceptions will be raised if x is finite and
 the function result is infinite. The FE_INEXACT and FE_UNDERFLOW
 exceptions will be raised if the function value is subnormal, and x is
 not equal to y.
Example
float a = 1; assert(is(typeof(nextafter(a, a)) == float)); assert(nextafter(a, a.infinity) > a); double b = 2; assert(is(typeof(nextafter(b, b)) == double)); assert(nextafter(b, b.infinity) > b); real c = 3; assert(is(typeof(nextafter(c, c)) == real)); assert(nextafter(c, c.infinity) > c); } //real nexttoward(real x, real y) { return core.stdc.math.nexttowardl(x, y); } /******************************************* * Returns the positive difference between x and y. * Returns: * ** x, y fdim(x, y) * x > y x - y * */ real fdim(real x, real y) @safe pure nothrow @nogc { return (x > y) ? x - y : +0.0; x <= y +0.0 
Authors
Walter Bright, Don Clugston, Conversion of CEPHES math library to D by Iain Buclaw