@@ -31,6 +31,7 @@ var ssyr2 = require( './../lib/ndarray.js' );
3131
3232var ru = require ( './fixtures/row_major_u.json' ) ;
3333var rl = require ( './fixtures/row_major_l.json' ) ;
34+ var rx0 = require ( './fixtures/row_major_x0.json' ) ;
3435var rxpyp = require ( './fixtures/row_major_xpyp.json' ) ;
3536var rxnyp = require ( './fixtures/row_major_xnyp.json' ) ;
3637var rxpyn = require ( './fixtures/row_major_xpyn.json' ) ;
@@ -44,6 +45,7 @@ var rcap = require( './fixtures/row_major_complex_access_pattern.json' );
4445
4546var cu = require ( './fixtures/column_major_u.json' ) ;
4647var cl = require ( './fixtures/column_major_l.json' ) ;
48+ var cx0 = require ( './fixtures/column_major_x0.json' ) ;
4749var cxpyp = require ( './fixtures/column_major_xpyp.json' ) ;
4850var cxnyp = require ( './fixtures/column_major_xnyp.json' ) ;
4951var 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+
261309tape ( 'the function returns a reference to the input matrix `A`' , function test ( t ) {
262310 var data ;
263311 var out ;
0 commit comments