Skip to content

Commit 9541650

Browse files
ShabiShett07kgryte
andauthored
test: increase code coverage in blas/base/ssyr2
PR-URL: #6544 Co-authored-by: Athan Reines <[email protected]> Reviewed-by: Athan Reines <[email protected]> Signed-off-by: Athan Reines <[email protected]>
1 parent b1a5a2d commit 9541650

File tree

4 files changed

+133
-1
lines changed

4 files changed

+133
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"order": "column-major",
3+
"uplo": "lower",
4+
"N": 3,
5+
"alpha": 2.0,
6+
"x": [ 0.0, 0.0, 0.0 ],
7+
"strideX": 1,
8+
"offsetX": 0,
9+
"y": [ 1.0, 2.0, 3.0 ],
10+
"strideY": 1,
11+
"offsetY": 0,
12+
"A": [ 1.0, 1.0, 1.0, 0.0, 2.0, 2.0, 0.0, 0.0, 3.0 ],
13+
"lda": 3,
14+
"strideA1": 1,
15+
"strideA2": 3,
16+
"offsetA": 0,
17+
"A_out": [ 1.0, 1.0, 1.0, 0.0, 2.0, 2.0, 0.0, 0.0, 3.0 ]
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"order": "row-major",
3+
"uplo": "lower",
4+
"N": 3,
5+
"alpha": 2.0,
6+
"x": [ 0.0, 0.0, 0.0 ],
7+
"strideX": 1,
8+
"offsetX": 0,
9+
"y": [ 1.0, 2.0, 3.0 ],
10+
"strideY": 1,
11+
"offsetY": 0,
12+
"A": [ 1.0, 0.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 3.0 ],
13+
"lda": 3,
14+
"strideA1": 3,
15+
"strideA2": 1,
16+
"offsetA": 0,
17+
"A_out": [ 1.0, 0.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 3.0 ]
18+
}

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

+49-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ var ssyr2 = require( './../lib/ndarray.js' );
3131

3232
var ru = require( './fixtures/row_major_u.json' );
3333
var rl = require( './fixtures/row_major_l.json' );
34+
var rx0 = require( './fixtures/row_major_x0.json' );
3435
var rxpyp = require( './fixtures/row_major_xpyp.json' );
3536
var rxnyp = require( './fixtures/row_major_xnyp.json' );
3637
var rxpyn = require( './fixtures/row_major_xpyn.json' );
@@ -44,6 +45,7 @@ var rcap = require( './fixtures/row_major_complex_access_pattern.json' );
4445

4546
var cu = require( './fixtures/column_major_u.json' );
4647
var cl = require( './fixtures/column_major_l.json' );
48+
var cx0 = require( './fixtures/column_major_x0.json' );
4749
var cxpyp = require( './fixtures/column_major_xpyp.json' );
4850
var cxnyp = require( './fixtures/column_major_xnyp.json' );
4951
var cxpyn = require( './fixtures/column_major_xpyn.json' );
@@ -161,7 +163,7 @@ tape( 'the function throws an error if provided an invalid eighth argument', fun
161163

162164
function badValue( value ) {
163165
return function badValue() {
164-
ssyr2( data.uplo, data.N, data.alpha, new Float32Array( data.x ), value, data.offsetX, new Float32Array( data.y ), data.strideY, data.offsetY, new Float32Array( data.A ), data.strideA1, data.strideA2, data.offsetA );
166+
ssyr2( data.uplo, data.N, data.alpha, new Float32Array( data.x ), data.strideX, data.offsetX, new Float32Array( data.y ), value, data.offsetY, new Float32Array( data.A ), data.strideA1, data.strideA2, data.offsetA );
165167
};
166168
}
167169
});
@@ -258,6 +260,52 @@ tape( 'the function performs the symmetric rank 2 operation `A = α*x*y^T + α*y
258260
t.end();
259261
});
260262

