Skip to content

Commit 309bdf5

Browse files
test: use ulpdiff for floating-point comparisons
PR-URL: #7871 Reviewed-by: Athan Reines <[email protected]>
1 parent 59bb1b1 commit 309bdf5

File tree

2 files changed

+30
-256
lines changed

2 files changed

+30
-256
lines changed

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

Lines changed: 15 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,9 @@
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' );
2625
var f32 = require( '@stdlib/number/float64/base/to-float32' );
26+
var ulpdiff = require( '@stdlib/number/float32/base/ulp-difference' );
2727
var PI = require( '@stdlib/constants/float32/pi' );
28-
var EPS = require( '@stdlib/constants/float32/eps' );
2928
var PINF = require( '@stdlib/constants/float32/pinf' );
3029
var NINF = require( '@stdlib/constants/float32/ninf' );
3130
var isNegativeZerof = require( '@stdlib/math/base/assert/is-negative-zerof' );
@@ -61,8 +60,6 @@ tape( 'main export is a function', function test( t ) {
6160

6261
tape( 'the function computes the tangent (huge negative values)', function test( t ) {
6362
var expected;
64-
var delta;
65-
var tol;
6663
var x;
6764
var y;
6865
var i;
@@ -74,21 +71,13 @@ tape( 'the function computes the tangent (huge negative values)', function test(
7471
x[ i ] = f32( x[ i ] );
7572
expected[ i ] = f32( expected[ i ] );
7673
y = tanf( x[ i ] );
77-
if ( y === expected[ i ] ) {
78-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
79-
} else {
80-
delta = absf( y - expected[ i ] );
81-
tol = EPS * absf( expected[ i ] );
82-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
83-
}
74+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
8475
}
8576
t.end();
8677
});
8778

8879
tape( 'the function computes the tangent (huge positive values)', function test( t ) {
8980
var expected;
90-
var delta;
91-
var tol;
9281
var x;
9382
var y;
9483
var i;
@@ -100,21 +89,13 @@ tape( 'the function computes the tangent (huge positive values)', function test(
10089
x[ i ] = f32( x[ i ] );
10190
expected[ i ] = f32( expected[ i ] );
10291
y = tanf( x[ i ] );
103-
if ( y === expected[ i ] ) {
104-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
105-
} else {
106-
delta = absf( y - expected[ i ] );
107-
tol = EPS * absf( expected[ i ] );
108-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
109-
}
92+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
11093
}
11194
t.end();
11295
});
11396

11497
tape( 'the function computes the tangent (very large positive values)', function test( t ) {
11598
var expected;
116-
var delta;
117-
var tol;
11899
var x;
119100
var y;
120101
var i;
@@ -126,21 +107,13 @@ tape( 'the function computes the tangent (very large positive values)', function
126107
x[ i ] = f32( x[ i ] );
127108
expected[ i ] = f32( expected[ i ] );
128109
y = tanf( x[ i ] );
129-
if ( y === expected[ i ] ) {
130-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
131-
} else {
132-
delta = absf( y - expected[ i ] );
133-
tol = EPS * absf( expected[ i ] );
134-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
135-
}
110+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
136111
}
137112
t.end();
138113
});
139114

140115
tape( 'the function computes the tangent (very large negative values)', function test( t ) {
141116
var expected;
142-
var delta;
143-
var tol;
144117
var x;
145118
var y;
146119
var i;
@@ -152,21 +125,13 @@ tape( 'the function computes the tangent (very large negative values)', function
152125
x[ i ] = f32( x[ i ] );
153126
expected[ i ] = f32( expected[ i ] );
154127
y = tanf( x[ i ] );
155-
if ( y === expected[ i ] ) {
156-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
157-
} else {
158-
delta = absf( y - expected[ i ] );
159-
tol = EPS * absf( expected[ i ] );
160-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
161-
}
128+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
162129
}
163130
t.end();
164131
});
165132

166133
tape( 'the function computes the tangent (large positive values)', function test( t ) {
167134
var expected;
168-
var delta;
169-
var tol;
170135
var x;
171136
var y;
172137
var i;
@@ -178,21 +143,13 @@ tape( 'the function computes the tangent (large positive values)', function test
178143
x[ i ] = f32( x[ i ] );
179144
expected[ i ] = f32( expected[ i ] );
180145
y = tanf( x[ i ] );
181-
if ( y === expected[ i ] ) {
182-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
183-
} else {
184-
delta = absf( y - expected[ i ] );
185-
tol = EPS * absf( expected[ i ] );
186-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
187-
}
146+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
188147
}
189148
t.end();
190149
});
191150

192151
tape( 'the function computes the tangent (large negative values)', function test( t ) {
193152
var expected;
194-
var delta;
195-
var tol;
196153
var x;
197154
var y;
198155
var i;
@@ -204,21 +161,13 @@ tape( 'the function computes the tangent (large negative values)', function test
204161
x[ i ] = f32( x[ i ] );
205162
expected[ i ] = f32( expected[ i ] );
206163
y = tanf( x[ i ] );
207-
if ( y === expected[ i ] ) {
208-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
209-
} else {
210-
delta = absf( y - expected[ i ] );
211-
tol = EPS * absf( expected[ i ] );
212-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
213-
}
164+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
214165
}
215166
t.end();
216167
});
217168

218169
tape( 'the function computes the tangent (medium positive values)', function test( t ) {
219170
var expected;
220-
var delta;
221-
var tol;
222171
var x;
223172
var y;
224173
var i;
@@ -230,21 +179,13 @@ tape( 'the function computes the tangent (medium positive values)', function tes
230179
x[ i ] = f32( x[ i ] );
231180
expected[ i ] = f32( expected[ i ] );
232181
y = tanf( x[ i ] );
233-
if ( y === expected[ i ] ) {
234-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
235-
} else {
236-
delta = absf( y - expected[ i ] );
237-
tol = EPS * absf( expected[ i ] );
238-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
239-
}
182+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
240183
}
241184
t.end();
242185
});
243186

244187
tape( 'the function computes the tangent (medium negative values)', function test( t ) {
245188
var expected;
246-
var delta;
247-
var tol;
248189
var x;
249190
var y;
250191
var i;
@@ -256,21 +197,13 @@ tape( 'the function computes the tangent (medium negative values)', function tes
256197
x[ i ] = f32( x[ i ] );
257198
expected[ i ] = f32( expected[ i ] );
258199
y = tanf( x[ i ] );
259-
if ( y === expected[ i ] ) {
260-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
261-
} else {
262-
delta = absf( y - expected[ i ] );
263-
tol = EPS * absf( expected[ i ] );
264-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
265-
}
200+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
266201
}
267202
t.end();
268203
});
269204

270205
tape( 'the function computes the tangent (small positive values)', function test( t ) {
271206
var expected;
272-
var delta;
273-
var tol;
274207
var x;
275208
var y;
276209
var i;
@@ -282,21 +215,13 @@ tape( 'the function computes the tangent (small positive values)', function test
282215
x[ i ] = f32( x[ i ] );
283216
expected[ i ] = f32( expected[ i ] );
284217
y = tanf( x[ i ] );
285-
if ( y === expected[ i ] ) {
286-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
287-
} else {
288-
delta = absf( y - expected[ i ] );
289-
tol = EPS * absf( expected[ i ] );
290-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
291-
}
218+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
292219
}
293220
t.end();
294221
});
295222

296223
tape( 'the function computes the tangent (small negative values)', function test( t ) {
297224
var expected;
298-
var delta;
299-
var tol;
300225
var x;
301226
var y;
302227
var i;
@@ -308,21 +233,13 @@ tape( 'the function computes the tangent (small negative values)', function test
308233
x[ i ] = f32( x[ i ] );
309234
expected[ i ] = f32( expected[ i ] );
310235
y = tanf( x[ i ] );
311-
if ( y === expected[ i ] ) {
312-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
313-
} else {
314-
delta = absf( y - expected[ i ] );
315-
tol = EPS * absf( expected[ i ] );
316-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
317-
}
236+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
318237
}
319238
t.end();
320239
});
321240

322241
tape( 'the function computes the tangent (smaller values)', function test( t ) {
323242
var expected;
324-
var delta;
325-
var tol;
326243
var x;
327244
var y;
328245
var i;
@@ -334,21 +251,13 @@ tape( 'the function computes the tangent (smaller values)', function test( t ) {
334251
x[ i ] = f32( x[ i ] );
335252
expected[ i ] = f32( expected[ i ] );
336253
y = tanf( x[ i ] );
337-
if ( y === expected[ i ] ) {
338-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
339-
} else {
340-
delta = absf( y - expected[ i ] );
341-
tol = EPS * absf( expected[ i ] );
342-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
343-
}
254+
t.strictEqual( ulpdiff( y, expected[ i ] ) <= 1, true, 'returns expected value' );
344255
}
345256
t.end();
346257
});
347258

348259
tape( 'the function computes the tangent (tiny positive values)', function test( t ) {
349260
var expected;
350-
var delta;
351-
var tol;
352261
var x;
353262
var y;
354263
var i;
@@ -360,21 +269,13 @@ tape( 'the function computes the tangent (tiny positive values)', function test(
360269
x[ i ] = f32( x[ i ] );
361270
expected[ i ] = f32( expected[ i ] );
362271
y = tanf( x[ i ] );
363-
if ( y === expected[ i ] ) {
364-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
365-
} else {
366-
delta = absf( y - expected[ i ] );
367-
tol = EPS * absf( expected[ i ] );
368-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
369-
}
272+
t.strictEqual( y, expected[ i ], 'returns expected value' );
370273
}
371274
t.end();
372275
});
373276

374277
tape( 'the function computes the tangent (tiny negative values)', function test( t ) {
375278
var expected;
376-
var delta;
377-
var tol;
378279
var x;
379280
var y;
380281
var i;
@@ -386,21 +287,13 @@ tape( 'the function computes the tangent (tiny negative values)', function test(
386287
x[ i ] = f32( x[ i ] );
387288
expected[ i ] = f32( expected[ i ] );
388289
y = tanf( x[ i ] );
389-
if ( y === expected[ i ] ) {
390-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
391-
} else {
392-
delta = absf( y - expected[ i ] );
393-
tol = EPS * absf( expected[ i ] );
394-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
395-
}
290+
t.strictEqual( y, expected[ i ], 'returns expected value' );
396291
}
397292
t.end();
398293
});
399294

400295
tape( 'the function computes the tangent (subnormal values)', function test( t ) {
401296
var expected;
402-
var delta;
403-
var tol;
404297
var x;
405298
var y;
406299
var i;
@@ -412,13 +305,7 @@ tape( 'the function computes the tangent (subnormal values)', function test( t )
412305
x[ i ] = f32( x[ i ] );
413306
expected[ i ] = f32( expected[ i ] );
414307
y = tanf( x[ i ] );
415-
if ( y === expected[ i ] ) {
416-
t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] );
417-
} else {
418-
delta = absf( y - expected[ i ] );
419-
tol = EPS * absf( expected[ i ] );
420-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' );
421-
}
308+
t.strictEqual( y, expected[ i ], 'returns expected value' );
422309
}
423310

424311
t.end();

0 commit comments

Comments
 (0)