@@ -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 '> 59/59 </ span >
28+ < span class ='fraction '> 82/82 </ 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 '> 13/13 </ 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 '> 59/59 </ span >
49+ < span class ='fraction '> 82/82 </ span >
5050 </ div >
5151
5252
@@ -122,7 +122,30 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
122122< a name ='L57 '> </ a > < a href ='#L57 '> 57</ a >
123123< a name ='L58 '> </ a > < a href ='#L58 '> 58</ a >
124124< a name ='L59 '> </ a > < a href ='#L59 '> 59</ a >
125- < a name ='L60 '> </ a > < a href ='#L60 '> 60</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
125+ < a name ='L60 '> </ a > < a href ='#L60 '> 60</ a >
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 > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
126149< span class ="cline-any cline-yes "> 2x</ span >
127150< span class ="cline-any cline-yes "> 2x</ span >
128151< span class ="cline-any cline-yes "> 2x</ span >
@@ -172,10 +195,33 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
172195< span class ="cline-any cline-yes "> 2x</ span >
173196< span class ="cline-any cline-yes "> 2x</ span >
174197< span class ="cline-any cline-yes "> 2x</ span >
198+ < span class ="cline-any cline-yes "> 2x</ span >
199+ < span class ="cline-any cline-yes "> 2x</ span >
200+ < span class ="cline-any cline-yes "> 2x</ span >
201+ < span class ="cline-any cline-yes "> 2x</ span >
202+ < span class ="cline-any cline-yes "> 2x</ span >
203+ < span class ="cline-any cline-yes "> 2x</ span >
204+ < span class ="cline-any cline-yes "> 2x</ span >
205+ < span class ="cline-any cline-yes "> 25x</ span >
206+ < span class ="cline-any cline-yes "> 25x</ span >
207+ < span class ="cline-any cline-yes "> 4x</ span >
208+ < span class ="cline-any cline-yes "> 4x</ span >
209+ < span class ="cline-any cline-yes "> 25x</ span >
210+ < span class ="cline-any cline-yes "> 4x</ span >
211+ < span class ="cline-any cline-yes "> 4x</ span >
212+ < span class ="cline-any cline-yes "> 25x</ span >
213+ < span class ="cline-any cline-yes "> 3x</ span >
214+ < span class ="cline-any cline-yes "> 3x</ span >
215+ < span class ="cline-any cline-yes "> 25x</ span >
216+ < span class ="cline-any cline-yes "> 1x</ span >
217+ < span class ="cline-any cline-yes "> 1x</ span >
175218< span class ="cline-any cline-yes "> 13x</ span >
176- < span class ="cline-any cline-yes "> 13x</ span >
177- < span class ="cline-any cline-yes "> 13x</ span >
178- < span class ="cline-any cline-yes "> 13x</ span >
219+ < span class ="cline-any cline-yes "> 25x</ span >
220+ < span class ="cline-any cline-yes "> 4x</ span >
221+ < span class ="cline-any cline-yes "> 4x</ span >
222+ < span class ="cline-any cline-yes "> 9x</ span >
223+ < span class ="cline-any cline-yes "> 9x</ span >
224+ < span class ="cline-any cline-yes "> 25x</ span >
179225< span class ="cline-any cline-yes "> 2x</ span >
180226< span class ="cline-any cline-yes "> 2x</ span >
181227< span class ="cline-any cline-yes "> 2x</ span >
@@ -203,8 +249,11 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
203249
204250// MODULES //
205251
252+ var isLayout = require( '@stdlib/blas/base/assert/is-layout' );
253+ var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' );
206254var resolveOrder = require( '@stdlib/blas/base/layout-resolve-enum' );
207255var resolveUplo = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' );
256+ var format = require( '@stdlib/string/format' );
208257var addon = require( './../src/addon.node' );
209258
210259
@@ -220,6 +269,10 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
220269* @param {Float64Array} x - input vector
221270* @param {integer} strideX - `x` stride length
222271* @param {Float64Array} AP - packed form of a symmetric matrix `A`
272+ * @throws {TypeError} first argument must be a valid order
273+ * @throws {TypeError} second argument must specify whether the lower or upper triangular matrix is supplied
274+ * @throws {RangeError} third argument must be a nonnegative integer
275+ * @throws {RangeError} sixth argument must be non-zero
223276* @returns {Float64Array} `AP`
224277*
225278* @example
@@ -232,6 +285,22 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
232285* // AP => <Float64Array>[ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ]
233286*/
234287function dspr( order, uplo, N, alpha, x, strideX, AP ) {
288+ if ( !isLayout( order ) ) {
289+ throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) );
290+ }
291+ if ( !isMatrixTriangle( uplo ) ) {
292+ throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) );
293+ }
294+ if ( N < 0 ) {
295+ throw new RangeError( format( 'invalid argument. Third argument must be a nonnegative integer. Value: `%d`.', N ) );
296+ }
297+ if ( strideX === 0 ) {
298+ throw new RangeError( format( 'invalid argument. Sixth argument must be non-zero. Value: `%d`.', strideX ) );
299+ }
300+ // Check if we can early return...
301+ if ( N === 0 || alpha === 0.0 ) {
302+ return AP;
303+ }
235304 addon( resolveOrder( order ), resolveUplo( uplo ), N, alpha, x, strideX, AP ); // eslint-disable-line max-len
236305 return AP;
237306}
@@ -247,7 +316,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
247316 < div class ='footer quiet pad2 space-top1 center small '>
248317 Code coverage generated by
249318 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
250- at 2025-06-28T11:09:17.456Z
319+ at 2025-06-29T15:50:02.426Z
251320 </ div >
252321 < script src ="../../../../prettify.js "> </ script >
253322 < script >
0 commit comments