|
23 | 23 | // MODULES //
|
24 | 24 |
|
25 | 25 | var tape = require( 'tape' );
|
| 26 | +var isNumber = require( '@stdlib/assert/is-number' ).isPrimitive; |
26 | 27 | var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
|
27 | 28 | var absf = require( '@stdlib/math/base/special/absf' );
|
28 | 29 | var EPS = require( '@stdlib/constants/float32/eps' );
|
@@ -427,6 +428,29 @@ tape( 'the function may overflow', function test( t ) {
|
427 | 428 | t.end();
|
428 | 429 | });
|
429 | 430 |
|
| 431 | +tape( 'the function handles very large values (near FLOAT32_BIGGEST)', function test( t ) { |
| 432 | + var v; |
| 433 | + |
| 434 | + // Test values that trigger the LARGE_THRESHOLD scaling (FLOAT32_BIGGEST * 0.5) |
| 435 | + v = cinvf( new Complex64( 3.0e38, 3.0e38 ) ); |
| 436 | + t.strictEqual( isNumber( realf( v ) ), true, 'returns expected value' ); |
| 437 | + t.strictEqual( isNumber( imagf( v ) ), true, 'returns expected value' ); |
| 438 | + |
| 439 | + v = cinvf( new Complex64( -3.0e38, 3.0e38 ) ); |
| 440 | + t.strictEqual( isNumber( realf( v ) ), true, 'returns expected value' ); |
| 441 | + t.strictEqual( isNumber( imagf( v ) ), true, 'returns expected value' ); |
| 442 | + |
| 443 | + v = cinvf( new Complex64( 3.0e38, -3.0e38 ) ); |
| 444 | + t.strictEqual( isNumber( realf( v ) ), true, 'returns expected value' ); |
| 445 | + t.strictEqual( isNumber( imagf( v ) ), true, 'returns expected value' ); |
| 446 | + |
| 447 | + v = cinvf( new Complex64( 2.0e38, 0.0 ) ); |
| 448 | + t.strictEqual( isNumber( realf( v ) ), true, 'returns expected value' ); |
| 449 | + t.strictEqual( isNumber( imagf( v ) ), true, 'returns expected value' ); |
| 450 | + |
| 451 | + t.end(); |
| 452 | +}); |
| 453 | + |
430 | 454 | tape( 'if a real or imaginary component is `NaN`, all components are `NaN`', function test( t ) {
|
431 | 455 | var v;
|
432 | 456 |
|
|
0 commit comments