@@ -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 '> 67/67 </ span >
28+ < span class ='fraction '> 93/93 </ 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 '> 67/67 </ span >
49+ < span class ='fraction '> 93/93 </ span >
5050 </ div >
5151
5252
@@ -130,7 +130,33 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
130130< a name ='L65 '> </ a > < a href ='#L65 '> 65</ a >
131131< a name ='L66 '> </ a > < a href ='#L66 '> 66</ a >
132132< a name ='L67 '> </ a > < a href ='#L67 '> 67</ a >
133- < a name ='L68 '> </ a > < a href ='#L68 '> 68</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
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 > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
134160< span class ="cline-any cline-yes "> 2x</ span >
135161< span class ="cline-any cline-yes "> 2x</ span >
136162< span class ="cline-any cline-yes "> 2x</ span >
@@ -188,10 +214,36 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
188214< span class ="cline-any cline-yes "> 2x</ span >
189215< span class ="cline-any cline-yes "> 2x</ span >
190216< span class ="cline-any cline-yes "> 2x</ span >
191- < span class ="cline-any cline-yes "> 34x</ span >
192- < span class ="cline-any cline-yes "> 34x</ span >
193- < span class ="cline-any cline-yes "> 34x</ span >
194- < span class ="cline-any cline-yes "> 34x</ 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 "> 2x</ span >
224+ < span class ="cline-any cline-yes "> 50x</ span >
225+ < span class ="cline-any cline-yes "> 50x</ span >
226+ < span class ="cline-any cline-yes "> 4x</ span >
227+ < span class ="cline-any cline-yes "> 4x</ span >
228+ < span class ="cline-any cline-yes "> 50x</ span >
229+ < span class ="cline-any cline-yes "> 3x</ span >
230+ < span class ="cline-any cline-yes "> 3x</ span >
231+ < span class ="cline-any cline-yes "> 50x</ span >
232+ < span class ="cline-any cline-yes "> 3x</ span >
233+ < span class ="cline-any cline-yes "> 3x</ span >
234+ < span class ="cline-any cline-yes "> 50x</ span >
235+ < span class ="cline-any cline-yes "> 1x</ span >
236+ < span class ="cline-any cline-yes "> 1x</ span >
237+ < span class ="cline-any cline-yes "> 50x</ span >
238+ < span class ="cline-any cline-yes "> 1x</ span >
239+ < span class ="cline-any cline-yes "> 1x</ span >
240+ < span class ="cline-any cline-yes "> 38x</ span >
241+ < span class ="cline-any cline-yes "> 50x</ span >
242+ < span class ="cline-any cline-yes "> 6x</ span >
243+ < span class ="cline-any cline-yes "> 6x</ span >
244+ < span class ="cline-any cline-yes "> 32x</ span >
245+ < span class ="cline-any cline-yes "> 32x</ span >
246+ < span class ="cline-any cline-yes "> 50x</ span >
195247< span class ="cline-any cline-yes "> 2x</ span >
196248< span class ="cline-any cline-yes "> 2x</ span >
197249< span class ="cline-any cline-yes "> 2x</ span >
@@ -219,7 +271,9 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
219271
220272// MODULES //
221273
274+ var isMatrixTranspose = require( '@stdlib/blas/base/assert/is-transpose-operation' );
222275var resolveTrans = require( '@stdlib/blas/base/transpose-operation-resolve-enum' );
276+ var format = require( '@stdlib/string/format' );
223277var addon = require( './../src/addon.node' );
224278
225279
@@ -243,6 +297,11 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
243297* @param {Float32Array} y - second input vector
244298* @param {integer} strideY - `y` stride length
245299* @param {NonNegativeInteger} offsetY - starting index for `y`
300+ * @throws {TypeError} first argument must be a valid transpose operation
301+ * @throws {RangeError} second argument must be a nonnegative integer
302+ * @throws {RangeError} third argument must be a nonnegative integer
303+ * @throws {RangeError} tenth argument must be non-zero
304+ * @throws {RangeError} fourteenth argument must be non-zero
246305* @returns {Float32Array} `y`
247306*
248307* @example
@@ -256,6 +315,25 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
256315* // y => <Float32Array>[ 7.0, 16.0 ]
257316*/
258317function sgemv( trans, M, N, alpha, A, strideA1, strideA2, offsetA, x, strideX, offsetX, beta, y, strideY, offsetY ) { // eslint-disable-line max-params, max-len
318+ if ( !isMatrixTranspose( trans ) ) {
319+ throw new TypeError( format( 'invalid argument. First argument must be a valid transpose operation. Value: `%s`.', trans ) );
320+ }
321+ if ( M < 0 ) {
322+ throw new RangeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%d`.', M ) );
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. Tenth argument must be non-zero. Value: `%d`.', strideX ) );
329+ }
330+ if ( strideY === 0 ) {
331+ throw new RangeError( format( 'invalid argument. Fourteenth argument must be non-zero. Value: `%d`.', strideY ) );
332+ }
333+ // Check if we can early return...
334+ if ( M === 0 || N === 0 || ( alpha === 0.0 && beta === 1.0 ) ) {
335+ return y;
336+ }
259337 addon.ndarray( resolveTrans( trans ), M, N, alpha, A, strideA1, strideA2, offsetA, x, strideX, offsetX, beta, y, strideY, offsetY ); // eslint-disable-line max-len
260338 return y;
261339}
@@ -271,7 +349,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/b
271349 < div class ='footer quiet pad2 space-top1 center small '>
272350 Code coverage generated by
273351 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
274- at 2025-06-30T10:22:15.313Z
352+ at 2025-06-30T13:01:51.002Z
275353 </ div >
276354 < script src ="../../../../prettify.js "> </ script >
277355 < script >
0 commit comments