Skip to content

Commit 0723bf6

Browse files
ShabiShett07kgryte
andauthored
test: add test cases for blas/base/dgemv
PR-URL: #7124 Co-authored-by: Athan Reines <[email protected]> Reviewed-by: Athan Reines <[email protected]>
1 parent a889189 commit 0723bf6

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

lib/node_modules/@stdlib/blas/base/dgemv/lib/dgemv.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
// MODULES //
2222

23+
var max = require( '@stdlib/math/base/special/fast/max' );
2324
var stride2offset = require( '@stdlib/strided/base/stride2offset' );
2425
var isLayout = require( '@stdlib/blas/base/assert/is-layout' );
2526
var isMatrixTranspose = require( '@stdlib/blas/base/assert/is-transpose-operation' );
@@ -65,13 +66,16 @@ var base = require( './base.js' );
6566
* // y => <Float64Array>[ 7.0, 16.0 ]
6667
*/
6768
function dgemv( order, trans, M, N, alpha, A, LDA, x, strideX, beta, y, strideY ) { // eslint-disable-line max-params, max-len
69+
var iscm;
70+
var vala;
6871
var xlen;
6972
var ylen;
7073
var sa1;
7174
var sa2;
7275
var ox;
7376
var oy;
7477

78+
iscm = isColumnMajor( order );
7579
if ( !isLayout( order ) ) {
7680
throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) );
7781
}
@@ -84,6 +88,14 @@ function dgemv( order, trans, M, N, alpha, A, LDA, x, strideX, beta, y, strideY
8488
if ( N < 0 ) {
8589
throw new RangeError( format( 'invalid argument. Fourth argument must be a nonnegative integer. Value: `%d`.', N ) );
8690
}
91+
if ( iscm ) {
92+
vala = M;
93+
} else {
94+
vala = N;
95+
}
96+
if ( LDA < max( 1, vala ) ) {
97+
throw new RangeError( format( 'invalid argument. Seventh argument must be greater than or equal to max(1,%d). Value: `%d`.', vala, LDA ) );
98+
}
8799
if ( strideX === 0 ) {
88100
throw new RangeError( format( 'invalid argument. Ninth argument must be non-zero.' ) );
89101
}
@@ -103,7 +115,7 @@ function dgemv( order, trans, M, N, alpha, A, LDA, x, strideX, beta, y, strideY
103115
}
104116
ox = stride2offset( xlen, strideX );
105117
oy = stride2offset( ylen, strideY );
106-
if ( isColumnMajor( order ) ) {
118+
if ( iscm ) {
107119
sa1 = 1;
108120
sa2 = LDA;
109121
} else { // order === 'row-major'

lib/node_modules/@stdlib/blas/base/dgemv/test/test.dgemv.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,33 @@ tape( 'the function throws an error if provided an invalid fourth argument', fun
159159
}
160160
});
161161

162+
tape( 'the function throws an error if provided an invalid seventh argument', function test( t ) {
163+
var values;
164+
var data;
165+
var i;
166+
167+
data = rnt;
168+
169+
values = [
170+
1,
171+
0,
172+
-1,
173+
-2,
174+
-3
175+
];
176+
177+
for ( i = 0; i < values.length; i++ ) {
178+
t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
179+
}
180+
t.end();
181+
182+
function badValue( value ) {
183+
return function badValue() {
184+
dgemv( data.order, data.trans, data.M, data.N, data.alpha, new Float64Array( data.A ), value, new Float64Array( data.x ), data.strideX, data.beta, new Float64Array( data.y ), data.strideY );
185+
};
186+
}
187+
});
188+
162189
tape( 'the function throws an error if provided an invalid ninth argument', function test( t ) {
163190
var values;
164191
var data;

0 commit comments

Comments
 (0)