Skip to content

Commit 0b47cf8

Browse files
ShabiShett07kgryte
andauthored
test: increase test code coverage in blas/base/snrm2
PR-URL: #6688 Co-authored-by: Athan Reines <[email protected]> Reviewed-by: Athan Reines <[email protected]>
1 parent 9d84fb2 commit 0b47cf8

File tree

4 files changed

+172
-0
lines changed

4 files changed

+172
-0
lines changed

lib/node_modules/@stdlib/blas/base/snrm2/test/test.ndarray.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
var tape = require( 'tape' );
2424
var Float32Array = require( '@stdlib/array/float32' );
25+
var isnan = require( '@stdlib/assert/is-nan' );
2526
var EPS = require( '@stdlib/constants/float32/eps' );
2627
var abs = require( '@stdlib/math/base/special/abs' );
2728
var snrm2 = require( './../lib/ndarray.js' );
@@ -83,6 +84,31 @@ tape( 'the function calculates the L2-norm of a vector', function test( t ) {
8384
z = snrm2( x.length, x, 1, 0 );
8485
isApprox( t, z, 4.0, 1.0 );
8586

87+
x = new Float32Array( [ 9.0e-20, 9.0e-20, 1.2e-19 ] );
88+
89+
z = snrm2( x.length, x, 1, 0 );
90+
isApprox( t, z, 1.7492856287692852e-19, 1.0 );
91+
92+
x = new Float32Array( [ 1.0e-20, 1.0e-20, 1.0e-20, 1.0e-20 ] );
93+
94+
z = snrm2( x.length, x, 1, 0 );
95+
isApprox( t, z, 1.999999936531045e-20, 1.0 );
96+
97+
x = new Float32Array( [ 1.0e20, 1.0e5, 1.0e20, 1.0e5 ] );
98+
99+
z = snrm2( x.length, x, 1, 0 );
100+
t.strictEqual( z, 141421358199525600000.0, 'returns expected value' );
101+
102+
x = new Float32Array( [ 1.0e-20, 1.0e5, 1.0e-20, 1.0e5 ] );
103+
104+
z = snrm2( x.length, x, 1, 0 );
105+
t.strictEqual( z, 141421.359375, 'returns expected value' );
106+
107+
x = new Float32Array( [ 1.4e-19, 1.5e-19, 1.4e-19, 0.0 ] );
108+
109+
z = snrm2( x.length, x, 1, 0 );
110+
isApprox( t, z, 2.4839484162537295e-19, 1.0 );
111+
86112
t.end();
87113
});
88114

@@ -101,6 +127,23 @@ tape( 'if provided an `N` parameter less than or equal to `0`, the function retu
101127
t.end();
102128
});
103129

