Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,10 @@

var tape = require( 'tape' );
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
var absf = require( '@stdlib/math/base/special/absf' );
var isAlmostSameValue = require( '@stdlib/number/float32/base/assert/is-almost-same-value' );
var incrspace = require( '@stdlib/array/base/incrspace' );
var PINF = require( '@stdlib/constants/float32/pinf' );
var NINF = require( '@stdlib/constants/float32/ninf' );
var EPS = require( '@stdlib/constants/float32/eps' );
var factorial2f = require( './../lib' );


Expand Down Expand Up @@ -76,8 +75,6 @@ tape( 'if provided `NaN`, the function returns `NaN`', function test( t ) {

tape( 'the function evaluates the double factorial', function test( t ) {
var expected;
var delta;
var tol;
var x;
var v;
var i;
Expand All @@ -87,15 +84,9 @@ tape( 'the function evaluates the double factorial', function test( t ) {

for ( i = 0; i < x.length; i++ ) {
v = factorial2f( x[ i ] );
if ( v === expected[ i ] ) {
t.strictEqual( v, expected[ i ], 'returns expected value' );
} else {
delta = absf( v - expected[i] );

// NOTE: We use approximate equality because expected values from SciPy are computed using gamma function approximations instead of iterative single-precision computation.
tol = 2.4 * EPS * absf( expected[i] );
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. v: '+v+'. e: '+expected[i]+'. Δ: '+delta+'. tol: '+tol+'.' );
}

// NOTE: We use approximate equality because expected values from SciPy are computed using gamma function approximations instead of iterative single-precision computation.
t.strictEqual( isAlmostSameValue( v, expected[ i ], 3 ), true, 'returns expected value' );
}
t.end();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,10 @@
var resolve = require( 'path' ).resolve;
var tape = require( 'tape' );
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
var absf = require( '@stdlib/math/base/special/absf' );
var isAlmostSameValue = require( '@stdlib/number/float32/base/assert/is-almost-same-value' );
var incrspace = require( '@stdlib/array/base/incrspace' );
var PINF = require( '@stdlib/constants/float32/pinf' );
var NINF = require( '@stdlib/constants/float32/ninf' );
var EPS = require( '@stdlib/constants/float32/eps' );
var tryRequire = require( '@stdlib/utils/try-require' );


Expand Down Expand Up @@ -85,8 +84,6 @@ tape( 'if provided `NaN`, the function returns `NaN`', opts, function test( t )

tape( 'the function evaluates the double factorial', opts, function test( t ) {
var expected;
var delta;
var tol;
var x;
var v;
var i;
Expand All @@ -96,15 +93,9 @@ tape( 'the function evaluates the double factorial', opts, function test( t ) {

for ( i = 0; i < x.length; i++ ) {
v = factorial2f( x[ i ] );
if ( v === expected[ i ] ) {
t.strictEqual( v, expected[ i ], 'returns expected value' );
} else {
delta = absf( v - expected[i] );

// NOTE: We use approximate equality because expected values from SciPy are computed using gamma function approximations instead of iterative single-precision computation.
tol = 2.4 * EPS * absf( expected[i] );
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. v: '+v+'. e: '+expected[i]+'. Δ: '+delta+'. tol: '+tol+'.' );
}

// NOTE: We use approximate equality because expected values from SciPy are computed using gamma function approximations instead of iterative single-precision computation.
t.strictEqual( isAlmostSameValue( v, expected[ i ], 3 ), true, 'returns expected value' );
}
t.end();
});
Expand Down