263+
tape( 'the function performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` (row-major, zero-vector)', function test( t ) {
264+
var expected;
265+
var data;
266+
var out;
267+
var a;
268+
var x;
269+
var y;
270+
271+
data = rx0;
272+
273+
a = new Float32Array( data.A );
274+
x = new Float32Array( data.x );
275+
y = new Float32Array( data.y );
276+
277+
expected = new Float32Array( data.A_out );
278+
279+
out = ssyr2( data.uplo, data.N, data.alpha, x, data.strideX, data.offsetX, y, data.strideY, data.offsetY, a, data.strideA1, data.strideA2, data.offsetA );
280+
t.strictEqual( out, a, 'returns expected value' );
281+
t.deepEqual( out, expected, 'returns expected value' );
282+
283+
t.end();
284+
});
285+
286+
tape( 'the function performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` (column-major, zero-vector)', function test( t ) {
287+
var expected;
288+
var data;
289+
var out;
290+
var a;
291+
var x;
292+
var y;
293+
294+
data = cx0;
295+
296+
a = new Float32Array( data.A );
297+
x = new Float32Array( data.x );
298+
y = new Float32Array( data.y );
299+
300+
expected = new Float32Array( data.A_out );
301+
302+
out = ssyr2( data.uplo, data.N, data.alpha, x, data.strideX, data.offsetX, y, data.strideY, data.offsetY, a, data.strideA1, data.strideA2, data.offsetA );
303+
t.strictEqual( out, a, 'returns expected value' );
304+
t.deepEqual( out, expected, 'returns expected value' );
305+
306+
t.end();
307+
});
308+
261309
tape( 'the function returns a reference to the input matrix `A`', function test( t ) {
262310
var data;
263311
var out;

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

+48
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@ var ssyr2 = require( './../lib/ssyr2.js' );
3131

3232
var ru = require( './fixtures/row_major_u.json' );
3333
var rl = require( './fixtures/row_major_l.json' );
34+
var rx0 = require( './fixtures/row_major_x0.json' );
3435
var rxpyp = require( './fixtures/row_major_xpyp.json' );
3536
var rxnyp = require( './fixtures/row_major_xnyp.json' );
3637
var rxpyn = require( './fixtures/row_major_xpyn.json' );
3738
var rxnyn = require( './fixtures/row_major_xnyn.json' );
3839

3940
var cu = require( './fixtures/column_major_u.json' );
4041
var cl = require( './fixtures/column_major_l.json' );
42+
var cx0 = require( './fixtures/column_major_x0.json' );
4143
var cxpyp = require( './fixtures/column_major_xpyp.json' );
4244
var cxnyp = require( './fixtures/column_major_xnyp.json' );
4345
var cxpyn = require( './fixtures/column_major_xpyn.json' );
@@ -300,6 +302,52 @@ tape( 'the function performs the symmetric rank 2 operation `A = α*x*y^T + α*y
300302
t.end();
301303
});
302304

305+
tape( 'the function performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` (row-major, zero-vector)', function test( t ) {
306+
var expected;
307+
var data;
308+
var out;
309+
var a;
310+
var x;
311+
var y;
312+
313+
data = rx0;
314+
315+
a = new Float32Array( data.A );
316+
x = new Float32Array( data.x );
317+
y = new Float32Array( data.y );
318+
319+
expected = new Float32Array( data.A_out );
320+
321+
out = ssyr2( data.order, data.uplo, data.N, data.alpha, x, data.strideX, y, data.strideY, a, data.lda );
322+
t.strictEqual( out, a, 'returns expected value' );
323+
t.deepEqual( out, expected, 'returns expected value' );
324+
325+
t.end();
326+
});
327+
328+
tape( 'the function performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` (column-major, zero-vector)', function test( t ) {
329+
var expected;
330+
var data;
331+
var out;
332+
var a;
333+
var x;
334+
var y;
335+
336+
data = cx0;
337+
338+
a = new Float32Array( data.A );
339+
x = new Float32Array( data.x );
340+
y = new Float32Array( data.y );
341+
342+
expected = new Float32Array( data.A_out );
343+
344+
out = ssyr2( data.order, data.uplo, data.N, data.alpha, x, data.strideX, y, data.strideY, a, data.lda );
345+
t.strictEqual( out, a, 'returns expected value' );
346+
t.deepEqual( out, expected, 'returns expected value' );
347+
348+
t.end();
349+
});
350+
303351
tape( 'the function returns a reference to the input matrix `A`', function test( t ) {
304352
var data;
305353
var out;

0 commit comments

Comments
 (0)