|
23 | 23 | var tape = require( 'tape' ); |
24 | 24 | var isnan = require( '@stdlib/math/base/assert/is-nan' ); |
25 | 25 | var abs = require( '@stdlib/math/base/special/abs' ); |
26 | | -var EPS = require( '@stdlib/constants/float64/eps' ); |
| 26 | +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); |
27 | 27 | var betainc = require( './../lib' ); |
28 | 28 |
|
29 | 29 |
|
@@ -71,83 +71,83 @@ tape( 'the function returns `NaN` negative `a` or `b`', function test( t ) { |
71 | 71 |
|
72 | 72 | tape( 'the function evaluates the lower regularized incomplete beta function', function test( t ) { |
73 | 73 | var expected; |
74 | | - var delta; |
75 | | - var tol; |
76 | 74 | var i; |
77 | 75 | var y; |
78 | 76 |
|
79 | 77 | expected = lowerRegularized; |
80 | 78 | for ( i = 0; i < x.length; i++ ) { |
81 | 79 | y = betainc( x[i], a[i], b[i] ); |
82 | | - if ( y === expected[i] ) { |
83 | | - t.strictEqual( y, expected[i], 'x: '+x[i]+', y: '+y+'. a: '+a[i]+'. b: '+b[i]+', expected: '+expected[i] ); |
| 80 | + if ( isnan( expected[ i ] ) ) { |
| 81 | + t.strictEqual( isnan( y ), true, 'returns expected value' ); |
| 82 | + } else if ( expected[ i ] === 0.0 ) { |
| 83 | + t.strictEqual( y, 0.0, 'returns expected value' ); |
| 84 | + } else if ( abs( expected[ i ] ) < 1e-300 ) { |
| 85 | + t.ok( abs( y ) < 1e-300, 'returns expected value' ); |
84 | 86 | } else { |
85 | | - delta = abs( y - expected[ i ] ); |
86 | | - tol = 50.0 * EPS * abs( expected[ i ] ); |
87 | | - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. a: '+a[i]+'. b: '+b[i]+'. y: '+y+'. E: '+expected[i]+'. Δ: '+delta+'. tol: '+tol ); |
| 87 | + t.strictEqual(isAlmostSameValue( y, expected[ i ], 120 ), true, 'returns expected value'); |
88 | 88 | } |
89 | 89 | } |
90 | 90 | t.end(); |
91 | 91 | }); |
92 | 92 |
|
93 | 93 | tape( 'the function evaluates the lower unregularized incomplete beta function', function test( t ) { |
94 | 94 | var expected; |
95 | | - var delta; |
96 | | - var tol; |
97 | 95 | var i; |
98 | 96 | var y; |
99 | 97 |
|
100 | 98 | expected = lowerUnregularized; |
101 | 99 | for ( i = 0; i < x.length; i++ ) { |
102 | 100 | y = betainc( x[i], a[i], b[i], false ); |
103 | | - if ( y === expected[i] ) { |
104 | | - t.strictEqual( y, expected[i], 'x: '+x[i]+', y: '+y+'. a: '+a[i]+'. b: '+b[i]+', expected: '+expected[i] ); |
| 101 | + if ( isnan( expected[ i ] ) ) { |
| 102 | + t.strictEqual( isnan( y ), true, 'returns expected value' ); |
| 103 | + } else if ( abs( expected[ i ] ) < 1e-300 ) { |
| 104 | + t.ok( abs( y ) < 1e-300, 'returns expected value' ); |
| 105 | + } else if ( expected[ i ] === Infinity || expected[ i ] === -Infinity ) { |
| 106 | + t.strictEqual( y, expected[ i ], 'returns expected value' ); |
105 | 107 | } else { |
106 | | - delta = abs( y - expected[ i ] ); |
107 | | - tol = 80.0 * EPS * abs( expected[ i ] ); |
108 | | - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. a: '+a[i]+'. b: '+b[i]+'. y: '+y+'. E: '+expected[i]+'. Δ: '+delta+'. tol: '+tol ); |
| 108 | + t.strictEqual(isAlmostSameValue( y, expected[ i ], 128 ), true, 'returns expected value'); |
109 | 109 | } |
110 | 110 | } |
111 | 111 | t.end(); |
112 | 112 | }); |
113 | 113 |
|
114 | 114 | tape( 'the function evaluates the upper regularized incomplete beta function', function test( t ) { |
115 | 115 | var expected; |
116 | | - var delta; |
117 | | - var tol; |
118 | 116 | var i; |
119 | 117 | var y; |
120 | 118 |
|
121 | 119 | expected = upperRegularized; |
122 | 120 | for ( i = 0; i < x.length; i++ ) { |
123 | 121 | y = betainc( x[i], a[i], b[i], true, true ); |
124 | | - if ( y === expected[i] ) { |
125 | | - t.strictEqual( y, expected[i], 'x: '+x[i]+', y: '+y+'. a: '+a[i]+'. b: '+b[i]+', expected: '+expected[i] ); |
| 122 | + if ( isnan( expected[ i ] ) ) { |
| 123 | + t.strictEqual( isnan( y ), true, 'returns expected value' ); |
| 124 | + } else if ( abs( expected[ i ] ) < 1e-300 ) { |
| 125 | + t.ok( abs( y ) < 1e-300, 'returns expected value' ); |
| 126 | + } else if ( expected[ i ] === Infinity || expected[ i ] === -Infinity ) { |
| 127 | + t.strictEqual( y, expected[ i ], 'returns expected value' ); |
126 | 128 | } else { |
127 | | - delta = abs( y - expected[ i ] ); |
128 | | - tol = 50.0 * EPS * abs( expected[ i ] ); |
129 | | - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. a: '+a[i]+'. b: '+b[i]+'. y: '+y+'. E: '+expected[i]+'. Δ: '+delta+'. tol: '+tol ); |
| 129 | + t.strictEqual(isAlmostSameValue( y, expected[ i ], 80 ), true, 'returns expected value'); |
130 | 130 | } |
131 | 131 | } |
132 | 132 | t.end(); |
133 | 133 | }); |
134 | 134 |
|
135 | 135 | tape( 'the function evaluates the upper unregularized incomplete beta function', function test( t ) { |
136 | 136 | var expected; |
137 | | - var delta; |
138 | | - var tol; |
139 | 137 | var i; |
140 | 138 | var y; |
141 | 139 |
|
142 | 140 | expected = upperUnregularized; |
143 | 141 | for ( i = 0; i < x.length; i++ ) { |
144 | 142 | y = betainc( x[i], a[i], b[i], false, true ); |
145 | | - if ( y === expected[i] ) { |
146 | | - t.strictEqual( y, expected[i], 'x: '+x[i]+', y: '+y+'. a: '+a[i]+'. b: '+b[i]+', expected: '+expected[i] ); |
| 143 | + if ( isnan( expected[ i ] ) ) { |
| 144 | + t.strictEqual( isnan( y ), true, 'returns expected value' ); |
| 145 | + } else if ( abs( expected[ i ] ) < 1e-300 ) { |
| 146 | + t.ok( abs( y ) < 1e-300, 'returns expected value' ); |
| 147 | + } else if ( expected[ i ] === Infinity || expected[ i ] === -Infinity ) { |
| 148 | + t.strictEqual( y, expected[ i ], 'returns expected value' ); |
147 | 149 | } else { |
148 | | - delta = abs( y - expected[ i ] ); |
149 | | - tol = 80.0 * EPS * abs( expected[ i ] ); |
150 | | - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. a: '+a[i]+'. b: '+b[i]+'. y: '+y+'. E: '+expected[i]+'. Δ: '+delta+'. tol: '+tol ); |
| 150 | + t.strictEqual(isAlmostSameValue( y, expected[ i ], 120 ), true, 'returns expected value'); |
151 | 151 | } |
152 | 152 | } |
153 | 153 | t.end(); |
|
0 commit comments