A PHP library that provides a port of Java's Math.nextAfter() family of functions.
This library implements IEEE 754 floating-point manipulation functions that return the next representable floating-point number in a given direction:
nextAfter($x, $y)- Returns the adjacent float in the direction of another valuenextUp($x)- Returns the next float toward positive infinitynextDown($x)- Returns the next float toward negative infinity
- PHP 8.3 or higher
- Little-endian 64-bit integers
- IEEE 754 double-precision floats (binary64)
The library performs runtime assertions to verify these constraints are met on the current system.
$ composer require nsfisis/next-afteruse Nsfisis\NextAfter\NextAfter;
// Get the next representable float after 1.0.
$next = NextAfter::nextAfter(1.0, 2.0); // => 1.0000000000000002
// Get the next float toward positive infinity.
$up = NextAfter::nextUp(1.0); // => 1.0000000000000002
// Get the next float toward negative infinity.
$down = NextAfter::nextDown(1.0); // => 0.9999999999999999Returns the floating-point number adjacent to $x in the direction of $y. If $x equals y, returns y.
- If either argument is NaN, the result is NaN
- If both arguments equal,
$yis returned as it is - If
$xisminValue()and$yis greater than$x, the result is positive zero - If
$xis-minValue()and$yis less than$x, the result is negative zero - If
$xis infinity and$yis not,PHP_FLOAT_MAXis returned - If
$xis negative infinity and$yis not,-PHP_FLOAT_MAXis returned - If
$xisPHP_FLOAT_MAXand$yis infinity, infinity is returned - If
$xis-PHP_FLOAT_MAXand$yis negative infinity, negative infinity is returned
Returns the floating-point number adjacent to $x in the direction of positive infinity.
This is semantically equivalent to nextAfter($x, INF).
- If
$xis NaN, the result is NaN - If
$xis positive infinity, the result is positive infinity - If
$xis zero, the result isminValue() - If
$xis-minValue(), the result is negative zero - If
$xisPHP_FLOAT_MAX, infinity is returned
Returns the floating-point number adjacent to $x in the direction of negative infinity.
This is semantically equivalent to nextAfter($x, -INF).
- If
$xis NaN, the result is NaN - If
$xis negative infinity, the result is negative infinity - If
$xis zero, the result is-minValue() - If
$xisminValue(), the result is positive zero - If
$xis-PHP_FLOAT_MAX, negative infinity is returned
Returns the minimum representable non-zero floating-point number. Note that this is a subnormal number and is not the same as PHP_FLOAT_MIN, which is the smallest normal number.
See the LICENSE file.
This library is a PHP port of Java's java.lang.Math.nextAfter(), nextUp(), and nextDown() methods.
Reference: Java Math Documentation