Skip to content

Commit 73d1ae6

Browse files
committed
chore: clean-up
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: passed - task: lint_package_json status: na - task: lint_repl_help status: passed - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: missing_dependencies - task: lint_c_examples status: missing_dependencies - task: lint_c_benchmarks status: missing_dependencies - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent 793c9c5 commit 73d1ae6

File tree

17 files changed

+612
-133
lines changed

17 files changed

+612
-133
lines changed

lib/node_modules/@stdlib/blas/base/dtrsv/README.md

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -194,15 +194,15 @@ console.log( x );
194194
#include "stdlib/blas/base/dtrsv.h"
195195
```
196196

197-
#### c_dtrsv( order, uplo, trans, diag, N, \*A, LDA, \*X, strideX )
197+
#### c_dtrsv( order, uplo, trans, diag, N, \*A, LDA, \*X, sx )
198198

199199
Solves one of the systems of equations `A*x = b` or `A^T*x = b` where `b` and `x` are `N` element vectors and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix.
200200

201201
```c
202202
#include "stdlib/blas/base/shared.h"
203203

204-
double A[] = { 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 0.0, 1.0 };
205-
const double x[] = { 1.0, 2.0, 3.0 };
204+
const double A[] = { 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 0.0, 1.0 };
205+
double x[] = { 1.0, 2.0, 3.0 };
206206

207207
c_dtrsv( CblasRowMajor, CblasUpper, CblasNoTrans, CblasUnit, 3, A, 3, x, 1 );
208208
```
@@ -214,25 +214,24 @@ The function accepts the following arguments:
214214
- **trans**: `[in] CBLAS_TRANSPOSE` specifies whether `A` should be transposed, conjugate-transposed, or not transposed.
215215
- **diag**: `[in] CBLAS_DIAG` specifies whether `A` has a unit diagonal.
216216
- **N**: `[in] CBLAS_INT` number of elements along each dimension of `A`.
217-
- **A**: `[inout] double*` input matrix.
217+
- **A**: `[in] double*` input matrix.
218218
- **LDA**: `[in] CBLAS_INT` stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`).
219-
- **X**: `[in] double*` input vector.
220-
- **strideX**: `[in] CBLAS_INT` index increment for `X`.
219+
- **X**: `[inout] double*` input vector.
220+
- **sx**: `[in] CBLAS_INT` stride length for `X`.
221221
222222
```c
223223
void c_dtrsv( const CBLAS_LAYOUT order, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const CBLAS_DIAG diag, const CBLAS_INT N, const double *A, const CBLAS_INT LDA, double *x, const CBLAS_INT strideX )
224224
```
225225

226-
<!-- lint disable maximum-heading-length -->
227-
#### c_dtrsv_ndarray( uplo, trans, diag, N, \*A, strideA1, strideA2, offsetA, \*X, strideX, offsetA )
226+
#### c_dtrsv_ndarray( uplo, trans, diag, N, \*A, sa1, sa2, oa, \*X, sx, oa )
228227

229228
Performs one of the matrix-vector operations `x = A*x` or `x = A^T*x` using alternative indexing semantics, where `x` is an `N` element vector and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix.
230229

