Skip to content

Commit a092ede

Browse files
MANDEep22332kgryte
andauthored
test: migrate math/base/special/binomcoeff to ULP-based testing
PR-URL: #11720 Co-authored-by: Athan Reines <kgryte@gmail.com> Reviewed-by: Athan Reines <kgryte@gmail.com> Ref: #11352
1 parent e7ca25d commit a092ede

1 file changed

Lines changed: 3 additions & 12 deletions

File tree

  • lib/node_modules/@stdlib/math/base/special/binomcoeff/test

lib/node_modules/@stdlib/math/base/special/binomcoeff/test/test.js

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222

2323
var tape = require( 'tape' );
2424
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
25-
var absf = require( '@stdlib/math/base/special/absf' );
26-
var EPS = require( '@stdlib/constants/float32/eps' );
25+
var isAlmostSameValue = require( '@stdlib/number/float32/base/assert/is-almost-same-value' );
2726
var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
2827
var binomcoeff = require( './../lib' );
2928

@@ -54,8 +53,6 @@ tape( 'the function returns `NaN` if provided `NaN` for any parameter', function
5453

5554
tape( 'the function evaluates the binomial coefficient for integers `n` and `k`', function test( t ) {
5655
var expected;
57-
var delta;
58-
var tol;
5956
var n;
6057
var k;
6158
var v;
@@ -67,15 +64,9 @@ tape( 'the function evaluates the binomial coefficient for integers `n` and `k`'
6764
for ( i = 0; i < n.length; i++ ) {
6865
v = binomcoeff( n[ i ], k[ i ] );
6966
expected[ i ] = float64ToFloat32( expected[ i ] );
70-
if ( expected[ i ] === v ) {
71-
t.strictEqual( v, expected[ i ], 'returns expected value' );
72-
continue;
73-
}
74-
delta = absf( v - expected[ i ] );
7567

7668
// NOTE: Exact comparison fails for large values due to single-precision floating-point rounding errors when intermediate results exceed the maximum safe integer for a 32-bit float.
77-
tol = 1.25 * EPS * absf( expected[ i ] );
78-
t.ok( delta <= tol, 'within tolerance. n: ' + n[ i ] + '. k: ' + k[ i ] + '. actual: ' + v + '. expected: ' + expected[ i ] + '. tol: ' + tol + '. Δ: ' + delta + '.' );
69+
t.strictEqual( isAlmostSameValue( v, expected[ i ], 2 ), true, 'returns expected value' );
7970
}
8071
t.end();
8172
});
@@ -93,7 +84,7 @@ tape( 'the function evaluates the binomial coefficient for integers `n` and `k`
9384
for ( i = 0; i < n.length; i++ ) {
9485
v = binomcoeff( n[ i ], k[ i ] );
9586
expected[ i ] = float64ToFloat32( expected[ i ] );
96-
t.strictEqual( v, expected[ i ], 'returns expected value. actual: '+v+'. expected: '+expected[i]+'. n: '+n[i]+'. k: '+k[i]+'.' );
87+
t.strictEqual( v, expected[ i ], 'returns expected value' );
9788
}
9889
t.end();
9990
});

0 commit comments

Comments
 (0)