@@ -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 '> 60/60 </ span >
28+ < span class ='fraction '> 88/88 </ 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 '> 15/15 </ 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 '> 60/60 </ span >
49+ < span class ='fraction '> 88/88 </ span >
5050 </ div >
5151
5252
@@ -123,7 +123,35 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
123123< a name ='L58 '> </ a > < a href ='#L58 '> 58</ a >
124124< a name ='L59 '> </ a > < a href ='#L59 '> 59</ a >
125125< a name ='L60 '> </ a > < a href ='#L60 '> 60</ a >
126- < a name ='L61 '> </ a > < a href ='#L61 '> 61</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
126+ < a name ='L61 '> </ a > < a href ='#L61 '> 61</ a >
127+ < a name ='L62 '> </ a > < a href ='#L62 '> 62</ a >
128+ < a name ='L63 '> </ a > < a href ='#L63 '> 63</ a >
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 > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
127155< span class ="cline-any cline-yes "> 2x</ span >
128156< span class ="cline-any cline-yes "> 2x</ span >
129157< span class ="cline-any cline-yes "> 2x</ span >
@@ -174,10 +202,38 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
174202< span class ="cline-any cline-yes "> 2x</ span >
175203< span class ="cline-any cline-yes "> 2x</ span >
176204< span class ="cline-any cline-yes "> 2x</ span >
205+ < span class ="cline-any cline-yes "> 2x</ span >
206+ < span class ="cline-any cline-yes "> 2x</ span >
207+ < span class ="cline-any cline-yes "> 2x</ span >
208+ < span class ="cline-any cline-yes "> 2x</ span >
209+ < span class ="cline-any cline-yes "> 2x</ span >
210+ < span class ="cline-any cline-yes "> 2x</ span >
211+ < span class ="cline-any cline-yes "> 2x</ span >
212+ < span class ="cline-any cline-yes "> 2x</ span >
213+ < span class ="cline-any cline-yes "> 2x</ span >
214+ < span class ="cline-any cline-yes "> 31x</ span >
215+ < span class ="cline-any cline-yes "> 31x</ span >
216+ < span class ="cline-any cline-yes "> 4x</ span >
217+ < span class ="cline-any cline-yes "> 4x</ span >
218+ < span class ="cline-any cline-yes "> 31x</ span >
219+ < span class ="cline-any cline-yes "> 4x</ span >
220+ < span class ="cline-any cline-yes "> 4x</ span >
221+ < span class ="cline-any cline-yes "> 31x</ span >
222+ < span class ="cline-any cline-yes "> 3x</ span >
223+ < span class ="cline-any cline-yes "> 3x</ span >
224+ < span class ="cline-any cline-yes "> 31x</ span >
225+ < span class ="cline-any cline-yes "> 1x</ span >
226+ < span class ="cline-any cline-yes "> 1x</ span >
227+ < span class ="cline-any cline-yes "> 31x</ span >
228+ < span class ="cline-any cline-yes "> 6x</ span >
229+ < span class ="cline-any cline-yes "> 6x</ span >
177230< span class ="cline-any cline-yes "> 13x</ span >
178- < span class ="cline-any cline-yes "> 13x</ span >
179- < span class ="cline-any cline-yes "> 13x</ span >
180- < span class ="cline-any cline-yes "> 13x</ span >
231+ < span class ="cline-any cline-yes "> 31x</ span >
232+ < span class ="cline-any cline-yes "> 4x</ span >
233+ < span class ="cline-any cline-yes "> 4x</ span >
234+ < span class ="cline-any cline-yes "> 9x</ span >
235+ < span class ="cline-any cline-yes "> 9x</ span >
236+ < span class ="cline-any cline-yes "> 31x</ span >
181237< span class ="cline-any cline-yes "> 2x</ span >
182238< span class ="cline-any cline-yes "> 2x</ span >
183239< span class ="cline-any cline-yes "> 2x</ span >
@@ -205,8 +261,12 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
205261
206262// MODULES //
207263
264+ var isLayout = require( '@stdlib/blas/base/assert/is-layout' );
265+ var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' );
266+ var max = require( '@stdlib/math/base/special/fast/max' );
208267var resolveOrder = require( '@stdlib/blas/base/layout-resolve-enum' );
209268var resolveUplo = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' );
269+ var format = require( '@stdlib/string/format' );
210270var addon = require( './../src/addon.node' );
211271
212272
@@ -223,6 +283,11 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
223283* @param {integer} strideX - `x` stride length
224284* @param {Float64Array} A - input matrix
225285* @param {integer} LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`)
286+ * @throws {TypeError} first argument must be a valid order
287+ * @throws {TypeError} second argument must specify whether to reference the lower or upper triangular matrix
288+ * @throws {RangeError} third argument must be a nonnegative integer
289+ * @throws {RangeError} sixth argument must be non-zero
290+ * @throws {RangeError} eighth argument must be a valid stride
226291* @returns {Float64Array} `A`
227292*
228293* @example
@@ -235,6 +300,25 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
235300* // A => <Float64Array>[ 2.0, 4.0, 6.0, 0.0, 5.0, 8.0, 0.0, 0.0, 10.0 ]
236301*/
237302function dsyr( order, uplo, N, alpha, x, strideX, A, LDA ) {
303+ if ( !isLayout( order ) ) {
304+ throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) );
305+ }
306+ if ( !isMatrixTriangle( uplo ) ) {
307+ throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) );
308+ }
309+ if ( N < 0 ) {
310+ throw new RangeError( format( 'invalid argument. Third argument must be a nonnegative integer. Value: `%d`.', N ) );
311+ }
312+ if ( strideX === 0 ) {
313+ throw new RangeError( format( 'invalid argument. Sixth argument must be non-zero. Value: `%d`.', strideX ) );
314+ }
315+ if ( LDA < max( 1, N ) ) {
316+ throw new RangeError( format( 'invalid argument. Eighth argument must be greater than or equal to max(1,%d). Value: `%d`.', N, LDA ) );
317+ }
318+ // Check if we can early return...
319+ if ( N === 0 || alpha === 0.0 ) {
320+ return A;
321+ }
238322 addon( resolveOrder( order ), resolveUplo( uplo ), N, alpha, x, strideX, A, LDA ); // eslint-disable-line max-len
239323 return A;
240324}
@@ -250,7 +334,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
250334 < div class ='footer quiet pad2 space-top1 center small '>
251335 Code coverage generated by
252336 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
253- at 2025-06-29T05:27:58.338Z
337+ at 2025-06-29T14:39:05.899Z
254338 </ div >
255339 < script src ="../../../../prettify.js "> </ script >
256340 < script >
0 commit comments