@@ -25,14 +25,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
2525 < div class ='fl pad1y space-right2 '>
2626 < span class ="strong "> 100% </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 63/63 </ span >
28+ < span class ='fraction '> 94/94 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
3333 < span class ="strong "> 100% </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 2/2 </ span >
35+ < span class ='fraction '> 17/17 </ span >
3636 </ div >
3737
3838
@@ -46,7 +46,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
4646 < div class ='fl pad1y space-right2 '>
4747 < span class ="strong "> 100% </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 63/63 </ span >
49+ < span class ='fraction '> 94/94 </ span >
5050 </ div >
5151
5252
@@ -126,7 +126,38 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
126126< a name ='L61 '> </ a > < a href ='#L61 '> 61</ a >
127127< a name ='L62 '> </ a > < a href ='#L62 '> 62</ a >
128128< 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 >
130161< span class ="cline-any cline-yes "> 2x</ span >
131162< span class ="cline-any cline-yes "> 2x</ span >
132163< 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
180211< span class ="cline-any cline-yes "> 2x</ span >
181212< span class ="cline-any cline-yes "> 2x</ span >
182213< 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 >
183242< 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 >
187249< span class ="cline-any cline-yes "> 2x</ span >
188250< span class ="cline-any cline-yes "> 2x</ span >
189251< 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
211273
212274// MODULES //
213275
276+ var isLayout = require( '@stdlib/blas/base/assert/is-layout' );
277+ var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' );
214278var resolveOrder = require( '@stdlib/blas/base/layout-resolve-enum' );
215279var 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' );
216282var addon = require( './../src/addon.node' );
217283
218284
@@ -231,6 +297,11 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
231297* @param {integer} strideY - `y` stride length
232298* @param {Float64Array} A - input matrix
233299* @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
234305* @returns {Float64Array} `A`
235306*
236307* @example
@@ -244,6 +315,28 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
244315* // A => <Float64Array>[ 3.0, 6.0, 9.0, 0.0, 9.0, 14.0, 0.0, 0.0, 19.0 ]
245316*/
246317function 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+ }
247340 addon( resolveOrder( order ), resolveUplo( uplo ), N, alpha, x, strideX, y, strideY, A, LDA ); // eslint-disable-line max-len
248341 return A;
249342}
@@ -259,7 +352,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
259352 < div class ='footer quiet pad2 space-top1 center small '>
260353 Code coverage generated by
261354 < 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
263356 </ div >
264357 < script src ="../../../../prettify.js "> </ script >
265358 < script >
0 commit comments