Skip to content

Latest commit

 

History

History
146 lines (89 loc) · 3.39 KB

File metadata and controls

146 lines (89 loc) · 3.39 KB

ulpdiff

Compute the number of representable half-precision floating-point values that separate two half-precision floating-point numbers along the real number line.

Usage

var ulpdiff = require( '@stdlib/number/float16/base/ulp-difference' );

ulpdiff( x, y )

Computes the number of representable half-precision floating-point values that separate two half-precision floating-point numbers along the real number line.

var EPS = require( '@stdlib/constants/float16/eps' );

var d = ulpdiff( 1.0, 1.0+EPS );
// returns 1.0

d = ulpdiff( 1.0+EPS, 1.0 );
// returns 1.0

d = ulpdiff( 1.0, 1.0+EPS+EPS );
// returns 2.0

d = ulpdiff( 1.0, NaN );
// returns NaN

d = ulpdiff( NaN, 1.0 );
// returns NaN

d = ulpdiff( NaN, NaN );
// returns NaN

Notes

  • Adjacent half-precision floating-point numbers differ by 1 ulp (unit in the last place).
  • Signed zeros differ only in the sign bit but are considered numerically equal, and thus their ULP difference is 0.

Examples

var EPS = require( '@stdlib/constants/float16/eps' );
var SMALLEST_SUBNORMAL = require( '@stdlib/constants/float16/smallest-subnormal' );
var ulpdiff = require( '@stdlib/number/float16/base/ulp-difference' );

var d = ulpdiff( 1.0, 1.0+EPS );
console.log( d );
// => 1.0

d = ulpdiff( 5.96e-8, 3.97e-7 );
console.log( d );
// => 6.0

d = ulpdiff( 0.0, SMALLEST_SUBNORMAL );
console.log( d );
// => 1.0

d = ulpdiff( 0.0, -0.0 );
console.log( d );
// => 0.0

d = ulpdiff( SMALLEST_SUBNORMAL, -SMALLEST_SUBNORMAL );
console.log( d );
// => 2.0