stdlib/lib/node_modules/@stdlib/assert/is-almost-equal at develop · stdlib-js/stdlib

isAlmostEqual

Test if two arguments are approximately equal within a specified number of ULPs (units in the last place).

Usage

var isAlmostEqual = require( '@stdlib/assert/is-almost-equal' );

isAlmostEqual( a, b, maxULP )

Tests if two arguments are approximately equal within a specified number of ULPs (units in the last place).

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

var bool = isAlmostEqual( 1.0, 1.0+EPS, 1 );
// returns true

bool = isAlmostEqual( '', '', 0 );
// returns true

bool = isAlmostEqual( {}, {}, 1 );
// returns false

The function returns false if either input value is NaN or, in the case of complex numbers, if either the real or imaginary component is NaN.

var Complex128 = require( '@stdlib/complex/float64/ctor' );

var bool = isAlmostEqual( NaN, 1.0, 1 );
// returns false

bool = isAlmostEqual( NaN, NaN, 1 );
// returns false

var z1 = new Complex128( NaN, 3.0 );
var z2 = new Complex128( 1.0, 3.0 );

bool = isAlmostEqual( z1, z2, 1 );
// returns false

z1 = new Complex128( NaN, NaN );
z2 = new Complex128( NaN, NaN );

bool = isAlmostEqual( z1, z2, 1 );
// returns false

The function does not distinguish between -0 and +0, treating them as equal.

var Complex128 = require( '@stdlib/complex/float64/ctor' );

var bool = isAlmostEqual( 0.0, -0.0, 0 );
// returns true

var z1 = new Complex128( 0.0, 0.0 );
var z2 = new Complex128( -0.0, -0.0 );

bool = isAlmostEqual( z1, z2, 0 );
// returns true

Examples

var EPS = require( '@stdlib/constants/float64/eps' );
var Complex128 = require( '@stdlib/complex/float64/ctor' );
var isAlmostEqual = require( '@stdlib/assert/is-almost-equal' );

console.log( isAlmostEqual( true, true, 0 ) );
// => true

console.log( isAlmostEqual( true, false, 1 ) );
// => false

console.log( isAlmostEqual( 'beep', 'beep', 1 ) );
// => true

console.log( isAlmostEqual( 1.0, 1.0+EPS, 1 ) );
// => true

console.log( isAlmostEqual( null, null, 0 ) );
// => true

console.log( isAlmostEqual( 0.0, -0.0, 0 ) );
// => true

console.log( isAlmostEqual( NaN, NaN, 1 ) );
// => false

var z1 = new Complex128( 1.0, 3.0+EPS );
var z2 = new Complex128( 1.0+EPS, 3.0 );
console.log( isAlmostEqual( z1, z2, 1 ) );
// => true

console.log( isAlmostEqual( {}, {}, 1 ) );
// => false

console.log( isAlmostEqual( [], [], 1 ) );
// => false

console.log( isAlmostEqual( isAlmostEqual, isAlmostEqual, 0 ) );
// => true