@@ -31,6 +31,7 @@ var ssyr2 = require( './../lib/ndarray.js' );
31
31
32
32
var ru = require ( './fixtures/row_major_u.json' ) ;
33
33
var rl = require ( './fixtures/row_major_l.json' ) ;
34
+ var rx0 = require ( './fixtures/row_major_x0.json' ) ;
34
35
var rxpyp = require ( './fixtures/row_major_xpyp.json' ) ;
35
36
var rxnyp = require ( './fixtures/row_major_xnyp.json' ) ;
36
37
var rxpyn = require ( './fixtures/row_major_xpyn.json' ) ;
@@ -44,6 +45,7 @@ var rcap = require( './fixtures/row_major_complex_access_pattern.json' );
44
45
45
46
var cu = require ( './fixtures/column_major_u.json' ) ;
46
47
var cl = require ( './fixtures/column_major_l.json' ) ;
48
+ var cx0 = require ( './fixtures/column_major_x0.json' ) ;
47
49
var cxpyp = require ( './fixtures/column_major_xpyp.json' ) ;
48
50
var cxnyp = require ( './fixtures/column_major_xnyp.json' ) ;
49
51
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
161
163
162
164
function badValue ( value ) {
163
165
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 ) ;
165
167
} ;
166
168
}
167
169
} ) ;
@@ -258,6 +260,52 @@ tape( 'the function performs the symmetric rank 2 operation `A = α*x*y^T + α*y
258
260
t . end ( ) ;
259
261
} ) ;
260
262
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
+
261
309
tape ( 'the function returns a reference to the input matrix `A`' , function test ( t ) {
262
310
var data ;
263
311
var out ;
0 commit comments