@@ -35,6 +35,7 @@ var rl = require( './fixtures/row_major_l.json' );
35
35
var rxp = require ( './fixtures/row_major_xp.json' ) ;
36
36
var rxn = require ( './fixtures/row_major_xn.json' ) ;
37
37
var roa = require ( './fixtures/row_major_oa.json' ) ;
38
+ var rox = require ( './fixtures/row_major_ox.json' ) ;
38
39
var rsa1sa2 = require ( './fixtures/row_major_sa1_sa2.json' ) ;
39
40
var rsa1nsa2 = require ( './fixtures/row_major_sa1n_sa2.json' ) ;
40
41
var rsa1sa2n = require ( './fixtures/row_major_sa1_sa2n.json' ) ;
@@ -46,6 +47,7 @@ var cl = require( './fixtures/column_major_l.json' );
46
47
var cxp = require ( './fixtures/column_major_xp.json' ) ;
47
48
var cxn = require ( './fixtures/column_major_xn.json' ) ;
48
49
var coa = require ( './fixtures/column_major_oa.json' ) ;
50
+ var cox = require ( './fixtures/column_major_ox.json' ) ;
49
51
var csa1sa2 = require ( './fixtures/column_major_sa1_sa2.json' ) ;
50
52
var csa1nsa2 = require ( './fixtures/column_major_sa1n_sa2.json' ) ;
51
53
var csa1sa2n = require ( './fixtures/column_major_sa1_sa2n.json' ) ;
@@ -148,6 +150,52 @@ tape( 'the function throws an error if provided an invalid fifth argument', opts
148
150
}
149
151
} ) ;
150
152
153
+ tape ( 'the function throws an error if provided an invalid eighth argument' , opts , function test ( t ) {
154
+ var values ;
155
+ var data ;
156
+ var i ;
157
+
158
+ data = ru ;
159
+
160
+ values = [
161
+ 0
162
+ ] ;
163
+
164
+ for ( i = 0 ; i < values . length ; i ++ ) {
165
+ t . throws ( badValue ( values [ i ] ) , RangeError , 'throws an error when provided ' + values [ i ] ) ;
166
+ }
167
+ t . end ( ) ;
168
+
169
+ function badValue ( value ) {
170
+ return function badValue ( ) {
171
+ dsyr ( data . uplo , data . N , data . alpha , new Float64Array ( data . x ) , data . strideX , data . offsetX , new Float64Array ( data . A ) , value , data . strideA2 , data . offsetA ) ;
172
+ } ;
173
+ }
174
+ } ) ;
175
+
176
+ tape ( 'the function throws an error if provided an invalid ninth argument' , opts , function test ( t ) {
177
+ var values ;
178
+ var data ;
179
+ var i ;
180
+
181
+ data = ru ;
182
+
183
+ values = [
184
+ 0
185
+ ] ;
186
+
187
+ for ( i = 0 ; i < values . length ; i ++ ) {
188
+ t . throws ( badValue ( values [ i ] ) , RangeError , 'throws an error when provided ' + values [ i ] ) ;
189
+ }
190
+ t . end ( ) ;
191
+
192
+ function badValue ( value ) {
193
+ return function badValue ( ) {
194
+ dsyr ( data . uplo , data . N , data . alpha , new Float64Array ( data . x ) , data . strideX , data . offsetX , new Float64Array ( data . A ) , data . strideA1 , value , data . offsetA ) ;
195
+ } ;
196
+ }
197
+ } ) ;
198
+
151
199
tape ( 'the function performs the symmetric rank 1 operation `A = α*x*x^T + A` (row-major, upper)' , opts , function test ( t ) {
152
200
var expected ;
153
201
var data ;
@@ -593,6 +641,48 @@ tape( 'the function supports specifying a negative `x` stride (column-major)', o
593
641
t . end ( ) ;
594
642
} ) ;
595
643
644
+ tape ( 'the function supports specifying an `x` offset (row-major)' , opts , function test ( t ) {
645
+ var expected ;
646
+ var data ;
647
+ var out ;
648
+ var a ;
649
+ var x ;
650
+
651
+ data = rox ;
652
+
653
+ a = new Float64Array ( data . A ) ;
654
+ x = new Float64Array ( data . x ) ;
655
+
656
+ expected = new Float64Array ( data . A_out ) ;
657
+
658
+ out = dsyr ( data . uplo , data . N , data . alpha , x , data . strideX , data . offsetX , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
659
+ t . strictEqual ( out , a , 'returns expected value' ) ;
660
+ t . deepEqual ( out , expected , 'returns expected value' ) ;
661
+
662
+ t . end ( ) ;
663
+ } ) ;
664
+
665
+ tape ( 'the function supports specifying an `x` offset (column-major)' , opts , function test ( t ) {
666
+ var expected ;
667
+ var data ;
668
+ var out ;
669
+ var a ;
670
+ var x ;
671
+
672
+ data = cox ;
673
+
674
+ a = new Float64Array ( data . A ) ;
675
+ x = new Float64Array ( data . x ) ;
676
+
677
+ expected = new Float64Array ( data . A_out ) ;
678
+
679
+ out = dsyr ( data . uplo , data . N , data . alpha , x , data . strideX , data . offsetX , a , data . strideA1 , data . strideA2 , data . offsetA ) ;
680
+ t . strictEqual ( out , a , 'returns expected value' ) ;
681
+ t . deepEqual ( out , expected , 'returns expected value' ) ;
682
+
683
+ t . end ( ) ;
684
+ } ) ;
685
+
596
686
tape ( 'the function supports complex access patterns (row-major)' , opts , function test ( t ) {
597
687
var expected ;
598
688
var data ;
0 commit comments