@@ -25,14 +25,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
25
25
< div class ='fl pad1y space-right2 '>
26
26
< span class ="strong "> 100% </ span >
27
27
< span class ="quiet "> Statements</ span >
28
- < span class ='fraction '> 63/63 </ span >
28
+ < span class ='fraction '> 94/94 </ span >
29
29
</ div >
30
30
31
31
32
32
< div class ='fl pad1y space-right2 '>
33
33
< span class ="strong "> 100% </ span >
34
34
< span class ="quiet "> Branches</ span >
35
- < span class ='fraction '> 2/2 </ span >
35
+ < span class ='fraction '> 17/17 </ span >
36
36
</ div >
37
37
38
38
@@ -46,7 +46,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
46
46
< div class ='fl pad1y space-right2 '>
47
47
< span class ="strong "> 100% </ span >
48
48
< span class ="quiet "> Lines</ span >
49
- < span class ='fraction '> 63/63 </ span >
49
+ < span class ='fraction '> 94/94 </ span >
50
50
</ div >
51
51
52
52
@@ -126,7 +126,38 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
126
126
< a name ='L61 '> </ a > < a href ='#L61 '> 61</ a >
127
127
< a name ='L62 '> </ a > < a href ='#L62 '> 62</ a >
128
128
< a name ='L63 '> </ a > < a href ='#L63 '> 63</ a >
129
- < a name ='L64 '> </ a > < a href ='#L64 '> 64</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
129
+ < a name ='L64 '> </ a > < a href ='#L64 '> 64</ a >
130
+ < a name ='L65 '> </ a > < a href ='#L65 '> 65</ a >
131
+ < a name ='L66 '> </ a > < a href ='#L66 '> 66</ a >
132
+ < a name ='L67 '> </ a > < a href ='#L67 '> 67</ a >
133
+ < a name ='L68 '> </ a > < a href ='#L68 '> 68</ a >
134
+ < a name ='L69 '> </ a > < a href ='#L69 '> 69</ a >
135
+ < a name ='L70 '> </ a > < a href ='#L70 '> 70</ a >
136
+ < a name ='L71 '> </ a > < a href ='#L71 '> 71</ a >
137
+ < a name ='L72 '> </ a > < a href ='#L72 '> 72</ a >
138
+ < a name ='L73 '> </ a > < a href ='#L73 '> 73</ a >
139
+ < a name ='L74 '> </ a > < a href ='#L74 '> 74</ a >
140
+ < a name ='L75 '> </ a > < a href ='#L75 '> 75</ a >
141
+ < a name ='L76 '> </ a > < a href ='#L76 '> 76</ a >
142
+ < a name ='L77 '> </ a > < a href ='#L77 '> 77</ a >
143
+ < a name ='L78 '> </ a > < a href ='#L78 '> 78</ a >
144
+ < a name ='L79 '> </ a > < a href ='#L79 '> 79</ a >
145
+ < a name ='L80 '> </ a > < a href ='#L80 '> 80</ a >
146
+ < a name ='L81 '> </ a > < a href ='#L81 '> 81</ a >
147
+ < a name ='L82 '> </ a > < a href ='#L82 '> 82</ a >
148
+ < a name ='L83 '> </ a > < a href ='#L83 '> 83</ a >
149
+ < a name ='L84 '> </ a > < a href ='#L84 '> 84</ a >
150
+ < a name ='L85 '> </ a > < a href ='#L85 '> 85</ a >
151
+ < a name ='L86 '> </ a > < a href ='#L86 '> 86</ a >
152
+ < a name ='L87 '> </ a > < a href ='#L87 '> 87</ a >
153
+ < a name ='L88 '> </ a > < a href ='#L88 '> 88</ a >
154
+ < a name ='L89 '> </ a > < a href ='#L89 '> 89</ a >
155
+ < a name ='L90 '> </ a > < a href ='#L90 '> 90</ a >
156
+ < a name ='L91 '> </ a > < a href ='#L91 '> 91</ a >
157
+ < a name ='L92 '> </ a > < a href ='#L92 '> 92</ a >
158
+ < a name ='L93 '> </ a > < a href ='#L93 '> 93</ a >
159
+ < a name ='L94 '> </ a > < a href ='#L94 '> 94</ a >
160
+ < a name ='L95 '> </ a > < a href ='#L95 '> 95</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
130
161
< span class ="cline-any cline-yes "> 2x</ span >
131
162
< span class ="cline-any cline-yes "> 2x</ span >
132
163
< span class ="cline-any cline-yes "> 2x</ span >
@@ -180,10 +211,41 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
180
211
< span class ="cline-any cline-yes "> 2x</ span >
181
212
< span class ="cline-any cline-yes "> 2x</ span >
182
213
< span class ="cline-any cline-yes "> 2x</ span >
214
+ < span class ="cline-any cline-yes "> 2x</ span >
215
+ < span class ="cline-any cline-yes "> 2x</ span >
216
+ < span class ="cline-any cline-yes "> 2x</ span >
217
+ < span class ="cline-any cline-yes "> 2x</ span >
218
+ < span class ="cline-any cline-yes "> 2x</ span >
219
+ < span class ="cline-any cline-yes "> 2x</ span >
220
+ < span class ="cline-any cline-yes "> 2x</ span >
221
+ < span class ="cline-any cline-yes "> 2x</ span >
222
+ < span class ="cline-any cline-yes "> 2x</ span >
223
+ < span class ="cline-any cline-yes "> 36x</ span >
224
+ < span class ="cline-any cline-yes "> 36x</ span >
225
+ < span class ="cline-any cline-yes "> 4x</ span >
226
+ < span class ="cline-any cline-yes "> 4x</ span >
227
+ < span class ="cline-any cline-yes "> 36x</ span >
228
+ < span class ="cline-any cline-yes "> 4x</ span >
229
+ < span class ="cline-any cline-yes "> 4x</ span >
230
+ < span class ="cline-any cline-yes "> 36x</ span >
231
+ < span class ="cline-any cline-yes "> 3x</ span >
232
+ < span class ="cline-any cline-yes "> 3x</ span >
233
+ < span class ="cline-any cline-yes "> 36x</ span >
234
+ < span class ="cline-any cline-yes "> 1x</ span >
235
+ < span class ="cline-any cline-yes "> 1x</ span >
236
+ < span class ="cline-any cline-yes "> 36x</ span >
237
+ < span class ="cline-any cline-yes "> 1x</ span >
238
+ < span class ="cline-any cline-yes "> 1x</ span >
239
+ < span class ="cline-any cline-yes "> 36x</ span >
240
+ < span class ="cline-any cline-yes "> 6x</ span >
241
+ < span class ="cline-any cline-yes "> 6x</ span >
183
242
< span class ="cline-any cline-yes "> 17x</ span >
184
- < span class ="cline-any cline-yes "> 17x</ span >
185
- < span class ="cline-any cline-yes "> 17x</ span >
186
- < span class ="cline-any cline-yes "> 17x</ span >
243
+ < span class ="cline-any cline-yes "> 36x</ span >
244
+ < span class ="cline-any cline-yes "> 4x</ span >
245
+ < span class ="cline-any cline-yes "> 4x</ span >
246
+ < span class ="cline-any cline-yes "> 13x</ span >
247
+ < span class ="cline-any cline-yes "> 13x</ span >
248
+ < span class ="cline-any cline-yes "> 36x</ span >
187
249
< span class ="cline-any cline-yes "> 2x</ span >
188
250
< span class ="cline-any cline-yes "> 2x</ span >
189
251
< span class ="cline-any cline-yes "> 2x</ span >
@@ -211,8 +273,12 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
211
273
212
274
// MODULES //
213
275
276
+ var isLayout = require( '@stdlib/blas/base/assert/is-layout' );
277
+ var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' );
214
278
var resolveOrder = require( '@stdlib/blas/base/layout-resolve-enum' );
215
279
var resolveUplo = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' );
280
+ var max = require( '@stdlib/math/base/special/fast/max' );
281
+ var format = require( '@stdlib/string/format' );
216
282
var addon = require( './../src/addon.node' );
217
283
218
284
@@ -231,6 +297,11 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
231
297
* @param {integer} strideY - `y` stride length
232
298
* @param {Float64Array} A - input matrix
233
299
* @param {integer} LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`)
300
+ * @throws {TypeError} first argument must be a valid order
301
+ * @throws {TypeError} second argument must specify whether to reference the lower or upper triangular matrix
302
+ * @throws {RangeError} third argument must be a nonnegative integer
303
+ * @throws {RangeError} sixth argument must be non-zero
304
+ * @throws {RangeError} eighth argument must be a valid stride
234
305
* @returns {Float64Array} `A`
235
306
*
236
307
* @example
@@ -244,6 +315,28 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
244
315
* // A => <Float64Array>[ 3.0, 6.0, 9.0, 0.0, 9.0, 14.0, 0.0, 0.0, 19.0 ]
245
316
*/
246
317
function dsyr2( order, uplo, N, alpha, x, strideX, y, strideY, A, LDA ) {
318
+ if ( !isLayout( order ) ) {
319
+ throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) );
320
+ }
321
+ if ( !isMatrixTriangle( uplo ) ) {
322
+ throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) );
323
+ }
324
+ if ( N < 0 ) {
325
+ throw new RangeError( format( 'invalid argument. Third argument must be a nonnegative integer. Value: `%d`.', N ) );
326
+ }
327
+ if ( strideX === 0 ) {
328
+ throw new RangeError( format( 'invalid argument. Sixth argument must be non-zero. Value: `%d`.', strideX ) );
329
+ }
330
+ if ( strideY === 0 ) {
331
+ throw new RangeError( format( 'invalid argument. Eighth argument must be non-zero. Value: `%d`.', strideX ) );
332
+ }
333
+ if ( LDA < max( 1, N ) ) {
334
+ throw new RangeError( format( 'invalid argument. Tenth argument must be greater than or equal to max(1,%d). Value: `%d`.', N, LDA ) );
335
+ }
336
+ // Check if we can early return...
337
+ if ( N === 0 || alpha === 0.0 ) {
338
+ return A;
339
+ }
247
340
addon( resolveOrder( order ), resolveUplo( uplo ), N, alpha, x, strideX, y, strideY, A, LDA ); // eslint-disable-line max-len
248
341
return A;
249
342
}
@@ -259,7 +352,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
259
352
< div class ='footer quiet pad2 space-top1 center small '>
260
353
Code coverage generated by
261
354
< a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
262
- at 2025-06-29T15:47:14.835Z
355
+ at 2025-06-29T16:57:56.457Z
263
356
</ div >
264
357
< script src ="../../../../prettify.js "> </ script >
265
358
< script >
0 commit comments