130+
tape( 'the function returns NaN if provided an array element equal to NaN', function test( t ) {
131+
var actual;
132+
var x;
133+
134+
x = new Float32Array( [ 1.4e40, NaN ] );
135+
136+
actual = snrm2( 2, x, 1, 0 );
137+
t.strictEqual( isnan( actual ), true, 'returns expected value' );
138+
139+
x = new Float32Array( [ 1.0, -2.0, NaN, 5.0, 3.0 ] );
140+
141+
actual = snrm2( 3, x, 1, 0 );
142+
t.strictEqual( isnan( actual ), true, 'returns expected value' );
143+
144+
t.end();
145+
});
146+
104147
tape( 'the function supports a `stride` parameter', function test( t ) {
105148
var N;
106149
var x;

lib/node_modules/@stdlib/blas/base/snrm2/test/test.ndarray.native.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
var resolve = require( 'path' ).resolve;
2424
var tape = require( 'tape' );
2525
var Float32Array = require( '@stdlib/array/float32' );
26+
var isnan = require( '@stdlib/assert/is-nan' );
2627
var EPS = require( '@stdlib/constants/float32/eps' );
2728
var abs = require( '@stdlib/math/base/special/abs' );
2829
var tryRequire = require( '@stdlib/utils/try-require' );
@@ -92,6 +93,31 @@ tape( 'the function calculates the L2-norm of a vector', opts, function test( t
9293
z = snrm2( x.length, x, 1, 0 );
9394
isApprox( t, z, 4.0, 1.0 );
9495

96+
x = new Float32Array( [ 9.0e-20, 9.0e-20, 1.2e-19 ] );
97+
98+
z = snrm2( x.length, x, 1, 0 );
99+
isApprox( t, z, 1.7492856287692852e-19, 1.0 );
100+
101+
x = new Float32Array( [ 1.0e-20, 1.0e-20, 1.0e-20, 1.0e-20 ] );
102+
103+
z = snrm2( x.length, x, 1, 0 );
104+
isApprox( t, z, 1.999999936531045e-20, 1.0 );
105+
106+
x = new Float32Array( [ 1.0e20, 1.0e5, 1.0e20, 1.0e5 ] );
107+
108+
z = snrm2( x.length, x, 1, 0 );
109+
t.strictEqual( z, 141421358199525600000.0, 'returns expected value' );
110+
111+
x = new Float32Array( [ 1.0e-20, 1.0e5, 1.0e-20, 1.0e5 ] );
112+
113+
z = snrm2( x.length, x, 1, 0 );
114+
t.strictEqual( z, 141421.359375, 'returns expected value' );
115+
116+
x = new Float32Array( [ 1.4e-19, 1.5e-19, 1.4e-19, 0.0 ] );
117+
118+
z = snrm2( x.length, x, 1, 0 );
119+
isApprox( t, z, 2.4839484162537295e-19, 1.0 );
120+
95121
t.end();
96122
});
97123

@@ -110,6 +136,23 @@ tape( 'if provided an `N` parameter less than or equal to `0`, the function retu
110136
t.end();
111137
});
112138

139+
tape( 'the function returns NaN if provided an array element equal to NaN', opts, function test( t ) {
140+
var actual;
141+
var x;
142+
143+
x = new Float32Array( [ 1.4e40, NaN ] );
144+
145+
actual = snrm2( 2, x, 1, 0 );
146+
t.strictEqual( isnan( actual ), true, 'returns expected value' );
147+
148+
x = new Float32Array( [ 1.0, -2.0, NaN, 5.0, 3.0 ] );
149+
150+
actual = snrm2( 3, x, 1, 0 );
151+
t.strictEqual( isnan( actual ), true, 'returns expected value' );
152+
153+
t.end();
154+
});
155+
113156
tape( 'the function supports a `stride` parameter', opts, function test( t ) {
114157
var N;
115158
var x;

lib/node_modules/@stdlib/blas/base/snrm2/test/test.snrm2.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
var tape = require( 'tape' );
2424
var Float32Array = require( '@stdlib/array/float32' );
25+
var isnan = require( '@stdlib/assert/is-nan' );
2526
var EPS = require( '@stdlib/constants/float32/eps' );
2627
var abs = require( '@stdlib/math/base/special/abs' );
2728
var snrm2 = require( './../lib/snrm2.js' );
@@ -83,6 +84,31 @@ tape( 'the function calculates the L2-norm of a vector', function test( t ) {
8384
z = snrm2( x.length, x, 1 );
8485
isApprox( t, z, 4.0, 1.0 );
8586

87+
x = new Float32Array( [ 9.0e-20, 9.0e-20, 1.2e-19 ] );
88+
89+
z = snrm2( x.length, x, 1 );
90+
isApprox( t, z, 1.7492856287692852e-19, 1.0 );
91+
92+
x = new Float32Array( [ 1.0e-20, 1.0e-20, 1.0e-20, 1.0e-20 ] );
93+
94+
z = snrm2( x.length, x, 1 );
95+
isApprox( t, z, 1.999999936531045e-20, 1.0 );
96+
97+
x = new Float32Array( [ 1.0e20, 1.0e5, 1.0e20, 1.0e5 ] );
98+
99+
z = snrm2( x.length, x, 1 );
100+
t.strictEqual( z, 141421358199525600000.0, 'returns expected value' );
101+
102+
x = new Float32Array( [ 1.0e-20, 1.0e5, 1.0e-20, 1.0e5 ] );
103+
104+
z = snrm2( x.length, x, 1 );
105+
t.strictEqual( z, 141421.359375, 'returns expected value' );
106+
107+
x = new Float32Array( [ 1.4e-19, 1.5e-19, 1.4e-19, 0.0 ] );
108+
109+
z = snrm2( x.length, x, 1 );
110+
isApprox( t, z, 2.4839484162537295e-19, 1.0 );
111+
86112
t.end();
87113
});
88114

@@ -101,6 +127,23 @@ tape( 'if provided an `N` parameter less than or equal to `0`, the function retu
101127
t.end();
102128
});
103129

130+
tape( 'the function returns NaN if provided an array element equal to NaN', function test( t ) {
131+
var actual;
132+
var x;
133+
134+
x = new Float32Array( [ 1.4e40, NaN ] );
135+
136+
actual = snrm2( 2, x, 1 );
137+
t.strictEqual( isnan( actual ), true, 'returns expected value' );
138+
139+
x = new Float32Array( [ 1.0, -2.0, NaN, 5.0, 3.0 ] );
140+
141+
actual = snrm2( 3, x, 1 );
142+
t.strictEqual( isnan( actual ), true, 'returns expected value' );
143+
144+
t.end();
145+
});
146+
104147
tape( 'the function supports a `stride` parameter', function test( t ) {
105148
var N;
106149
var x;

lib/node_modules/@stdlib/blas/base/snrm2/test/test.snrm2.native.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
var resolve = require( 'path' ).resolve;
2424
var tape = require( 'tape' );
2525
var Float32Array = require( '@stdlib/array/float32' );
26+
var isnan = require( '@stdlib/assert/is-nan' );
2627
var EPS = require( '@stdlib/constants/float32/eps' );
2728
var abs = require( '@stdlib/math/base/special/abs' );
2829
var tryRequire = require( '@stdlib/utils/try-require' );
@@ -92,6 +93,31 @@ tape( 'the function calculates the L2-norm of a vector', opts, function test( t
9293
z = snrm2( x.length, x, 1 );
9394
isApprox( t, z, 4.0, 1.0 );
9495

96+
x = new Float32Array( [ 9.0e-20, 9.0e-20, 1.2e-19 ] );
97+
98+
z = snrm2( x.length, x, 1 );
99+
isApprox( t, z, 1.7492856287692852e-19, 1.0 );
100+
101+
x = new Float32Array( [ 1.0e-20, 1.0e-20, 1.0e-20, 1.0e-20 ] );
102+
103+
z = snrm2( x.length, x, 1 );
104+
isApprox( t, z, 1.999999936531045e-20, 1.0 );
105+
106+
x = new Float32Array( [ 1.0e20, 1.0e5, 1.0e20, 1.0e5 ] );
107+
108+
z = snrm2( x.length, x, 1 );
109+
t.strictEqual( z, 141421358199525600000.0, 'returns expected value' );
110+
111+
x = new Float32Array( [ 1.0e-20, 1.0e5, 1.0e-20, 1.0e5 ] );
112+
113+
z = snrm2( x.length, x, 1 );
114+
t.strictEqual( z, 141421.359375, 'returns expected value' );
115+
116+
x = new Float32Array( [ 1.4e-19, 1.5e-19, 1.4e-19, 0.0 ] );
117+
118+
z = snrm2( x.length, x, 1 );
119+
isApprox( t, z, 2.4839484162537295e-19, 1.0 );
120+
95121
t.end();
96122
});
97123

@@ -110,6 +136,23 @@ tape( 'if provided an `N` parameter less than or equal to `0`, the function retu
110136
t.end();
111137
});
112138

139+
tape( 'the function returns NaN if provided an array element equal to NaN', opts, function test( t ) {
140+
var actual;
141+
var x;
142+
143+
x = new Float32Array( [ 1.4e40, NaN ] );
144+
145+
actual = snrm2( 2, x, 1 );
146+
t.strictEqual( isnan( actual ), true, 'returns expected value' );
147+
148+
x = new Float32Array( [ 1.0, -2.0, NaN, 5.0, 3.0 ] );
149+
150+
actual = snrm2( 3, x, 1 );
151+
t.strictEqual( isnan( actual ), true, 'returns expected value' );
152+
153+
t.end();
154+
});
155+
113156
tape( 'the function supports a `stride` parameter', opts, function test( t ) {
114157
var N;
115158
var x;

0 commit comments

Comments
 (0)