231230
```c
232231
#include "stdlib/blas/base/shared.h"
233232

234-
double A[] = { 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 0.0, 1.0 };
235-
const double x[] = { 1.0, 2.0, 3.0 };
233+
const double A[] = { 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 0.0, 0.0, 1.0 };
234+
double x[] = { 1.0, 2.0, 3.0 };
236235

237236
c_dtrsv_ndarray( CblasUpper, CblasNoTrans, CblasUnit, 3, A, 3, 1, 0, x, 1, 0 );
238237
```
@@ -243,13 +242,13 @@ The function accepts the following arguments:
243242
- **trans**: `[in] CBLAS_TRANSPOSE` specifies whether `A` should be transposed, conjugate-transposed, or not transposed.
244243
- **diag**: `[in] CBLAS_DIAG` specifies whether `A` has a unit diagonal.
245244
- **N**: `[in] CBLAS_INT` number of elements along each dimension of `A`.
246-
- **A**: `[inout] double*` input matrix.
247-
- **strideA1**: `[in] CBLAS_INT` stride of the first dimension of `A`.
248-
- **strideA2**: `[in] CBLAS_INT` stride of the second dimension of `A`.
249-
- **offsetA**: `[in] CBLAS_INT` starting index for `A`.
250-
- **X**: `[in] double*` input vector.
251-
- **strideX**: `[in] CBLAS_INT` index increment for `X`.
252-
- **offsetX**: `[in] CBLAS_INT` starting index for `X`.
245+
- **A**: `[in] double*` input matrix.
246+
- **sa1**: `[in] CBLAS_INT` stride of the first dimension of `A`.
247+
- **sa2**: `[in] CBLAS_INT` stride of the second dimension of `A`.
248+
- **oa**: `[in] CBLAS_INT` starting index for `A`.
249+
- **X**: `[inout] double*` input vector.
250+
- **sx**: `[in] CBLAS_INT` stride length for `X`.
251+
- **ox**: `[in] CBLAS_INT` starting index for `X`.
253252
254253
```c
255254
void c_dtrsv_ndarray( const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const CBLAS_DIAG diag, const CBLAS_INT N, const double *A, const CBLAS_INT strideA1, const CBLAS_INT strideA2, const CBLAS_INT offsetA, double *x, const CBLAS_INT strideX, const CBLAS_INT offsetX )
@@ -279,9 +278,14 @@ void c_dtrsv_ndarray( const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const
279278
#include <stdio.h>
280279

281280
int main( void ) {
282-
// Create a strided array:
283-
const double A[] = { 1.0, 0.0, 0.0, 2.0, 1.0, 0.0, 3.0, 2.0, 1.0 };
284-
double X[] = { 1.0, 2.0, 3.0 };
281+
// Define a 3x3 matrix stored in row-major order:
282+
const double A[ 3*3 ] = {
283+
1.0, 0.0, 0.0,
284+
2.0, 1.0, 0.0,
285+
3.0, 2.0, 1.0
286+
};
287+
// Define `x` vector:
288+
double X[ 3 ] = { 1.0, 2.0, 3.0 };
285289

286290
// Specify the number of elements along each dimension of `A`:
287291
const int N = 3;
@@ -294,7 +298,7 @@ int main( void ) {
294298
printf( "X[ %i ] = %f\n", i, X[ i ] );
295299
}
296300

297-
// Perform the matrix-vector operations `A*X = b` for `lower` triangular matrix `A`:
301+
// Perform the matrix-vector operations `A*X = b` for `lower` triangular matrix `A` using alternative indexing semantics:
298302
c_dtrsv_ndarray( CblasLower, CblasNoTrans, CblasNonUnit, N, A, N, 1, 0, X, 1, 0 );
299303

300304
// Print the result:

lib/node_modules/@stdlib/blas/base/dtrsv/benchmark/c/benchmark.length.c

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
#include "stdlib/blas/base/dtrsv.h"
2020
#include "stdlib/blas/ext/base/dfill.h"
21-
#include "stdlib/math/base/special/floorf.h"
2221
#include <stdlib.h>
2322
#include <stdio.h>
2423
#include <math.h>
@@ -93,13 +92,13 @@ static double rand_double( void ) {
9392
* Runs a benchmark.
9493
*
9594
* @param iterations number of iterations
96-
* @param len array length
95+
* @param N array dimension size
9796
* @return elapsed time in seconds
9897
*/
99-
static double benchmark1( int iterations, int len ) {
98+
static double benchmark1( int iterations, int N ) {
10099
double elapsed;
101-
double A[ len*len ];
102-
double X[ len ];
100+
double A[ N*N ];
101+
double X[ N ];
103102
double t;
104103
int i;
105104
int j;
@@ -111,14 +110,14 @@ static double benchmark1( int iterations, int len ) {
111110
}
112111
t = tic();
113112
for ( i = 0; i < iterations; i++ ) {
114-
c_dtrsv( CblasRowMajor, CblasLower, CblasNoTrans, CblasUnit, len, A, len, X, 1 );
115-
if ( X[ i%len ] != X[ i%len ] ) {
113+
c_dtrsv( CblasRowMajor, CblasLower, CblasNoTrans, CblasUnit, N, A, N, X, 1 );
114+
if ( X[ i%N ] != X[ i%N ] ) {
116115
printf( "should not return NaN\n" );
117116
break;
118117
}
119118
}
120119
elapsed = tic() - t;
121-
if ( X[ i%len ] != X[ i%len ] ) {
120+
if ( X[ i%N ] != X[ i%N ] ) {
122121
printf( "should not return NaN\n" );
123122
}
124123
return elapsed;
@@ -128,13 +127,13 @@ static double benchmark1( int iterations, int len ) {
128127
* Runs a benchmark.
129128
*
130129
* @param iterations number of iterations
131-
* @param len array length
130+
* @param N array dimensions size
132131
* @return elapsed time in seconds
133132
*/
134-
static double benchmark2( int iterations, int len ) {
133+
static double benchmark2( int iterations, int N ) {
135134
double elapsed;
136-
double A[ len*len ];
137-
double X[ len ];
135+
double A[ N*N ];
136+
double X[ N ];
138137
double t;
139138
int i;
140139
int j;
@@ -146,14 +145,14 @@ static double benchmark2( int iterations, int len ) {
146145
}
147146
t = tic();
148147
for ( i = 0; i < iterations; i++ ) {
149-
c_dtrsv_ndarray( CblasLower, CblasNoTrans, CblasUnit, len, A, len, 1, 0, X, 1, 0 );
150-
if ( X[ i%len ] != X[ i%len ] ) {
148+
c_dtrsv_ndarray( CblasLower, CblasNoTrans, CblasUnit, N, A, N, 1, 0, X, 1, 0 );
149+
if ( X[ i%N ] != X[ i%N ] ) {
151150
printf( "should not return NaN\n" );
152151
break;
153152
}
154153
}
155154
elapsed = tic() - t;
156-
if ( X[ i%len ] != X[ i%len ] ) {
155+
if ( X[ i%N ] != X[ i%N ] ) {
157156
printf( "should not return NaN\n" );
158157
}
159158
return elapsed;
@@ -166,7 +165,7 @@ int main( void ) {
166165
double elapsed;
167166
int count;
168167
int iter;
169-
int len;
168+
int N;
170169
int i;
171170
int j;
172171

@@ -176,19 +175,19 @@ int main( void ) {
176175
print_version();
177176
count = 0;
178177
for ( i = MIN; i <= MAX; i++ ) {
179-
len = stdlib_base_floorf( pow( pow( 10, i ), 1.0/2.0 ) );
178+
N = floor( pow( pow( 10, i ), 1.0/2.0 ) );
180179
iter = ITERATIONS / pow( 10, i-1 );
181180
for ( j = 0; j < REPEATS; j++ ) {
182181
count += 1;
183-
printf( "# c::%s:len=%d\n", NAME, len );
184-
elapsed = benchmark1( iter, len );
182+
printf( "# c::%s:size=%d\n", NAME, N*N );
183+
elapsed = benchmark1( iter, N );
185184
print_results( iter, elapsed );
186185
printf( "ok %d benchmark finished\n", count );
187186
}
188187
for ( j = 0; j < REPEATS; j++ ) {
189188
count += 1;
190-
printf( "# c::%s:ndarray:len=%d\n", NAME, len );
191-
elapsed = benchmark2( iter, len );
189+
printf( "# c::%s:ndarray:size=%d\n", NAME, N*N );
190+
elapsed = benchmark2( iter, N );
192191
print_results( iter, elapsed );
193192
printf( "ok %d benchmark finished\n", count );
194193
}

lib/node_modules/@stdlib/blas/base/dtrsv/docs/repl.txt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
{{alias}}( ord, uplo, trans, diag, N, A, lda, x, sx )
2+
{{alias}}( order, uplo, trans, diag, N, A, lda, x, sx )
33
Solves one of the systems of equations `A*x = b` or `A^T*x = b` where `b`
44
and `x` are `N` element vectors and `A` is an `N` by `N` unit, or non-unit,
55
upper or lower triangular matrix.
@@ -11,7 +11,7 @@
1111

1212
Parameters
1313
----------
14-
ord: string
14+
order: string
1515
Row-major (C-style) or column-major (Fortran-style) order. Must be
1616
either 'row-major' or 'column-major'.
1717

@@ -48,11 +48,25 @@
4848

4949
Examples
5050
--------
51+
// Standard usage:
5152
> var x = new {{alias:@stdlib/array/float64}}( [ 1.0, 1.0 ] );
5253
> var A = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 0.0, 1.0 ] );
5354
> {{alias}}( 'row-major', 'upper', 'no-transpose', 'unit', 2, A, 2, x, 1 )
5455
<Float64Array>[ -1.0, 1.0 ]
5556

57+
// Advanced indexing:
58+
> x = new {{alias:@stdlib/array/float64}}( [ 1.0, 1.0 ] );
59+
> A = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 0.0, 1.0 ] );
60+
> {{alias}}( 'row-major', 'upper', 'no-transpose', 'unit', 2, A, 2, x, -1 )
61+
<Float64Array>[ 1.0, -1.0 ]
62+
63+
// Using typed array views:
64+
> var x0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 1.0, 1.0 ] );
65+
> A = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 0.0, 1.0 ] );
66+
> var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 );
67+
> {{alias}}( 'row-major', 'upper', 'no-transpose', 'unit', 2, A, 2, x1, 1 )
68+
<Float64Array>[ -1.0, 1.0 ]
69+
5670

5771
{{alias}}.ndarray( uplo, trans, diag, N, A, sa1, sa2, oa, x, sx, ox )
5872
Solves one of the systems of equations `A*x = b` or `A^T*x = b`, using

lib/node_modules/@stdlib/blas/base/dtrsv/examples/c/example.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@
2222

2323
int main( void ) {
2424
// Define a 3x3 matrix stored in row-major order:
25-
const double A[] = {
25+
const double A[ 3*3 ] = {
2626
1.0, 0.0, 0.0,
2727
2.0, 1.0, 0.0,
2828
3.0, 2.0, 1.0
2929
};
3030
// Define `x` vector:
31-
double X[] = { 1.0, 2.0, 3.0 };
31+
double X[ 3 ] = { 1.0, 2.0, 3.0 };
3232

3333
// Specify the number of elements along each dimension of `A`:
3434
const int N = 3;

lib/node_modules/@stdlib/blas/base/dtrsv/include/stdlib/blas/base/dtrsv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ extern "C" {
3434
/**
3535
* Solves one of the systems of equations `A*x = b` or `A^T*x = b` where `b` and `x` are `N` element vectors and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix.
3636
*/
37-
void API_SUFFIX(c_dtrsv)( const CBLAS_LAYOUT order, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const CBLAS_DIAG diag, const CBLAS_INT N, const double *A, const CBLAS_INT LDA, double *X, const CBLAS_INT strideX );
37+
void API_SUFFIX(c_dtrsv)( const CBLAS_LAYOUT layout, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const CBLAS_DIAG diag, const CBLAS_INT N, const double *A, const CBLAS_INT LDA, double *X, const CBLAS_INT strideX );
3838

3939
/**
4040
* Solves one of the systems of equations `A*x = b` or `A^T*x = b`, using alternative indexing semantics and where `b` and `x` are `N` element vectors and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix.

lib/node_modules/@stdlib/blas/base/dtrsv/include/stdlib/blas/base/dtrsv_cblas.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ extern "C" {
3535
/**
3636
* Solves one of the systems of equations `A*x = b` or `A^T*x = b` where `b` and `x` are `N` element vectors and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix.
3737
*/
38-
void API_SUFFIX(cblas_dtrsv)( const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const CBLAS_DIAG diag, const CBLAS_INT N, const double *A, const CBLAS_INT strideA1, const CBLAS_INT strideA2, const CBLAS_INT offsetA, double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX );
38+
void API_SUFFIX(cblas_dtrsv)( const CBLAS_LAYOUT layout, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE trans, const CBLAS_DIAG diag, const CBLAS_INT N, const double *A, const CBLAS_INT strideA1, const CBLAS_INT strideA2, const CBLAS_INT offsetA, double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX );
3939

4040
#ifdef __cplusplus
4141
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020

2121
// MODULES //
2222

23-
var max = require( '@stdlib/math/base/special/fast/max' );
23+
var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' );
2424
var isLayout = require( '@stdlib/blas/base/assert/is-layout' );
2525
var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' );
2626
var isTransposeOperation = require( '@stdlib/blas/base/assert/is-transpose-operation' );
2727
var isDiagonal = require( '@stdlib/blas/base/assert/is-diagonal-type' );
28-
var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' );
2928
var stride2offset = require( '@stdlib/strided/base/stride2offset' );
29+
var max = require( '@stdlib/math/base/special/fast/max' );
3030
var format = require( '@stdlib/string/format' );
3131
var base = require( './base.js' );
3232

@@ -50,7 +50,7 @@ var base = require( './base.js' );
5050
* @throws {TypeError} third argument must be a valid transpose operation
5151
* @throws {TypeError} fourth argument must be a valid diagonal type
5252
* @throws {RangeError} fifth argument must be a nonnegative integer
53-
* @throws {RangeError} seventh argument must be greater than or equal to max(1,N)
53+
* @throws {RangeError} seventh argument must be a valid stride
5454
* @throws {RangeError} ninth argument must be non-zero
5555
* @returns {Float64Array} `x`
5656
*
@@ -89,6 +89,7 @@ function dtrsv( order, uplo, trans, diag, N, A, LDA, x, strideX ) {
8989
if ( strideX === 0 ) {
9090
throw new RangeError( format( 'invalid argument. Ninth argument must be non-zero. Value: `%d`.', strideX ) );
9191
}
92+
// Check if we can early return...
9293
if ( N === 0 ) {
9394
return x;
9495
}

lib/node_modules/@stdlib/blas/base/dtrsv/lib/dtrsv.native.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,16 @@
2020

2121
// MODULES //
2222

23+
var isLayout = require( '@stdlib/blas/base/assert/is-layout' );
24+
var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' );
25+
var isTransposeOperation = require( '@stdlib/blas/base/assert/is-transpose-operation' );
26+
var isDiagonal = require( '@stdlib/blas/base/assert/is-diagonal-type' );
2327
var resolveOrder = require( '@stdlib/blas/base/layout-resolve-enum' );
2428
var resolveUplo = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' );
2529
var resolveTrans = require( '@stdlib/blas/base/transpose-operation-resolve-enum' );
2630
var resolveDiag = require( '@stdlib/blas/base/diagonal-type-resolve-enum' );
31+
var max = require( '@stdlib/math/base/special/fast/max' );
32+
var format = require( '@stdlib/string/format' );
2733
var addon = require( './../src/addon.node' );
2834

2935

@@ -41,6 +47,13 @@ var addon = require( './../src/addon.node' );
4147
* @param {integer} LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`)
4248
* @param {Float64Array} x - input vector
4349
* @param {integer} strideX - `x` stride length
50+
* @throws {TypeError} first argument must be a valid order
51+
* @throws {TypeError} second argument must specify whether a lower or upper triangular matrix is supplied
52+
* @throws {TypeError} third argument must be a valid transpose operation
53+
* @throws {TypeError} fourth argument must be a valid diagonal type
54+
* @throws {RangeError} fifth argument must be a nonnegative integer
55+
* @throws {RangeError} seventh argument must be a valid stride
56+
* @throws {RangeError} ninth argument must be non-zero
4457
* @returns {Float64Array} `x`
4558
*
4659
* @example
@@ -53,6 +66,31 @@ var addon = require( './../src/addon.node' );
5366
* // x => <Float64Array>[ 0.0, -4.0, 3.0 ]
5467
*/
5568
function dtrsv( order, uplo, trans, diag, N, A, LDA, x, strideX ) {
69+
if ( !isLayout( order ) ) {
70+
throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) );
71+
}
72+
if ( !isMatrixTriangle( uplo ) ) {
73+
throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) );
74+
}
75+
if ( !isTransposeOperation( trans ) ) {
76+
throw new TypeError( format( 'invalid argument. Third argument must be a valid transpose operation. Value: `%s`.', trans ) );
77+
}
78+
if ( !isDiagonal( diag ) ) {
79+
throw new TypeError( format( 'invalid argument. Fourth argument must be a valid diagonal type. Value: `%s`.', diag ) );
80+
}
81+
if ( N < 0 ) {
82+
throw new RangeError( format( 'invalid argument. Fifth argument must be a nonnegative integer. Value: `%d`.', N ) );
83+
}
84+
if ( LDA < max( 1, N ) ) {
85+
throw new RangeError( format( 'invalid argument. Seventh argument must be greater than or equal to max(1,%d). Value: `%d`.', N, LDA ) );
86+
}
87+
if ( strideX === 0 ) {
88+
throw new RangeError( format( 'invalid argument. Ninth argument must be non-zero. Value: `%d`.', strideX ) );
89+
}
90+
// Check if we can early return...
91+
if ( N === 0 ) {
92+
return x;
93+
}
5694
addon( resolveOrder( order ), resolveUplo( uplo ), resolveTrans( trans ), resolveDiag( diag ), N, A, LDA, x, strideX ); // eslint-disable-line max-len
5795
return x;
5896
}

0 commit comments

Comments
 (0)