Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions lib/node_modules/@stdlib/blas/base/dgemm/lib/ndarray.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,24 @@ function dgemm( transA, transB, M, N, K, alpha, A, strideA1, strideA2, offsetA,
if ( K < 0 ) {
throw new RangeError( format( 'invalid argument. Fifth argument must be a nonnegative integer. Value: `%d`.', K ) );
}
if ( strideA1 === 0 ) {
throw new RangeError( format( 'invalid argument. Eighth argument must be non-zero.', strideA1 ) );
}
if ( strideA2 === 0 ) {
throw new RangeError( format( 'invalid argument. Ninth argument must be non-zero.', strideA2 ) );
}
if ( strideB1 === 0 ) {
throw new RangeError( format( 'invalid argument. Twelfth argument must be non-zero.', strideB1 ) );
}
if ( strideB2 === 0 ) {
throw new RangeError( format( 'invalid argument. Thirteenth argument must be non-zero.', strideB2 ) );
}
if ( strideC1 === 0 ) {
throw new RangeError( format( 'invalid argument. Seventeenth argument must be non-zero.', strideC1 ) );
}
if ( strideC2 === 0 ) {
throw new RangeError( format( 'invalid argument. Eighteenth argument must be non-zero.', strideC2 ) );
}
return base( transA, transB, M, N, K, alpha, A, strideA1, strideA2, offsetA, B, strideB1, strideB2, offsetB, beta, C, strideC1, strideC2, offsetC ); // eslint-disable-line max-len
}

Expand Down
138 changes: 138 additions & 0 deletions lib/node_modules/@stdlib/blas/base/dgemm/test/test.ndarray.js
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,144 @@
}
});

tape( 'the function throws an error if provided an invalid eighth argument', function test( t ) {
var values;
var data;
var i;

data = rarbrcntantb;

values = [
0
];

for ( i = 0; i < values.length; i++ ) {
t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
}
t.end();

function badValue( value ) {
return function badValue() {
dgemm( data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float64Array( data.A ), value, data.strideA2, data.offsetA, new Float64Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float64Array( data.C ), data.strideC1, data.strideC2, data.offsetC );
};
}
});

tape( 'the function throws an error if provided an invalid ninth argument', function test( t ) {
var values;
var data;
var i;

data = rarbrcntantb;

values = [
0
];

for ( i = 0; i < values.length; i++ ) {
t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
}
t.end();

function badValue( value ) {
return function badValue() {
dgemm( data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float64Array( data.A ), data.strideA1, value, data.offsetA, new Float64Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float64Array( data.C ), data.strideC1, data.strideC2, data.offsetC );
};
}
});

tape( 'the function throws an error if provided an invalid twelfth argument', function test( t ) {
var values;
var data;
var i;

data = rarbrcntantb;

values = [
0
];

for ( i = 0; i < values.length; i++ ) {
t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
}
t.end();

function badValue( value ) {
return function badValue() {
dgemm( data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float64Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float64Array( data.B ), value, data.strideB2, data.offsetB, data.beta, new Float64Array( data.C ), data.strideC1, data.strideC2, data.offsetC );
};
}
});

tape( 'the function throws an error if provided an invalid thirteenth argument', function test( t ) {
var values;
var data;
var i;

data = rarbrcntantb;

values = [
0
];

for ( i = 0; i < values.length; i++ ) {
t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
}
t.end();

function badValue( value ) {
return function badValue() {
dgemm( data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float64Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float64Array( data.B ), data.strideB1, value, data.offsetB, data.beta, new Float64Array( data.C ), data.strideC1, data.strideC2, data.offsetC );
};
}
});

tape( 'the function throws an error if provided an invalid seventeenth argument', function test( t ) {
var values;
var data;
var i;

data = rarbrcntantb;

values = [
0
];

for ( i = 0; i < values.length; i++ ) {
t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
}
t.end();

function badValue( value ) {
return function badValue() {
dgemm( data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float64Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float64Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float64Array( data.C ), value, data.strideC2, data.offsetC );
};
}
});

tape( 'the function throws an error if provided an invalid eighteenth argument', function test( t ) {
var values;
var data;
var i;

data = rarbrcntantb;

values = [
0
];

for ( i = 0; i < values.length; i++ ) {
t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
}
t.end();

function badValue( value ) {
return function badValue() {
dgemm( data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float64Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float64Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float64Array( data.C ), data.strideC1, value, data.offsetC );
};
}
});

tape( 'the function performs the matrix-matrix operation `C = α*op(A)*op(B) + β*C` (column_major, column_major, column_major, no-transpose, no-transpose)', function test( t ) {
var expected;
var data;
Expand Down Expand Up @@ -1167,7 +1305,7 @@
data = rarbcctantbsb1sb2;

a = new Float64Array( data.A );
b = new Float64Array( data.B );

Check warning on line 1308 in lib/node_modules/@stdlib/blas/base/dgemm/test/test.ndarray.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

File has too many lines (1212). Maximum allowed is 1000
c = new Float64Array( data.C );

expected = new Float64Array( data.C_out );
Expand Down