Skip to content

Commit fd88265

Browse files
Arjan-Pkgryte
andauthored
test: migrate math/base/special/log1p to ULP difference testing
PR-URL: #13744 Co-authored-by: Athan Reines <kgryte@gmail.com> Reviewed-by: Athan Reines <kgryte@gmail.com> Signed-off-by: Athan Reines <kgryte@gmail.com> Ref: #11352
1 parent f71616b commit fd88265

2 files changed

Lines changed: 64 additions & 114 deletions

File tree

‎lib/node_modules/@stdlib/math/base/special/log1p/test/test.js‎

Lines changed: 32 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@
2323
var tape = require( 'tape' );
2424
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2525
var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );
26-
var abs = require( '@stdlib/math/base/special/abs' );
26+
var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' );
2727
var ln = require( '@stdlib/math/base/special/ln' );
2828
var incrspace = require( '@stdlib/array/base/incrspace' );
2929
var PINF = require( '@stdlib/constants/float64/pinf' );
3030
var NINF = require( '@stdlib/constants/float64/ninf' );
31-
var EPS = require( '@stdlib/constants/float64/eps' );
3231
var log1p = require( './../lib' );
3332

3433

@@ -56,9 +55,7 @@ tape( 'main export is a function', function test( t ) {
5655

5756
tape( 'the function agrees with `ln(x+1)` for most `x`', function test( t ) {
5857
var expected;
59-
var delta;
6058
var val;
61-
var tol;
6259
var x;
6360
var y;
6461
var i;
@@ -68,209 +65,187 @@ tape( 'the function agrees with `ln(x+1)` for most `x`', function test( t ) {
6865
val = x[ i ];
6966
y = log1p( val );
7067
expected = ln( val + 1.0 );
71-
delta = abs( y - expected );
72-
tol = 1.0e-12 * abs( expected );
73-
t.ok( delta <= tol, 'within tolerance. x: ' + val + '. Value: ' + y + '. Expected: ' + expected + '. Tolerance: ' + tol + '.' );
68+
t.strictEqual( isAlmostSameValue( y, expected, 1 ), true, 'returns expected value' );
7469
}
7570
t.end();
7671
});
7772

7873
tape( 'the function accurately computes `ln(x+1)` for negative medium numbers', function test( t ) {
7974
var expected;
80-
var delta;
81-
var tol;
8275
var v;
8376
var x;
8477
var i;
78+
var e;
8579

8680
x = mediumNegative.x;
8781
expected = mediumNegative.expected;
8882

8983
for ( i = 0; i < x.length; i++ ) {
9084
v = log1p( x[ i ] );
91-
delta = abs( v - expected[ i ] );
92-
tol = EPS * abs( expected[ i ] );
93-
t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' );
85+
e = expected[ i ];
86+
t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' );
9487
}
9588
t.end();
9689
});
9790

9891
tape( 'the function accurately computes `ln(x+1)` for positive medium numbers', function test( t ) {
9992
var expected;
100-
var delta;
101-
var tol;
10293
var v;
10394
var x;
10495
var i;
96+
var e;
10597

10698
x = mediumPositive.x;
10799
expected = mediumPositive.expected;
108100

109101
for ( i = 0; i < x.length; i++ ) {
110102
v = log1p( x[ i ] );
111-
delta = abs( v - expected[ i ] );
112-
tol = EPS * abs( expected[ i ] );
113-
t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' );
103+
e = expected[ i ];
104+
t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' );
114105
}
115106
t.end();
116107
});
117108

118109
tape( 'the function accurately computes `ln(x+1)` for negative small numbers', function test( t ) {
119110
var expected;
120-
var delta;
121-
var tol;
122111
var v;
123112
var x;
124113
var i;
114+
var e;
125115

126116
x = smallNegative.x;
127117
expected = smallNegative.expected;
128118

129119
for ( i = 0; i < x.length; i++ ) {
130120
v = log1p( x[ i ] );
131-
delta = abs( v - expected[ i ] );
132-
tol = EPS * abs( expected[ i ] );
133-
t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' );
121+
e = expected[ i ];
122+
t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' );
134123
}
135124
t.end();
136125
});
137126

138127
tape( 'the function accurately computes `ln(x+1)` for positive small numbers', function test( t ) {
139128
var expected;
140-
var delta;
141-
var tol;
142129
var v;
143130
var x;
144131
var i;
132+
var e;
145133

146134
x = smallPositive.x;
147135
expected = smallPositive.expected;
148136

149137
for ( i = 0; i < x.length; i++ ) {
150138
v = log1p( x[ i ] );
151-
delta = abs( v - expected[ i ] );
152-
tol = EPS * abs( expected[ i ] );
153-
t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' );
139+
e = expected[ i ];
140+
t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' );
154141
}
155142
t.end();
156143
});
157144

158145
tape( 'the function accurately computes `ln(x+1)` for negative tiny numbers', function test( t ) {
159146
var expected;
160-
var delta;
161-
var tol;
162147
var v;
163148
var x;
164149
var i;
150+
var e;
165151

166152
x = tinyNegative.x;
167153
expected = tinyNegative.expected;
168154

169155
for ( i = 0; i < x.length; i++ ) {
170156
v = log1p( x[ i ] );
171-
delta = abs( v - expected[ i ] );
172-
tol = EPS * abs( expected[ i ] );
173-
t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' );
157+
e = expected[ i ];
158+
t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' );
174159
}
175160
t.end();
176161
});
177162

178163
tape( 'the function accurately computes `ln(x+1)` for positive tiny numbers', function test( t ) {
179164
var expected;
180-
var delta;
181-
var tol;
182165
var v;
183166
var x;
184167
var i;
168+
var e;
185169

186170
x = tinyPositive.x;
187171
expected = tinyPositive.expected;
188172

189173
for ( i = 0; i < x.length; i++ ) {
190174
v = log1p( x[ i ] );
191-
delta = abs( v - expected[ i ] );
192-
tol = EPS * abs( expected[ i ] );
193-
t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' );
175+
e = expected[ i ];
176+
t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' );
194177
}
195178
t.end();
196179
});
197180

198181
tape( 'the function accurately computes `ln(x+1)` for negative large numbers', function test( t ) {
199182
var expected;
200-
var delta;
201-
var tol;
202183
var v;
203184
var x;
204185
var i;
186+
var e;
205187

206188
x = largeNegative.x;
207189
expected = largeNegative.expected;
208190

209191
for ( i = 0; i < x.length; i++ ) {
210192
v = log1p( x[ i ] );
211-
delta = abs( v - expected[ i ] );
212-
tol = EPS * abs( expected[ i ] );
213-
t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' );
193+
e = expected[ i ];
194+
t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' );
214195
}
215196
t.end();
216197
});
217198

218199
tape( 'the function accurately computes `ln(x+1)` for positive large numbers', function test( t ) {
219200
var expected;
220-
var delta;
221-
var tol;
222201
var v;
223202
var x;
224203
var i;
204+
var e;
225205

226206
x = largePositive.x;
227207
expected = largePositive.expected;
228208

229209
for ( i = 0; i < x.length; i++ ) {
230210
v = log1p( x[ i ] );
231-
delta = abs( v - expected[ i ] );
232-
tol = EPS * abs( expected[ i ] );
233-
t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' );
211+
e = expected[ i ];
212+
t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' );
234213
}
235214
t.end();
236215
});
237216

238217
tape( 'the function accurately computes `ln(x+1)` for positive big numbers', function test( t ) {
239218
var expected;
240-
var delta;
241-
var tol;
242219
var v;
243220
var x;
244221
var i;
222+
var e;
245223

246224
x = bigPositive.x;
247225
expected = bigPositive.expected;
248226

249227
for ( i = 0; i < x.length; i++ ) {
250228
v = log1p( x[ i ] );
251-
delta = abs( v - expected[ i ] );
252-
tol = EPS * abs( expected[ i ] );
253-
t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' );
229+
e = expected[ i ];
230+
t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' );
254231
}
255232
t.end();
256233
});
257234

258235
tape( 'the function accurately computes `ln(x+1)` for positive huge numbers', function test( t ) {
259236
var expected;
260-
var delta;
261-
var tol;
262237
var v;
263238
var x;
264239
var i;
240+
var e;
265241

266242
x = hugePositive.x;
267243
expected = hugePositive.expected;
268244

269245
for ( i = 0; i < x.length; i++ ) {
270246
v = log1p( x[ i ] );
271-
delta = abs( v - expected[ i ] );
272-
tol = EPS * abs( expected[ i ] );
273-
t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' );
247+
e = expected[ i ];
248+
t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' );
274249
}
275250
t.end();
276251
});

0 commit comments

Comments
 (0)