time-to-botec/squiggle/node_modules/@stdlib/constants/float32/eps/README.md
NunoSempere b6addc7f05 feat: add the node modules
Necessary in order to clearly see the squiggle hotwiring.
2022-12-03 12:44:49 +00:00

3.0 KiB

Epsilon

Difference between one and the smallest value greater than one that can be represented as a single-precision floating-point number.

Epsilon is defined as

Epsilon for a single-precision floating-point number.

where b is the radix (base) and p is the precision (number of radix bits in the significand). For single-precision floating-point numbers, b is 2 and p is 24.

Usage

var FLOAT32_EPSILON = require( '@stdlib/constants/float32/eps' );

FLOAT32_EPSILON

Difference between one and the smallest value greater than one that can be represented as a single-precision floating-point number.

var bool = ( FLOAT32_EPSILON === 1.1920928955078125e-7 );
// returns true

Examples

var abs = require( '@stdlib/math/base/special/abs' );
var max = require( '@stdlib/math/base/special/max' );
var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
var randu = require( '@stdlib/random/base/randu' );
var FLOAT32_EPSILON = require( '@stdlib/constants/float32/eps' );

var bool;
var a;
var b;
var i;

function isApprox( a, b ) {
    var delta;
    var tol;

    delta = float64ToFloat32( abs( a - b ) );
    tol = float64ToFloat32( FLOAT32_EPSILON * max( abs( a ), abs( b ) ) );

    return ( delta <= tol );
}

for ( i = 0; i < 100; i++ ) {
    a = float64ToFloat32( randu()*10.0 );
    b = float64ToFloat32( a + (randu()*2.0e-6) - 1.0e-6 );
    bool = isApprox( a, b );
    console.log( '%d %s approximately equal to %d', a, ( bool ) ? 'is' : 'is not', b );
}