From 10e886686874343f56c763519c73285f1c295d8a Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 29 Jun 2025 10:25:29 +0000 Subject: [PATCH 01/20] feat: add lapack/base/dlascl --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../@stdlib/lapack/base/dlascl/lib/base.js | 285 ++++++++++++++++++ 1 file changed, 285 insertions(+) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js new file mode 100644 index 000000000000..35332af8f360 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js @@ -0,0 +1,285 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable max-statements, max-len */ + +'use strict'; + +// MODULES // + +var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major' ); +var abs = require( '@stdlib/math/base/special/abs' ); +var dlamch = require( '@stdlib/lapack/base/dlamch' ); +var loopOrder = require( '@stdlib/ndarray/base/nullary-loop-interchange-order' ); +var max = require( '@stdlib/math/base/special/fast/max' ); +var min = require( '@stdlib/math/base/special/fast/min' ); + + +// VARIABLES // + +var smlnum = dlamch( 'safe minimum' ); +var bignum = 1.0 / smlnum; + + +// MAIN // + +/** +* Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV`. +* +* @private +* @param {string} type - specifies the type of matrix `A` +* @param {NonNegativeInteger} KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. +* @param {NonNegativeInteger} KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. +* @param {number} CFROM - selected elements in `A` are multiplied by `CTO / CFROM` +* @param {number} CTO - selected elements in `A` are multiplied by `CTO / CFROM` +* @param {NonNegativeInteger} M - number of rows in matrix `A` +* @param {NonNegativeInteger} N - number of columns in matrix `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @returns {Float64Array} scaled matrix `A` +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); // => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] +* +* dlascl( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2, 1, 0 ); +* // A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +*/ +function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-params + var cfromc; + var cfrom1; + var ctoc; + var cto1; + var done; + var mul; + var da1; + var da0; + var S1; + var S0; + var ia; + var i0; + var i1; + var k3; + var k4; + var k1; + var k2; + var sh; + var sa; + var o; + + if ( N === 0 || M === 0 ) { + return A; + } + + done = false; + + cfromc = CFROM; + ctoc = CTO; + + while ( !done ) { + cfrom1 = CTO * smlnum; + if ( cfrom1 === cfromc ) { + // cfromc is Infinity, multiply by a correctly signed zero for finite ctoc or NaN + mul = ctoc / cfromc; + done = true; + cto1 = ctoc; + } else { + cto1 = ctoc / bignum; + if ( cto1 === ctoc ) { + // ctoc is either zero or Infinity, thus ctoc itself is a correct multiplication factor + mul = ctoc; + done = true; + cfromc = 1.0; + } else if ( abs( cfrom1 ) > abs( ctoc ) && ctoc !== 0.0 ) { + mul = smlnum; + done = false; + ctoc = cto1; + } else if ( abs( cto1 ) > abs( cfromc ) ) { + mul = bignum; + done = false; + ctoc = cto1; + } else { + mul = ctoc / cfromc; + done = true; + } + } + + if ( type === 'general' ) { + // Full matrix + + // Resolve the loop interchange order: + o = loopOrder( [ M, N ], [ strideA1, strideA2 ] ); + sh = o.sh; + sa = o.sx; + + // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... + S0 = sh[ 0 ]; + S1 = sh[ 1 ]; + da0 = sa[ 0 ]; + da1 = sa[ 1 ] - ( S0*sa[0] ); + + // Set the pointers to the first indexed elements in the respective matrices... + ia = offsetA; + + // Iterate over the matrix dimensions... + for ( i1 = 0; i1 < S1; i1++ ) { + for ( i0 = 0; i0 < S0; i0++ ) { + A[ ia ] *= mul; + ia += da0; + } + ia += da1; + } + } + + if ( type === 'upper' ) { + // Upper triangular matrix + ia = offsetA; + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + for ( i1 = 0; i1 < M; i1++ ) { + for ( i0 = i1; i0 < N; i0++ ) { + A[ ia+(i0*strideA2) ] *= mul; + } + ia += strideA1; + } + } else { + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = 0; i0 <= min( i1, M-1 ); i0++ ) { + A[ ia+(i0*strideA1) ] *= mul; + } + ia += strideA2; + } + } + } + + if ( type === 'lower' ) { + // Lower triangular matrix + ia = offsetA; + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + for ( i1 = 0; i1 < M; i1++ ) { + for ( i0 = 0; i0 <= min( i1, N-1 ); i0++ ) { + A[ ia+(i0*strideA2) ] *= mul; + } + ia += strideA1; + } + } else { + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = i1; i0 < M; i0++ ) { + A[ ia+(i0*strideA1) ] *= mul; + } + ia += strideA2; + } + } + } + + if ( type === 'upper-hessenberg' ) { + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + ia = offsetA; + for ( i1 = 0; i1 < M; i1++ ) { + for ( i0 = 0; i0 <= min( i1+1, N-1 ); i0++ ) { + A[ ia+(i0*strideA2) ] *= mul; + } + ia += strideA1; + } + } else { + ia = offsetA; + for ( i0 = 0; i0 < N; i0++ ) { + for ( i1 = 0; i1 <= min( i0+1, M-1 ); i1++ ) { + A[ ia+(i1*strideA1) ] *= mul; + } + ia += strideA2; + } + } + } + + if ( type === 'symmetric-banded-lower' ) { + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + ia = offsetA; + k3 = KL + 1; + k4 = N; + for ( i1 = 0; i1 < M; i1++ ) { + for ( i0 = max( 0, i1 - KL ); i0 < min( k4, i1 + 1 ); i0++ ) { + A[ ia+( ( i1-i0 ) * strideA2) ] *= mul; + } + ia += strideA1; + } + } else { + ia = offsetA; + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = 0; i0 < min( k3, k4 - i1 ); i0++ ) { + A[ ia+(i0*strideA1) ] *= mul; + } + ia += strideA2; + } + } + } + + if ( type === 'symmetric-banded-upper' ) { + k1 = KU + 1; + ia = offsetA; + + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + for ( i1 = 0; i1 < M; i1++ ) { + for ( i0 = i1; i0 < min( N, i1 + k1 ); i0++ ) { + A[ ia + ( (i0-i1) * strideA2) ] *= mul; + } + ia += strideA1; + } + } else { + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = max( k1 - i1, 0 ); i0 < k1; i0++ ) { + A[ ia+(i0*strideA1) ] *= mul; + } + ia += strideA2; + } + } + } + + if ( type === 'banded' ) { + k1 = KL + KU + 2; + k2 = KL + 1; + k3 = ( 2 * KL ) + KU + 1; + k4 = KL + KU + 1 + M; + ia = offsetA; + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + for ( i1 = 0; i1 < M; i1++ ) { + for ( i0 = max( 0, i1 - KL ); i0 <= min( N - 1, i1 + KU ); i0++ ) { + A[ ia + ( ( i0 - i1 + KL ) * strideA2 ) ] *= mul; + } + ia += strideA1; + } + } else { + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = max( k1 - i1, k2 ); i0 <= min( k3, k4-i1 ); i0++ ) { + A[ ia+(i0*strideA1) ] *= mul; + } + ia += strideA2; + } + } + } + } + + return A; +} + + +// EXPORTS // + +module.exports = dlascl; From 5e0cb56334d0e34733477c9e71913bdee94c7304 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 29 Jun 2025 11:46:45 +0000 Subject: [PATCH 02/20] feat: add main exports --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../@stdlib/lapack/base/dlascl/lib/base.js | 6 +- .../@stdlib/lapack/base/dlascl/lib/dlascl.js | 106 ++++++++++++++++++ .../@stdlib/lapack/base/dlascl/lib/index.js | 59 ++++++++++ .../@stdlib/lapack/base/dlascl/lib/main.js | 35 ++++++ .../@stdlib/lapack/base/dlascl/lib/ndarray.js | 65 +++++++++++ 5 files changed, 268 insertions(+), 3 deletions(-) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/lib/index.js create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/lib/main.js create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/lib/ndarray.js diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js index 35332af8f360..8f2e2ed0fbe6 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js @@ -39,14 +39,14 @@ var bignum = 1.0 / smlnum; // MAIN // /** -* Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV`. +* Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM`. * * @private * @param {string} type - specifies the type of matrix `A` * @param {NonNegativeInteger} KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. * @param {NonNegativeInteger} KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. -* @param {number} CFROM - selected elements in `A` are multiplied by `CTO / CFROM` -* @param {number} CTO - selected elements in `A` are multiplied by `CTO / CFROM` +* @param {number} CFROM - the matrix `A` are multiplied by `CTO / CFROM` +* @param {number} CTO - the matrix `A` are multiplied by `CTO / CFROM` * @param {NonNegativeInteger} M - number of rows in matrix `A` * @param {NonNegativeInteger} N - number of columns in matrix `A` * @param {Float64Array} A - input matrix diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js new file mode 100644 index 000000000000..934b45784a29 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); +var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major-string' ); +var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); +var max = require( '@stdlib/math/base/special/max' ); +var format = require( '@stdlib/string/format' ); +var base = require( './base.js' ); + + +// MAIN // + +/** +* Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM`. +* +* @param {string} order - storage layout +* @param {string} type - specifies the type of matrix `A` +* @param {NonNegativeInteger} KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. +* @param {NonNegativeInteger} KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. +* @param {number} CFROM - the matrix `A` are multiplied by `CTO / CFROM` +* @param {number} CTO - the matrix `A` are multiplied by `CTO / CFROM` +* @param {NonNegativeInteger} M - number of rows in matrix `A` +* @param {NonNegativeInteger} N - number of columns in matrix `A` +* @param {Float64Array} A - input matrix +* @param {PositiveInteger} LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`) +* @throws {TypeError} first argument must be a valid order +* @throws {RangeError} fourth argument must be greater than or equal to max(1,N) +* @returns {Float64Array} scaled matrix `A` +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); // => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] +* +* dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); +* // A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +*/ +function dlascl( order, type, KL, KU, CFROM, CTO, M, N, A, LDA ) { + var sa1; + var sa2; + var s; + + if ( !isLayout( order ) ) { + throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); + } + + if ( type !== 'general' && type !== 'upper' && type !== 'lower' && type !== 'upper-hessenberg' && type !== 'symmetric-banded-lower' && type !== 'symmetric-banded-upper' && type !== 'banded' ) { + throw new TypeError( format( 'invalid argument. First argument must be a valid matrix type. Value: `%s`.', type ) ); + } + + if ( type === 'general' || type === 'upper' || type === 'lower' || type === 'upper-hessenberg' ) { + if ( isRowMajor( order ) ) { + s = N; + } else { + s = M; + } + if ( LDA < max( 1, s ) ) { + throw new RangeError( format( 'invalid argument. Fifth argument must be greater than or equal to max(1,%d). Value: `%d`.', s, LDA ) ); + } + } else if ( type === 'symmetric-banded-lower' ) { + if ( LDA < max( 1, KL+1 ) ) { + throw new RangeError( format( 'invalid argument. Fifth argument must be greater than or equal to max(1,%d). Value: `%d`.', KL+1, LDA ) ); + } + } else if ( type === 'symmetric-banded-upper' ) { + if ( LDA < max( 1, KU+1 ) ) { + throw new RangeError( format( 'invalid argument. Fifth argument must be greater than or equal to max(1,%d). Value: `%d`.', KU+1, LDA ) ); + } + } else if ( LDA < max( 1, (2*KL) + KU +1 ) ) { + throw new RangeError( format( 'invalid argument. Fifth argument must be greater than or equal to max(1,%d). Value: `%d`.', (2*KL) + KU +1, LDA ) ); + } + + if ( isColumnMajor( order ) ) { + sa1 = 1; + sa2 = LDA; + } else { // order === 'row-major' + sa1 = LDA; + sa2 = 1; + } + + return base( type, KL, KU, CFROM, CTO, M, N, A, sa1, sa2, 0 ); +} + + +// EXPORTS // + +module.exports = dlascl; diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/index.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/index.js new file mode 100644 index 000000000000..64b687f0995f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* LAPACK routine to multiply a real M by N matrix `A` by a real scalar `CTO/CFROM`. +* +* @module @stdlib/lapack/base/dlascl +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dlascl = require( '@stdlib/lapack/base/dlascl' ); +* +* var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); // => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] +* +* dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); +* // A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var dlascl; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + dlascl = main; +} else { + dlascl = tmp; +} + + +// EXPORTS // + +module.exports = dlascl; + +// exports: { "ndarray": "dlascl.ndarray" } diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/main.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/main.js new file mode 100644 index 000000000000..76e9fd4d9586 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dlascl = require( './dlascl.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( dlascl, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dlascl; diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/ndarray.js new file mode 100644 index 000000000000..d2913fed0706 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/ndarray.js @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var format = require( '@stdlib/string/format' ); +var base = require( './base.js' ); + + +// MAIN // + +/** +* Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM` using alternative indexing semantics. +* +* @param {string} type - specifies the type of matrix `A` +* @param {NonNegativeInteger} KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. +* @param {NonNegativeInteger} KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. +* @param {number} CFROM - the matrix `A` are multiplied by `CTO / CFROM` +* @param {number} CTO - the matrix `A` are multiplied by `CTO / CFROM` +* @param {NonNegativeInteger} M - number of rows in matrix `A` +* @param {NonNegativeInteger} N - number of columns in matrix `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @throws {TypeError} first argument must be a valid order +* @throws {RangeError} fourth argument must be greater than or equal to max(1,N) +* @returns {Float64Array} scaled matrix `A` +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); // => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] +* +* dlascl( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2, 1, 0 ); +* // A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +*/ +function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-len, max-params + if ( type !== 'general' && type !== 'upper' && type !== 'lower' && type !== 'upper-hessenberg' && type !== 'symmetric-banded-lower' && type !== 'symmetric-banded-upper' && type !== 'banded' ) { + throw new TypeError( format( 'invalid argument. First argument must be a valid matrix type. Value: `%s`.', type ) ); + } + return base( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dlascl; From 543cbc77f6ec5143453caa00d05030570c12e9e7 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Mon, 30 Jun 2025 07:46:41 +0000 Subject: [PATCH 03/20] test: add initial tests --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - 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: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../@stdlib/lapack/base/dlascl/lib/index.js | 2 +- .../test/fixtures/column_major_general.json | 16 + .../test/fixtures/column_major_lower.json | 16 + .../test/fixtures/column_major_upper.json | 16 + .../test/fixtures/row_major_general.json | 16 + .../dlascl/test/fixtures/row_major_lower.json | 16 + .../dlascl/test/fixtures/row_major_upper.json | 16 + .../lapack/base/dlascl/test/test.dlascl.js | 340 ++++++++++++++++++ .../@stdlib/lapack/base/dlascl/test/test.js | 82 +++++ .../lapack/base/dlascl/test/test.ndarray.js | 197 ++++++++++ 10 files changed, 716 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_general.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_lower.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_upper.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_general.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_lower.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_upper.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/test.js create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/index.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/index.js index 64b687f0995f..c1efddb9eef0 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/index.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/index.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_general.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_general.json new file mode 100644 index 000000000000..0965f8c6d83c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_general.json @@ -0,0 +1,16 @@ +{ + "order": "column-major", + "type": "general", + "M": 3, + "N": 2, + "KL": 0, + "KU": 0, + "CFROM": 1.0, + "CTO": 2.0, + "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ], + "LDA": 3, + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + "A_out": [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_lower.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_lower.json new file mode 100644 index 000000000000..4cdd2956d8b7 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_lower.json @@ -0,0 +1,16 @@ +{ + "order": "column-major", + "type": "lower", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1.0, + "CTO": 2.0, + "A": [ 1.0, 2.0, 3.0, 0.0, 4.0, 5.0, 0.0, 0.0, 6.0 ], + "LDA": 3, + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + "A_out": [ 2.0, 4.0, 6.0, 0.0, 8.0, 10.0, 0.0, 0.0, 12.0 ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_upper.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_upper.json new file mode 100644 index 000000000000..ac82430ea0ce --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_upper.json @@ -0,0 +1,16 @@ +{ + "order": "column-major", + "type": "upper", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1.0, + "CTO": 2.0, + "A": [ 1.0, 0.0, 0.0, 2.0, 3.0, 0.0, 4.0, 5.0, 6.0 ], + "LDA": 3, + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + "A_out": [ 2.0, 0.0, 0.0, 4.0, 6.0, 0.0, 8.0, 10.0, 12.0 ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_general.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_general.json new file mode 100644 index 000000000000..4201be3d306b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_general.json @@ -0,0 +1,16 @@ +{ + "order": "row-major", + "type": "general", + "M": 3, + "N": 2, + "KL": 0, + "KU": 0, + "CFROM": 1.0, + "CTO": 2.0, + "A": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ], + "LDA": 2, + "strideA1": 2, + "strideA2": 1, + "offsetA": 0, + "A_out": [ 2.0, 8.0, 4.0, 10.0, 6.0, 12.0 ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_lower.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_lower.json new file mode 100644 index 000000000000..49279420516b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_lower.json @@ -0,0 +1,16 @@ +{ + "order": "row-major", + "type": "lower", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1.0, + "CTO": 2.0, + "A": [ 1.0, 0.0, 0.0, 2.0, 4.0, 0.0, 3.0, 5.0, 6.0 ], + "LDA": 3, + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + "A_out": [ 2.0, 0.0, 0.0, 4.0, 8.0, 0.0, 6.0, 10.0, 12.0 ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_upper.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_upper.json new file mode 100644 index 000000000000..dbf79f008ad6 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_upper.json @@ -0,0 +1,16 @@ +{ + "order": "row-major", + "type": "upper", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1.0, + "CTO": 2.0, + "A": [ 1.0, 2.0, 4.0, 0.0, 3.0, 5.0, 0.0, 0.0, 6.0 ], + "LDA": 3, + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + "A_out": [ 2.0, 4.0, 8.0, 0.0, 6.0, 10.0, 0.0, 0.0, 12.0 ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js new file mode 100644 index 000000000000..af90e81514b3 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js @@ -0,0 +1,340 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable max-len */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dlascl = require( './../lib/dlascl.js' ); + + +// FIXTURES // + +var COL_MAJOR_GENERAL = require( './fixtures/column_major_general.json' ); +var ROW_MAJOR_GENERAL = require( './fixtures/row_major_general.json' ); +var COL_MAJOR_UPPER = require( './fixtures/column_major_upper.json' ); +var ROW_MAJOR_UPPER = require( './fixtures/row_major_upper.json' ); +var COL_MAJOR_LOWER = require( './fixtures/column_major_lower.json' ); +var ROW_MAJOR_LOWER = require( './fixtures/row_major_lower.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dlascl, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 10', function test( t ) { + t.strictEqual( dlascl.length, 10, 'returns expected value' ); + t.end(); +}); + +tape( 'the function throws an error if provided a first argument which is not a valid order', function test( t ) { + var values; + var i; + + values = [ + 'foo', + 'bar', + 'beep', + 'boop', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( value, 'general', 0, 0, 1, 1, 0, 0, new Float64Array(), 1 ); + }; + } +}); + +tape( 'the function throws an error if provided a second argument which is not a valid matrix type', function test( t ) { + var values; + var i; + + values = [ + 'foo', + 'bar', + 'beep', + 'boop', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( 'row-major', value, 0, 0, 1, 1, 0, 0, new Float64Array(), 1 ); + }; + } +}); + +tape( 'the function throws a range error if `LDA` is invalid (general, row-major)', function test( t ) { + var values; + var i; + + values = [ + 0, + 1, + 2 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws a range error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 2, 3, new Float64Array( 5 ), value ); + }; + } +}); + +tape( 'the function throws a range error if `LDA` is invalid (general, column-major)', function test( t ) { + var values; + var i; + + values = [ + 0, + 1, + 2 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws a range error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( 'column-major', 'general', 0, 0, 1.0, 2.0, 3, 2, new Float64Array( 8 ), value ); + }; + } +}); + +tape( 'the function throws a range error if `LDA` is invalid (symmetric-banded-lower)', function test( t ) { + var values; + var i; + + values = [ + 0, + 1, + 2 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws a range error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( 'row-major', 'symmetric-banded-lower', 2, 0, 1.0, 2.0, 5, 5, new Float64Array( 12 ), value ); + }; + } +}); + +tape( 'the function throws a range error if `LDA` is invalid (symmetric-banded-upper)', function test( t ) { + var values; + var i; + + values = [ + 0, + 1, + 2 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws a range error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( 'row-major', 'symmetric-banded-upper', 0, 2, 1.0, 2.0, 5, 5, new Float64Array( 12 ), value ); + }; + } +}); + +tape( 'the function throws a range error if `LDA` is invalid (banded)', function test( t ) { + var values; + var i; + + values = [ + 0, + 1, + 2, + 3 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws a range error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( 'row-major', 'banded', 1, 1, 1.0, 2.0, 5, 5, new Float64Array( 15 ), value ); + }; + } +}); + +tape( 'the function scales a general matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = COL_MAJOR_GENERAL; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a general matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = ROW_MAJOR_GENERAL; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = COL_MAJOR_UPPER; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = ROW_MAJOR_UPPER; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = COL_MAJOR_LOWER; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = ROW_MAJOR_LOWER; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.js new file mode 100644 index 000000000000..15d459bc01e3 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var dlascl = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dlascl, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof dlascl.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var dlascl = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dlascl, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var dlascl; + var main; + + main = require( './../lib/dlascl.js' ); + + dlascl = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dlascl, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js new file mode 100644 index 000000000000..2e8c6be8211b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js @@ -0,0 +1,197 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable max-len */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dlascl = require( './../lib/ndarray.js' ); + + +// FIXTURES // + +var COL_MAJOR_GENERAL = require( './fixtures/column_major_general.json' ); +var ROW_MAJOR_GENERAL = require( './fixtures/row_major_general.json' ); +var COL_MAJOR_UPPER = require( './fixtures/column_major_upper.json' ); +var ROW_MAJOR_UPPER = require( './fixtures/row_major_upper.json' ); +var COL_MAJOR_LOWER = require( './fixtures/column_major_lower.json' ); +var ROW_MAJOR_LOWER = require( './fixtures/row_major_lower.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dlascl, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 11', function test( t ) { + t.strictEqual( dlascl.length, 11, 'returns expected value' ); + t.end(); +}); + +tape( 'the function throws an error if provided a first argument which is not a valid matrix type', function test( t ) { + var values; + var i; + + values = [ + 'foo', + 'bar', + 'beep', + 'boop', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( value, 0, 0, 1, 1, 0, 0, new Float64Array(), 1, 1, 0 ); + }; + } +}); + +tape( 'the function scales a general matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = COL_MAJOR_GENERAL; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a general matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = ROW_MAJOR_GENERAL; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = COL_MAJOR_UPPER; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = ROW_MAJOR_UPPER; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = COL_MAJOR_LOWER; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = ROW_MAJOR_LOWER; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); From 6420a106e98cdd1cdb4df803b7eb5a1d5806ea13 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Mon, 30 Jun 2025 08:42:18 +0000 Subject: [PATCH 04/20] test: update imports --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - 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: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- ..._major_general.json => general_column_major.json} | 0 ...row_major_general.json => general_row_major.json} | 0 ...lumn_major_lower.json => lower_column_major.json} | 0 .../{row_major_lower.json => lower_row_major.json} | 0 ...lumn_major_upper.json => upper_column_major.json} | 0 .../{row_major_upper.json => upper_row_major.json} | 0 .../@stdlib/lapack/base/dlascl/test/test.dlascl.js | 12 ++++++------ .../@stdlib/lapack/base/dlascl/test/test.ndarray.js | 12 ++++++------ 8 files changed, 12 insertions(+), 12 deletions(-) rename lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/{column_major_general.json => general_column_major.json} (100%) rename lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/{row_major_general.json => general_row_major.json} (100%) rename lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/{column_major_lower.json => lower_column_major.json} (100%) rename lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/{row_major_lower.json => lower_row_major.json} (100%) rename lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/{column_major_upper.json => upper_column_major.json} (100%) rename lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/{row_major_upper.json => upper_row_major.json} (100%) diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_general.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_column_major.json similarity index 100% rename from lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_general.json rename to lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_column_major.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_general.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_row_major.json similarity index 100% rename from lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_general.json rename to lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_row_major.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_lower.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_column_major.json similarity index 100% rename from lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_lower.json rename to lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_column_major.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_lower.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_row_major.json similarity index 100% rename from lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_lower.json rename to lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_row_major.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_upper.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_column_major.json similarity index 100% rename from lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/column_major_upper.json rename to lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_column_major.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_upper.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_row_major.json similarity index 100% rename from lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/row_major_upper.json rename to lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_row_major.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js index af90e81514b3..06da4e673686 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js @@ -29,12 +29,12 @@ var dlascl = require( './../lib/dlascl.js' ); // FIXTURES // -var COL_MAJOR_GENERAL = require( './fixtures/column_major_general.json' ); -var ROW_MAJOR_GENERAL = require( './fixtures/row_major_general.json' ); -var COL_MAJOR_UPPER = require( './fixtures/column_major_upper.json' ); -var ROW_MAJOR_UPPER = require( './fixtures/row_major_upper.json' ); -var COL_MAJOR_LOWER = require( './fixtures/column_major_lower.json' ); -var ROW_MAJOR_LOWER = require( './fixtures/row_major_lower.json' ); +var COL_MAJOR_GENERAL = require( './fixtures/general_column_major.json' ); +var ROW_MAJOR_GENERAL = require( './fixtures/general_row_major.json' ); +var COL_MAJOR_UPPER = require( './fixtures/upper_column_major.json' ); +var ROW_MAJOR_UPPER = require( './fixtures/upper_row_major.json' ); +var COL_MAJOR_LOWER = require( './fixtures/lower_row_major.json' ); +var ROW_MAJOR_LOWER = require( './fixtures/lower_row_major.json' ); // TESTS // diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js index 2e8c6be8211b..5780b5de88a2 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js @@ -29,12 +29,12 @@ var dlascl = require( './../lib/ndarray.js' ); // FIXTURES // -var COL_MAJOR_GENERAL = require( './fixtures/column_major_general.json' ); -var ROW_MAJOR_GENERAL = require( './fixtures/row_major_general.json' ); -var COL_MAJOR_UPPER = require( './fixtures/column_major_upper.json' ); -var ROW_MAJOR_UPPER = require( './fixtures/row_major_upper.json' ); -var COL_MAJOR_LOWER = require( './fixtures/column_major_lower.json' ); -var ROW_MAJOR_LOWER = require( './fixtures/row_major_lower.json' ); +var COL_MAJOR_GENERAL = require( './fixtures/general_column_major.json' ); +var ROW_MAJOR_GENERAL = require( './fixtures/general_row_major.json' ); +var COL_MAJOR_UPPER = require( './fixtures/upper_column_major.json' ); +var ROW_MAJOR_UPPER = require( './fixtures/upper_row_major.json' ); +var COL_MAJOR_LOWER = require( './fixtures/lower_row_major.json' ); +var ROW_MAJOR_LOWER = require( './fixtures/lower_row_major.json' ); // TESTS // From 9e43ff5c168717c15b0b13c5db43922546805033 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Mon, 30 Jun 2025 10:49:59 +0000 Subject: [PATCH 05/20] test: add some tests --- .../@stdlib/lapack/base/dlascl/lib/base.js | 13 ++-- .../test/fixtures/banded_column_major.json | 42 ++++++++++++ .../test/fixtures/banded_row_major.json | 44 +++++++++++++ .../test/fixtures/general_column_major.json | 12 +++- .../test/fixtures/general_row_major.json | 12 +++- .../test/fixtures/lower_column_major.json | 12 +++- .../dlascl/test/fixtures/lower_row_major.json | 12 +++- .../test/fixtures/upper_column_major.json | 12 +++- .../dlascl/test/fixtures/upper_row_major.json | 12 +++- .../lapack/base/dlascl/test/test.dlascl.js | 64 +++++++++++++++---- .../lapack/base/dlascl/test/test.ndarray.js | 24 +++---- 11 files changed, 223 insertions(+), 36 deletions(-) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_row_major.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js index 8f2e2ed0fbe6..9225c2b096e8 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js @@ -253,17 +253,18 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA } if ( type === 'banded' ) { - k1 = KL + KU + 2; - k2 = KL + 1; - k3 = ( 2 * KL ) + KU + 1; - k4 = KL + KU + 1 + M; + k1 = KL + KU; + k2 = KL; + k3 = ( 2 * KL ) + KU; + k4 = KL + KU + M - 1; ia = offsetA; + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { for ( i1 = 0; i1 < M; i1++ ) { for ( i0 = max( 0, i1 - KL ); i0 <= min( N - 1, i1 + KU ); i0++ ) { - A[ ia + ( ( i0 - i1 + KL ) * strideA2 ) ] *= mul; + ia = offsetA + ( ( KL + KU + 1 + i1 - i0 ) * strideA1 ) + ( i0 * strideA2 ); + A[ ia ] *= mul; } - ia += strideA1; } } else { for ( i1 = 0; i1 < N; i1++ ) { diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_column_major.json new file mode 100644 index 000000000000..9fcd8f4d79a7 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_column_major.json @@ -0,0 +1,42 @@ +{ + "order": "column-major", + "type": "banded", + "M": 5, + "N": 5, + "KL": 2, + "KU": 1, + "CFROM": 1.0, + "CTO": 10.0, + "A": [ + 0.0, 0.0, 0.0, 1.1, 2.1, 3.1, + 0.0, 0.0, 1.2, 2.2, 3.2, 4.2, + 0.0, 0.0, 2.3, 3.3, 4.3, 5.3, + 0.0, 0.0, 3.4, 4.4, 5.4, 0.0, + 0.0, 0.0, 4.5, 5.5, 0.0, 0.0 + ], + "A_mat": [ + [ 1.1, 1.2, 0.0, 0.0, 0.0 ], + [ 2.1, 2.2, 2.3, 0.0, 0.0 ], + [ 3.1, 3.2, 3.3, 3.4, 0.0 ], + [ 0.0, 4.2, 4.3, 4.4, 4.5 ], + [ 0.0, 0.0, 5.3, 5.4, 5.5 ] + ], + "LDA": 6, + "strideA1": 1, + "strideA2": 6, + "offsetA": 0, + "A_out": [ + 0.0, 0.0, 0.0, 11.0, 21.0, 31.0, + 0.0, 0.0, 12.0, 22.0, 32.0, 42.0, + 0.0, 0.0, 23.0, 33.0, 43.0, 53.0, + 0.0, 0.0, 34.0, 44.0, 54.0, 0.0, + 0.0, 0.0, 45.0, 55.0, 0.0, 0.0 + ], + "A_out_mat": [ + [ 11.0, 12.0, 0.0, 0.0, 0.0 ], + [ 21.0, 22.0, 23.0, 0.0, 0.0 ], + [ 31.0, 32.0, 33.0, 34.0, 0.0 ], + [ 0.0, 42.0, 43.0, 44.0, 45.0 ], + [ 0.0, 0.0, 53.0, 54.0, 55.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_row_major.json new file mode 100644 index 000000000000..acf50bd1d988 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_row_major.json @@ -0,0 +1,44 @@ +{ + "order": "row-major", + "type": "banded", + "M": 5, + "N": 5, + "KL": 2, + "KU": 1, + "CFROM": 1.0, + "CTO": 10.0, + "A": [ + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 1.2, 2.3, 3.4, 4.5, + 1.1, 2.2, 3.3, 4.4, 5.5, + 2.1, 3.2, 4.3, 5.4, 0.0, + 3.1, 4.2, 5.3, 0.0, 0.0 + ], + "A_mat": [ + [ 1.1, 1.2, 0.0, 0.0, 0.0 ], + [ 2.1, 2.2, 2.3, 0.0, 0.0 ], + [ 3.1, 3.2, 3.3, 3.4, 0.0 ], + [ 0.0, 4.2, 4.3, 4.4, 4.5 ], + [ 0.0, 0.0, 5.3, 5.4, 5.5 ] + ], + "LDA": 6, + "strideA1": 5, + "strideA2": 1, + "offsetA": 0, + "A_out": [ + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 12.0, 23.0, 34.0, 45.0, + 11.0, 22.0, 33.0, 44.0, 55.0, + 21.0, 32.0, 43.0, 54.0, 0.0, + 31.0, 42.0, 53.0, 0.0, 0.0 + ], + "A_out_mat": [ + [ 11.0, 12.0, 0.0, 0.0, 0.0 ], + [ 21.0, 22.0, 23.0, 0.0, 0.0 ], + [ 31.0, 32.0, 33.0, 34.0, 0.0 ], + [ 0.0, 42.0, 43.0, 44.0, 45.0 ], + [ 0.0, 0.0, 53.0, 54.0, 55.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_column_major.json index 0965f8c6d83c..3f9682f399de 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_column_major.json +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_column_major.json @@ -8,9 +8,19 @@ "CFROM": 1.0, "CTO": 2.0, "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ], + "A_mat": [ + [ 1.0, 2.0 ], + [ 3.0, 4.0 ], + [ 5.0, 6.0 ] + ], "LDA": 3, "strideA1": 1, "strideA2": 3, "offsetA": 0, - "A_out": [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] + "A_out": [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ], + "A_out_mat": [ + [ 2.0, 4.0 ], + [ 6.0, 8.0 ], + [ 10.0, 12.0 ] + ] } diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_row_major.json index 4201be3d306b..ac970e7f1811 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_row_major.json +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/general_row_major.json @@ -8,9 +8,19 @@ "CFROM": 1.0, "CTO": 2.0, "A": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ], + "A_mat": [ + [ 1.0, 4.0 ], + [ 2.0, 5.0 ], + [ 3.0, 6.0 ] + ], "LDA": 2, "strideA1": 2, "strideA2": 1, "offsetA": 0, - "A_out": [ 2.0, 8.0, 4.0, 10.0, 6.0, 12.0 ] + "A_out": [ 2.0, 8.0, 4.0, 10.0, 6.0, 12.0 ], + "A_out_mat": [ + [ 2.0, 8.0 ], + [ 4.0, 10.0 ], + [ 6.0, 12.0 ] + ] } diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_column_major.json index 4cdd2956d8b7..babf42ed9e86 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_column_major.json +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_column_major.json @@ -8,9 +8,19 @@ "CFROM": 1.0, "CTO": 2.0, "A": [ 1.0, 2.0, 3.0, 0.0, 4.0, 5.0, 0.0, 0.0, 6.0 ], + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 2.0, 4.0, 0.0 ], + [ 3.0, 5.0, 6.0 ] + ], "LDA": 3, "strideA1": 1, "strideA2": 3, "offsetA": 0, - "A_out": [ 2.0, 4.0, 6.0, 0.0, 8.0, 10.0, 0.0, 0.0, 12.0 ] + "A_out": [ 2.0, 4.0, 6.0, 0.0, 8.0, 10.0, 0.0, 0.0, 12.0 ], + "A_out_mat": [ + [ 2.0, 0.0, 0.0 ], + [ 4.0, 8.0, 0.0 ], + [ 6.0, 10.0, 12.0 ] + ] } diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_row_major.json index 49279420516b..e2f0b9837d5f 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_row_major.json +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/lower_row_major.json @@ -8,9 +8,19 @@ "CFROM": 1.0, "CTO": 2.0, "A": [ 1.0, 0.0, 0.0, 2.0, 4.0, 0.0, 3.0, 5.0, 6.0 ], + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 2.0, 4.0, 0.0 ], + [ 3.0, 5.0, 6.0 ] + ], "LDA": 3, "strideA1": 3, "strideA2": 1, "offsetA": 0, - "A_out": [ 2.0, 0.0, 0.0, 4.0, 8.0, 0.0, 6.0, 10.0, 12.0 ] + "A_out": [ 2.0, 0.0, 0.0, 4.0, 8.0, 0.0, 6.0, 10.0, 12.0 ], + "A_out_mat": [ + [ 2.0, 0.0, 0.0 ], + [ 4.0, 8.0, 0.0 ], + [ 6.0, 10.0, 12.0 ] + ] } diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_column_major.json index ac82430ea0ce..dc639a094b76 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_column_major.json +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_column_major.json @@ -8,9 +8,19 @@ "CFROM": 1.0, "CTO": 2.0, "A": [ 1.0, 0.0, 0.0, 2.0, 3.0, 0.0, 4.0, 5.0, 6.0 ], + "A_mat": [ + [ 1.0, 2.0, 4.0 ], + [ 0.0, 3.0, 5.0 ], + [ 0.0, 0.0, 6.0 ] + ], "LDA": 3, "strideA1": 1, "strideA2": 3, "offsetA": 0, - "A_out": [ 2.0, 0.0, 0.0, 4.0, 6.0, 0.0, 8.0, 10.0, 12.0 ] + "A_out": [ 2.0, 0.0, 0.0, 4.0, 6.0, 0.0, 8.0, 10.0, 12.0 ], + "A_out_mat": [ + [ 2.0, 4.0, 8.0 ], + [ 0.0, 6.0, 10.0 ], + [ 0.0, 0.0, 12.0 ] + ] } diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_row_major.json index dbf79f008ad6..3cf311d545e3 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_row_major.json +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_row_major.json @@ -8,9 +8,19 @@ "CFROM": 1.0, "CTO": 2.0, "A": [ 1.0, 2.0, 4.0, 0.0, 3.0, 5.0, 0.0, 0.0, 6.0 ], + "A_mat": [ + [ 1.0, 2.0, 4.0 ], + [ 0.0, 3.0, 5.0 ], + [ 0.0, 0.0, 6.0 ] + ], "LDA": 3, "strideA1": 3, "strideA2": 1, "offsetA": 0, - "A_out": [ 2.0, 4.0, 8.0, 0.0, 6.0, 10.0, 0.0, 0.0, 12.0 ] + "A_out": [ 2.0, 4.0, 8.0, 0.0, 6.0, 10.0, 0.0, 0.0, 12.0 ], + "A_out_mat": [ + [ 2.0, 4.0, 8.0 ], + [ 0.0, 6.0, 10.0 ], + [ 0.0, 0.0, 12.0 ] + ] } diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js index 06da4e673686..3c5173dbc76d 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js @@ -29,12 +29,14 @@ var dlascl = require( './../lib/dlascl.js' ); // FIXTURES // -var COL_MAJOR_GENERAL = require( './fixtures/general_column_major.json' ); -var ROW_MAJOR_GENERAL = require( './fixtures/general_row_major.json' ); -var COL_MAJOR_UPPER = require( './fixtures/upper_column_major.json' ); -var ROW_MAJOR_UPPER = require( './fixtures/upper_row_major.json' ); -var COL_MAJOR_LOWER = require( './fixtures/lower_row_major.json' ); -var ROW_MAJOR_LOWER = require( './fixtures/lower_row_major.json' ); +var GENERAL_COL_MAJOR = require( './fixtures/general_column_major.json' ); +var GENERAL_ROW_MAJOR = require( './fixtures/general_row_major.json' ); +var UPPER_COL_MAJOR = require( './fixtures/upper_column_major.json' ); +var UPPER_ROW_MAJOR = require( './fixtures/upper_row_major.json' ); +var LOWER_COL_MAJOR = require( './fixtures/lower_row_major.json' ); +var LOWER_ROW_MAJOR = require( './fixtures/lower_row_major.json' ); +var BANDED_COL_MAJOR = require( './fixtures/banded_column_major.json' ); +var BANDED_ROW_MAJOR = require( './fixtures/banded_row_major.json' ); // TESTS // @@ -231,7 +233,7 @@ tape( 'the function scales a general matrix (column-major)', function test( t ) var out; var A; - data = COL_MAJOR_GENERAL; + data = GENERAL_COL_MAJOR; A = new Float64Array( data.A ); @@ -250,7 +252,7 @@ tape( 'the function scales a general matrix (row-major)', function test( t ) { var out; var A; - data = ROW_MAJOR_GENERAL; + data = GENERAL_ROW_MAJOR; A = new Float64Array( data.A ); @@ -269,7 +271,7 @@ tape( 'the function scales an upper triangular matrix (column-major)', function var out; var A; - data = COL_MAJOR_UPPER; + data = UPPER_COL_MAJOR; A = new Float64Array( data.A ); @@ -288,7 +290,7 @@ tape( 'the function scales an upper triangular matrix (row-major)', function tes var out; var A; - data = ROW_MAJOR_UPPER; + data = UPPER_ROW_MAJOR; A = new Float64Array( data.A ); @@ -307,7 +309,7 @@ tape( 'the function scales a lower triangular matrix (column-major)', function t var out; var A; - data = COL_MAJOR_LOWER; + data = LOWER_COL_MAJOR; A = new Float64Array( data.A ); @@ -326,7 +328,45 @@ tape( 'the function scales a lower triangular matrix (row-major)', function test var out; var A; - data = ROW_MAJOR_LOWER; + data = LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_COL_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_ROW_MAJOR; A = new Float64Array( data.A ); diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js index 5780b5de88a2..631d90008013 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js @@ -29,12 +29,12 @@ var dlascl = require( './../lib/ndarray.js' ); // FIXTURES // -var COL_MAJOR_GENERAL = require( './fixtures/general_column_major.json' ); -var ROW_MAJOR_GENERAL = require( './fixtures/general_row_major.json' ); -var COL_MAJOR_UPPER = require( './fixtures/upper_column_major.json' ); -var ROW_MAJOR_UPPER = require( './fixtures/upper_row_major.json' ); -var COL_MAJOR_LOWER = require( './fixtures/lower_row_major.json' ); -var ROW_MAJOR_LOWER = require( './fixtures/lower_row_major.json' ); +var GENERAL_COL_MAJOR = require( './fixtures/general_column_major.json' ); +var GENERAL_ROW_MAJOR = require( './fixtures/general_row_major.json' ); +var UPPER_COL_MAJOR = require( './fixtures/upper_column_major.json' ); +var UPPER_ROW_MAJOR = require( './fixtures/upper_row_major.json' ); +var LOWER_COL_MAJOR = require( './fixtures/lower_row_major.json' ); +var LOWER_ROW_MAJOR = require( './fixtures/lower_row_major.json' ); // TESTS // @@ -88,7 +88,7 @@ tape( 'the function scales a general matrix (column-major)', function test( t ) var out; var A; - data = COL_MAJOR_GENERAL; + data = GENERAL_COL_MAJOR; A = new Float64Array( data.A ); @@ -107,7 +107,7 @@ tape( 'the function scales a general matrix (row-major)', function test( t ) { var out; var A; - data = ROW_MAJOR_GENERAL; + data = GENERAL_ROW_MAJOR; A = new Float64Array( data.A ); @@ -126,7 +126,7 @@ tape( 'the function scales an upper triangular matrix (column-major)', function var out; var A; - data = COL_MAJOR_UPPER; + data = UPPER_COL_MAJOR; A = new Float64Array( data.A ); @@ -145,7 +145,7 @@ tape( 'the function scales an upper triangular matrix (row-major)', function tes var out; var A; - data = ROW_MAJOR_UPPER; + data = UPPER_ROW_MAJOR; A = new Float64Array( data.A ); @@ -164,7 +164,7 @@ tape( 'the function scales a lower triangular matrix (column-major)', function t var out; var A; - data = COL_MAJOR_LOWER; + data = LOWER_COL_MAJOR; A = new Float64Array( data.A ); @@ -183,7 +183,7 @@ tape( 'the function scales a lower triangular matrix (row-major)', function test var out; var A; - data = ROW_MAJOR_LOWER; + data = LOWER_ROW_MAJOR; A = new Float64Array( data.A ); From 9cf127e62995ad4eb894d1a04255fa17ba7f1614 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 08:31:10 +0000 Subject: [PATCH 06/20] test: update lda validation --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - 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: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../@stdlib/lapack/base/dlascl/lib/base.js | 17 +-- .../@stdlib/lapack/base/dlascl/lib/dlascl.js | 29 ++--- .../test/fixtures/banded_row_major.json | 2 +- .../lapack/base/dlascl/test/test.dlascl.js | 112 +++++++++++++++--- 4 files changed, 113 insertions(+), 47 deletions(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js index 9225c2b096e8..bfad505f0347 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js @@ -259,20 +259,11 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA k4 = KL + KU + M - 1; ia = offsetA; - if ( isRowMajor( [ strideA1, strideA2 ] ) ) { - for ( i1 = 0; i1 < M; i1++ ) { - for ( i0 = max( 0, i1 - KL ); i0 <= min( N - 1, i1 + KU ); i0++ ) { - ia = offsetA + ( ( KL + KU + 1 + i1 - i0 ) * strideA1 ) + ( i0 * strideA2 ); - A[ ia ] *= mul; - } - } - } else { - for ( i1 = 0; i1 < N; i1++ ) { - for ( i0 = max( k1 - i1, k2 ); i0 <= min( k3, k4-i1 ); i0++ ) { - A[ ia+(i0*strideA1) ] *= mul; - } - ia += strideA2; + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = max( k1 - i1, k2 ); i0 <= min( k3, k4-i1 ); i0++ ) { + A[ ia+(i0*strideA1) ] *= mul; } + ia += strideA2; } } } diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js index 934b45784a29..a26362a6e698 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js @@ -68,25 +68,20 @@ function dlascl( order, type, KL, KU, CFROM, CTO, M, N, A, LDA ) { throw new TypeError( format( 'invalid argument. First argument must be a valid matrix type. Value: `%s`.', type ) ); } - if ( type === 'general' || type === 'upper' || type === 'lower' || type === 'upper-hessenberg' ) { - if ( isRowMajor( order ) ) { - s = N; - } else { - s = M; - } - if ( LDA < max( 1, s ) ) { - throw new RangeError( format( 'invalid argument. Fifth argument must be greater than or equal to max(1,%d). Value: `%d`.', s, LDA ) ); - } + if ( isRowMajor( order ) ) { + s = N; + } else if ( type === 'general' || type === 'upper' || type === 'lower' || type === 'upper-hessenberg' ) { + s = M; } else if ( type === 'symmetric-banded-lower' ) { - if ( LDA < max( 1, KL+1 ) ) { - throw new RangeError( format( 'invalid argument. Fifth argument must be greater than or equal to max(1,%d). Value: `%d`.', KL+1, LDA ) ); - } + s = KL + 1; } else if ( type === 'symmetric-banded-upper' ) { - if ( LDA < max( 1, KU+1 ) ) { - throw new RangeError( format( 'invalid argument. Fifth argument must be greater than or equal to max(1,%d). Value: `%d`.', KU+1, LDA ) ); - } - } else if ( LDA < max( 1, (2*KL) + KU +1 ) ) { - throw new RangeError( format( 'invalid argument. Fifth argument must be greater than or equal to max(1,%d). Value: `%d`.', (2*KL) + KU +1, LDA ) ); + s = KU + 1; + } else { + s = (2*KL) + KU + 1; + } + + if ( LDA < max( 1, s ) ) { + throw new RangeError( format( 'invalid argument. Tenth argument must be greater than or equal to max(1,%d). Value: `%d`.', s, LDA ) ); } if ( isColumnMajor( order ) ) { diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_row_major.json index acf50bd1d988..c166ace4cf04 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_row_major.json +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/banded_row_major.json @@ -22,7 +22,7 @@ [ 0.0, 4.2, 4.3, 4.4, 4.5 ], [ 0.0, 0.0, 5.3, 5.4, 5.5 ] ], - "LDA": 6, + "LDA": 5, "strideA1": 5, "strideA2": 1, "offsetA": 0, diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js index 3c5173dbc76d..ca8628cd4253 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js @@ -122,8 +122,7 @@ tape( 'the function throws a range error if `LDA` is invalid (general, row-major values = [ 0, - 1, - 2 + 1 ]; for ( i = 0; i < values.length; i++ ) { @@ -133,7 +132,7 @@ tape( 'the function throws a range error if `LDA` is invalid (general, row-major function badValue( value ) { return function badValue() { - dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 2, 3, new Float64Array( 5 ), value ); + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 2, 2, new Float64Array( 4 ), value ); }; } }); @@ -144,8 +143,7 @@ tape( 'the function throws a range error if `LDA` is invalid (general, column-ma values = [ 0, - 1, - 2 + 1 ]; for ( i = 0; i < values.length; i++ ) { @@ -155,19 +153,18 @@ tape( 'the function throws a range error if `LDA` is invalid (general, column-ma function badValue( value ) { return function badValue() { - dlascl( 'column-major', 'general', 0, 0, 1.0, 2.0, 3, 2, new Float64Array( 8 ), value ); + dlascl( 'column-major', 'general', 0, 0, 1.0, 2.0, 2, 2, new Float64Array( 4 ), value ); }; } }); -tape( 'the function throws a range error if `LDA` is invalid (symmetric-banded-lower)', function test( t ) { +tape( 'the function throws a range error if `LDA` is invalid (upper, row-major)', function test( t ) { var values; var i; values = [ 0, - 1, - 2 + 1 ]; for ( i = 0; i < values.length; i++ ) { @@ -177,19 +174,102 @@ tape( 'the function throws a range error if `LDA` is invalid (symmetric-banded-l function badValue( value ) { return function badValue() { - dlascl( 'row-major', 'symmetric-banded-lower', 2, 0, 1.0, 2.0, 5, 5, new Float64Array( 12 ), value ); + dlascl( 'row-major', 'upper', 0, 0, 1.0, 2.0, 2, 2, new Float64Array( 4 ), value ); }; } }); -tape( 'the function throws a range error if `LDA` is invalid (symmetric-banded-upper)', function test( t ) { +tape( 'the function throws a range error if `LDA` is invalid (upper, column-major)', function test( t ) { var values; var i; values = [ 0, - 1, - 2 + 1 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws a range error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( 'column-major', 'upper', 0, 0, 1.0, 2.0, 2, 2, new Float64Array( 4 ), value ); + }; + } +}); + +tape( 'the function throws a range error if `LDA` is invalid (lower, row-major)', function test( t ) { + var values; + var i; + + values = [ + 0, + 1 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws a range error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( 'row-major', 'lower', 0, 0, 1.0, 2.0, 2, 2, new Float64Array( 4 ), value ); + }; + } +}); + +tape( 'the function throws a range error if `LDA` is invalid (lower, column-major)', function test( t ) { + var values; + var i; + + values = [ + 0, + 1 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws a range error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( 'column-major', 'lower', 0, 0, 1.0, 2.0, 2, 2, new Float64Array( 4 ), value ); + }; + } +}); + +tape( 'the function throws a range error if `LDA` is invalid (symmetric-banded-lower, column-major)', function test( t ) { + var values; + var i; + + values = [ + 0, + 1 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws a range error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dlascl( 'column-major', 'symmetric-banded-lower', 1, 0, 1.0, 2.0, 5, 5, new Float64Array( 10 ), value ); + }; + } +}); + +tape( 'the function throws a range error if `LDA` is invalid (symmetric-banded-upper, column-major)', function test( t ) { + var values; + var i; + + values = [ + 0, + 1 ]; for ( i = 0; i < values.length; i++ ) { @@ -199,12 +279,12 @@ tape( 'the function throws a range error if `LDA` is invalid (symmetric-banded-u function badValue( value ) { return function badValue() { - dlascl( 'row-major', 'symmetric-banded-upper', 0, 2, 1.0, 2.0, 5, 5, new Float64Array( 12 ), value ); + dlascl( 'column-major', 'symmetric-banded-upper', 0, 1, 1.0, 2.0, 5, 5, new Float64Array( 10 ), value ); }; } }); -tape( 'the function throws a range error if `LDA` is invalid (banded)', function test( t ) { +tape( 'the function throws a range error if `LDA` is invalid (banded, column-major)', function test( t ) { var values; var i; @@ -222,7 +302,7 @@ tape( 'the function throws a range error if `LDA` is invalid (banded)', function function badValue( value ) { return function badValue() { - dlascl( 'row-major', 'banded', 1, 1, 1.0, 2.0, 5, 5, new Float64Array( 15 ), value ); + dlascl( 'column-major', 'banded', 1, 1, 1.0, 2.0, 5, 5, new Float64Array( 20 ), value ); }; } }); From 938d7045490510dda90f0c81e8340ee47b0048c3 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 09:20:55 +0000 Subject: [PATCH 07/20] docs: add ts files --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: passed - task: lint_license_headers status: passed --- --- .../lapack/base/dlascl/docs/types/index.d.ts | 117 ++++++ .../lapack/base/dlascl/docs/types/test.ts | 363 ++++++++++++++++++ 2 files changed, 480 insertions(+) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/index.d.ts create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/test.ts diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/index.d.ts b/lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/index.d.ts new file mode 100644 index 000000000000..f9614b59f12d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/index.d.ts @@ -0,0 +1,117 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Layout } from '@stdlib/types/blas'; + +/** +* Interface describing `dlascl`. +*/ +interface Routine { + /** + * Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM`. + * + * @param order - storage layout + * @param type - specifies the type of matrix `A` + * @param KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. + * @param KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. + * @param CFROM - the matrix `A` are multiplied by `CTO / CFROM` + * @param CTO - the matrix `A` are multiplied by `CTO / CFROM` + * @param M - number of rows in matrix `A` + * @param N - number of columns in matrix `A` + * @param A - input matrix + * @param LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`) + * @returns scaled matrix `A` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); // => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] + * + * dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); + * // A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] + */ + ( order: Layout, type: string, KL: number, KU: number, CFROM: number, CTO: number, M: number, N: number, A: Float64Array, LDA: number ): Float64Array; + + /** + * Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM` using alternative indexing semantics. + * + * @param type - specifies the type of matrix `A` + * @param KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. + * @param KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. + * @param CFROM - the matrix `A` are multiplied by `CTO / CFROM` + * @param CTO - the matrix `A` are multiplied by `CTO / CFROM` + * @param M - number of rows in matrix `A` + * @param N - number of columns in matrix `A` + * @param A - input matrix + * @param strideA1 - stride of the first dimension of `A` + * @param strideA2 - stride of the second dimension of `A` + * @param offsetA - starting index for `A` + * @returns scaled matrix `A` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); // => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] + * + * dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2, 1, 0 ); + * // A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] + */ + ndarray( type: string, KL: number, KU: number, CFROM: number, CTO: number, M: number, N: number, A: Float64Array, strideA1: number, strideA2: number, offsetA: number ): Float64Array; +} + +/** +* Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM`. +* +* @param order - storage layout +* @param type - specifies the type of matrix `A` +* @param KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. +* @param KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. +* @param CFROM - the matrix `A` are multiplied by `CTO / CFROM` +* @param CTO - the matrix `A` are multiplied by `CTO / CFROM` +* @param M - number of rows in matrix `A` +* @param N - number of columns in matrix `A` +* @param A - input matrix +* @param LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`) +* @returns scaled matrix `A` +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); // => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] +* +* dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); +* // A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); // => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] +* +* dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2, 1, 0 ); +* // A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +*/ +declare var dlascl: Routine; + + +// EXPORTS // + +export = dlascl; diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/test.ts b/lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/test.ts new file mode 100644 index 000000000000..87d4bc1d597c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/test.ts @@ -0,0 +1,363 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import dlascl = require( './index' ); + + +// TESTS // + +// The function returns a Float64Array... +{ + const A = new Float64Array( 6 ); + + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a string... +{ + const A = new Float64Array( 6 ); + + dlascl( 5, 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( true, 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( false, 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( null, 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( void 0, 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( [], 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( {}, 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( ( x: number ): number => x, 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a string... +{ + const A = new Float64Array( 6 ); + + dlascl( 'row-major', 5, 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', true, 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', false, 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', null, 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', void 0, 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', [], 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', {}, 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', ( x: number ): number => x, 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl( 'row-major', 'general', '5', 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', true, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', false, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', null, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', void 0, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', [], 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', {}, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', ( x: number ): number => x, 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl( 'row-major', 'general', 0, '5', 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, true, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, false, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, null, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, void 0, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, [], 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, {}, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, ( x: number ): number => x, 1.0, 2.0, 3, 2, A, 2 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl( 'row-major', 'general', 0, 0, '5', 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, true, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, false, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, null, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, void 0, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, [], 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, {}, 2.0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, ( x: number ): number => x, 2.0, 3, 2, A, 2 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl( 'row-major', 'general', 0, 0, 1.0, '5', 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, true, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, false, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, null, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, void 0, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, [], 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, {}, 3, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, ( x: number ): number => x, 3, 2, A, 2 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a seventh argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, '3', 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, true, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, false, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, null, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, void 0, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, [], 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, {}, 2, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, ( x: number ): number => x, 2, A, 2 ); // $ExpectError +} + +// The compiler throws an error if the function is provided an eighth argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, '2', A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, true, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, false, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, null, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, void 0, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, [], A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, {}, A, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, ( x: number ): number => x, A, 2 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a ninth argument which is not a Float64Array... +{ + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, 'A', 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, 5, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, true, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, false, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, null, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, void 0, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, [], 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, {}, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, ( x: number ): number => x, 2 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a tenth argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, '2' ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, true ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, false ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, null ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, void 0 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, [] ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, {} ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const A = new Float64Array( 6 ); + + dlascl(); // $ExpectError + dlascl( 'row-major' ); // $ExpectError + dlascl( 'row-major', 'general' ); // $ExpectError + dlascl( 'row-major', 'general', 0 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2 ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A ); // $ExpectError + dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2, 10 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float64Array... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a string... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 5, 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( true, 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( false, 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( null, 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( void 0, 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( [], 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( {}, 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( ( x: number ): number => x, 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 'general', '0', 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', true, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', false, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', null, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', void 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', [], 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', {}, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', ( x: number ): number => x, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 'general', 0, '0', 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, true, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, false, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, null, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, void 0, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, [], 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, {}, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, ( x: number ): number => x, 1.0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 'general', 0, 0, '1.0', 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, true, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, false, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, null, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, void 0, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, [], 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, {}, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, ( x: number ): number => x, 2.0, 3, 2, A, 1, 0, 2 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 'general', 0, 0, 1.0, '2.0', 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, true, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, false, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, null, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, void 0, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, [], 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, {}, 3, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, ( x: number ): number => x, 3, 2, A, 1, 0, 2 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, '3', 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, true, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, false, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, null, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, void 0, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, [], 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, {}, 2, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, ( x: number ): number => x, 2, A, 1, 0, 2 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, '2', A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, true, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, false, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, null, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, void 0, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, [], A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, {}, A, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, ( x: number ): number => x, A, 1, 0, 2 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighth argument which is not a Float64Array... +{ + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, 'A', 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, 5, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, true, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, false, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, null, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, void 0, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, [], 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, {}, 1, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, ( x: number ): number => x, 1, 0, 2 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a ninth argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, '1', 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, true, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, false, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, null, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, void 0, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, [], 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, {}, 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, ( x: number ): number => x, 0, 2 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a tenth argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, '0', 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, true, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, false, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, null, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, void 0, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, [], 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, {}, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, ( x: number ): number => x, 2 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eleventh argument which is not a number... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, '2' ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, true ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, false ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, null ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, void 0 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, [] ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, {} ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const A = new Float64Array( 6 ); + + dlascl.ndarray(); // $ExpectError + dlascl.ndarray( 'general' ); // $ExpectError + dlascl.ndarray( 'general', 0 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0 ); // $ExpectError + dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 1, 0, 2, 10 ); // $ExpectError +} From ec09f0f17d31e96927fdeea4539dcfc2b25364c6 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 09:29:06 +0000 Subject: [PATCH 08/20] docs: add examples --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: passed - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../lapack/base/dlascl/examples/index.js | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/examples/index.js diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/examples/index.js b/lib/node_modules/@stdlib/lapack/base/dlascl/examples/index.js new file mode 100644 index 000000000000..418b447a1e8f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/examples/index.js @@ -0,0 +1,29 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var Float64Array = require( '@stdlib/array/float64' ); +var dlascl = require( './../lib' ); + +// Define a matrix A (3x2 in row-major order): +var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +console.log( 'Initial A (row-major): ', A ); + +dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); +console.log( 'Scaled A (row-major): ', A ); From 1d595e0c7bdada39e6b14ca14e15e3b30e759e43 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 09:55:15 +0000 Subject: [PATCH 09/20] docs: add readme --- 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: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../@stdlib/lapack/base/dlascl/README.md | 249 ++++++++++++++++++ .../lapack/base/dlascl/docs/types/index.d.ts | 12 +- .../@stdlib/lapack/base/dlascl/lib/base.js | 4 +- .../@stdlib/lapack/base/dlascl/lib/dlascl.js | 4 +- .../@stdlib/lapack/base/dlascl/lib/ndarray.js | 4 +- 5 files changed, 261 insertions(+), 12 deletions(-) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/README.md diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/README.md b/lib/node_modules/@stdlib/lapack/base/dlascl/README.md new file mode 100644 index 000000000000..1fe2c441f207 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/README.md @@ -0,0 +1,249 @@ + + +# dlascl + +> Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM`. + +
+ +## Usage + +```javascript +var dlascl = require( '@stdlib/lapack/base/dlascl' ); +``` + +#### dlascl( order, type, KL, KU, CFROM, CTO, M, N, A, LDA ) + +Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM`. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); // => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] + +dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); +// A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +``` + +The function has the following parameters: + +- **order**: storage layout. +- **type**: specifies the type of matrix `A` ( should be one of these: `general`, `upper`, `lower`, `upper-hessenberg`, `symmetric-banded-lower`, `symmetric-banded-upper` or `banded` ). +- **KL**: lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. +- **KU**: upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. +- **CFROM**: the matrix `A` is multiplied by `CTO / CFROM`. +- **CTO**: the matrix `A` is multiplied by `CTO / CFROM`. +- **M**: number of rows in matrix `A`. +- **N**: number of columns in matrix `A`. +- **A**: input [`Float64Array`][mdn-float64array]. +- **LDA**: stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`). + +If `type` is `banded`, `symmetric-banded-lower` or `symmetric-banded-upper` the matrix should be stored in the [`Band storage`][lapack-band-storage] format. + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + + + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var A0 = new Float64Array( [ 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +// Create offset views... +var A1 = new Float64Array( A0.buffer, A0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A1, 2 ); +// A0 => [ 0.0, 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +``` + +#### dlascl.ndarray( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA ) + +Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM` using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); // => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] + +dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2, 1, 0 ); +// A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +``` + +The function has the following additional parameters: + +- **type**: specifies the type of matrix `A` ( should be one of these: `general`, `upper`, `lower`, `upper-hessenberg`, `symmetric-banded-lower`, `symmetric-banded-upper` or `banded` ). +- **KL**: lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. +- **KU**: upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. +- **CFROM**: the matrix `A` is multiplied by `CTO / CFROM`. +- **CTO**: the matrix `A` is multiplied by `CTO / CFROM`. +- **M**: number of rows in matrix `A`. +- **N**: number of columns in matrix `A`. +- **A**: input [`Float64Array`][mdn-float64array]. +- **strideA1**: stride of the first dimension of `A`. +- **strideA2**: stride of the second dimension of `A`. +- **offsetA**: starting index for `A`. + +If `type` is `banded`, `symmetric-banded-lower` or `symmetric-banded-upper` the matrix should be stored in the [`Band storage`][lapack-band-storage] format. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var A = new Float64Array( [ 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +dlascl.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2, 1, 1 ); +// A => [ 0.0, 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] +``` + +
+ + + +
+ +## Notes + +- `dlascl()` corresponds to the [LAPACK][lapack] routine [`dlascl`][lapack-dlascl]. +- If `type` is `banded`, `symmetric-banded-lower` or `symmetric-banded-upper` the matrix should be stored in the [`Band storage`][lapack-band-storage] format. + +
+ + + +
+ +## Examples + + + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); +var dlascl = require( '@stdlib/lapack/base/dlascl' ); + +// Define a matrix A (3x2 in row-major order): +var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +console.log( 'Initial A (row-major): ', A ); + +dlascl( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ); +console.log( 'Scaled A (row-major): ', A ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +TODO +``` + +#### TODO + +TODO. + +```c +TODO +``` + +TODO + +```c +TODO +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +TODO +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/index.d.ts b/lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/index.d.ts index f9614b59f12d..2da272ea1bcc 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/docs/types/index.d.ts @@ -33,8 +33,8 @@ interface Routine { * @param type - specifies the type of matrix `A` * @param KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. * @param KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. - * @param CFROM - the matrix `A` are multiplied by `CTO / CFROM` - * @param CTO - the matrix `A` are multiplied by `CTO / CFROM` + * @param CFROM - the matrix `A` is multiplied by `CTO / CFROM` + * @param CTO - the matrix `A` is multiplied by `CTO / CFROM` * @param M - number of rows in matrix `A` * @param N - number of columns in matrix `A` * @param A - input matrix @@ -57,8 +57,8 @@ interface Routine { * @param type - specifies the type of matrix `A` * @param KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. * @param KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. - * @param CFROM - the matrix `A` are multiplied by `CTO / CFROM` - * @param CTO - the matrix `A` are multiplied by `CTO / CFROM` + * @param CFROM - the matrix `A` is multiplied by `CTO / CFROM` + * @param CTO - the matrix `A` is multiplied by `CTO / CFROM` * @param M - number of rows in matrix `A` * @param N - number of columns in matrix `A` * @param A - input matrix @@ -85,8 +85,8 @@ interface Routine { * @param type - specifies the type of matrix `A` * @param KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. * @param KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. -* @param CFROM - the matrix `A` are multiplied by `CTO / CFROM` -* @param CTO - the matrix `A` are multiplied by `CTO / CFROM` +* @param CFROM - the matrix `A` is multiplied by `CTO / CFROM` +* @param CTO - the matrix `A` is multiplied by `CTO / CFROM` * @param M - number of rows in matrix `A` * @param N - number of columns in matrix `A` * @param A - input matrix diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js index bfad505f0347..e231741a119a 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js @@ -45,8 +45,8 @@ var bignum = 1.0 / smlnum; * @param {string} type - specifies the type of matrix `A` * @param {NonNegativeInteger} KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. * @param {NonNegativeInteger} KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. -* @param {number} CFROM - the matrix `A` are multiplied by `CTO / CFROM` -* @param {number} CTO - the matrix `A` are multiplied by `CTO / CFROM` +* @param {number} CFROM - the matrix `A` is multiplied by `CTO / CFROM` +* @param {number} CTO - the matrix `A` is multiplied by `CTO / CFROM` * @param {NonNegativeInteger} M - number of rows in matrix `A` * @param {NonNegativeInteger} N - number of columns in matrix `A` * @param {Float64Array} A - input matrix diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js index a26362a6e698..4a1154a3440e 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/dlascl.js @@ -37,8 +37,8 @@ var base = require( './base.js' ); * @param {string} type - specifies the type of matrix `A` * @param {NonNegativeInteger} KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. * @param {NonNegativeInteger} KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. -* @param {number} CFROM - the matrix `A` are multiplied by `CTO / CFROM` -* @param {number} CTO - the matrix `A` are multiplied by `CTO / CFROM` +* @param {number} CFROM - the matrix `A` is multiplied by `CTO / CFROM` +* @param {number} CTO - the matrix `A` is multiplied by `CTO / CFROM` * @param {NonNegativeInteger} M - number of rows in matrix `A` * @param {NonNegativeInteger} N - number of columns in matrix `A` * @param {Float64Array} A - input matrix diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/ndarray.js index d2913fed0706..63fe7f1b73c7 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/ndarray.js @@ -32,8 +32,8 @@ var base = require( './base.js' ); * @param {string} type - specifies the type of matrix `A` * @param {NonNegativeInteger} KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. * @param {NonNegativeInteger} KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. -* @param {number} CFROM - the matrix `A` are multiplied by `CTO / CFROM` -* @param {number} CTO - the matrix `A` are multiplied by `CTO / CFROM` +* @param {number} CFROM - the matrix `A` is multiplied by `CTO / CFROM` +* @param {number} CTO - the matrix `A` is multiplied by `CTO / CFROM` * @param {NonNegativeInteger} M - number of rows in matrix `A` * @param {NonNegativeInteger} N - number of columns in matrix `A` * @param {Float64Array} A - input matrix From f72cc1bb808c06e809ff5038d844db4e39570770 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 10:00:14 +0000 Subject: [PATCH 10/20] docs: add readme --- 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: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- lib/node_modules/@stdlib/lapack/base/dlascl/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/README.md b/lib/node_modules/@stdlib/lapack/base/dlascl/README.md index 1fe2c441f207..f791296b575e 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/README.md +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/README.md @@ -20,7 +20,7 @@ limitations under the License. # dlascl -> Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM`. +> LAPACK routine to multiply a real M by N matrix `A` by a real scalar `CTO/CFROM`.
From 213300c823768536705dbc30e2efd29f81f1f741 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 10:06:43 +0000 Subject: [PATCH 11/20] docs: add package.json --- 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: na - task: lint_package_json status: passed - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../@stdlib/lapack/base/dlascl/package.json | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/package.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/package.json b/lib/node_modules/@stdlib/lapack/base/dlascl/package.json new file mode 100644 index 000000000000..c69c98163e7c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/lapack/base/dlascl", + "version": "0.0.0", + "description": "LAPACK routine to multiply a real M by N matrix `A` by a real scalar `CTO/CFROM`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "lapack", + "dlascl", + "scale", + "linear", + "algebra", + "subroutines", + "array", + "ndarray", + "matrix", + "float64", + "double", + "float64array" + ] +} From bd61b1eefcca6b1c74035be00e65e5e83a31cb57 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 10:14:08 +0000 Subject: [PATCH 12/20] docs: add repl.txt --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: passed - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../@stdlib/lapack/base/dlascl/docs/repl.txt | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/docs/repl.txt diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/docs/repl.txt b/lib/node_modules/@stdlib/lapack/base/dlascl/docs/repl.txt new file mode 100644 index 000000000000..3d3cf98d8244 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/docs/repl.txt @@ -0,0 +1,112 @@ +{{alias}}( order, type, KL, KU, CFROM, CTO, M, N, A, LDA ) + Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM`. + + Indexing is relative to the first index. To introduce an offset, use + typed array views. + + Parameters + ---------- + order: string + Row-major (C-style) or column-major (Fortran-style) order. Must be + either 'row-major' or 'column-major'. + + type: string + Specifies the type of matrix `A`. + + KL: nonNegativeInteger + Lower band width of `A`. Referenced only if type is + `symmetric-banded-lower` or `banded`. + + KU: nonNegativeInteger + Upper band width of `A`. Referenced only if type is + `symmetric-banded-upper` or `banded`. + + CFROM: number + The matrix `A` are multiplied by `CTO / CFROM`. + + CTO: number + The matrix `A` are multiplied by `CTO / CFROM`. + + M: nonNegativeInteger + Number of rows in matrix `A`. + + N: nonNegativeInteger + Number of columns in matrix `A`. + + A: Float64Array + Input matrix `A`. + + LDA: positiveInteger + Stride of the first dimension of `A` (a.k.a., leading dimension of + the matrix `A`). + + Returns + ------- + A: Float64Array + Scaled matrix `A`. + + Examples + -------- + > var A = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > {{alias}}( 'row-major', 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2 ) + [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] + + +{{alias}}.ndarray( type, KL, KU, CFROM, CTO, M, N, A, sa1, sa2, oa ) + Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM` using + alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + type: string + Specifies the type of matrix `A`. + + KL: nonNegativeInteger + Lower band width of `A`. Referenced only if type is + `symmetric-banded-lower` or `banded`. + + KU: nonNegativeInteger + Upper band width of `A`. Referenced only if type is + `symmetric-banded-upper` or `banded`. + + CFROM: number + The matrix `A` are multiplied by `CTO / CFROM`. + + CTO: number + The matrix `A` are multiplied by `CTO / CFROM`. + + M: nonNegativeInteger + Number of rows in matrix `A`. + + N: nonNegativeInteger + Number of columns in matrix `A`. + + A: Float64Array + Input matrix `A`. + + sa1: integer + Stride of the first dimension of `A`. + + sa2: integer + Stride of the second dimension of `A`. + + oa: nonNegativeInteger + Starting index for `A`. + + Returns + ------- + A: Float64Array + Scaled matrix `A`. + + Examples + -------- + > var A = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > {{alias}}.ndarray( 'general', 0, 0, 1.0, 2.0, 3, 2, A, 2, 1, 0 ) + [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] + + See Also + -------- From cd982b0a1d3e3970456db78b2bd3b3aaf1cef1bd Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 10:27:56 +0000 Subject: [PATCH 13/20] bench: add benchmarks --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../lapack/base/dlascl/benchmark/benchmark.js | 117 +++++++++++++++++ .../dlascl/benchmark/benchmark.ndarray.js | 124 ++++++++++++++++++ 2 files changed, 241 insertions(+) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/benchmark/benchmark.ndarray.js diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/benchmark/benchmark.js b/lib/node_modules/@stdlib/lapack/base/dlascl/benchmark/benchmark.js new file mode 100644 index 000000000000..83204efdac05 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/benchmark/benchmark.js @@ -0,0 +1,117 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var pkg = require( './../package.json' ).name; +var dlascl = require( './../lib/dlascl.js' ); + + +// VARIABLES // + +var LAYOUTS = [ + 'row-major', + 'column-major' +]; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {string} order - storage layout +* @param {PositiveInteger} N - number of rows/columns +* @returns {Function} benchmark function +*/ +function createBenchmark( order, N ) { + var LDA; + var A; + + LDA = N; + + A = uniform( N*N, -10.0, 10.0, { + 'dtype': 'float64' + }); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dlascl( order, 'general', 0, 0, 1.0, 2.0, N, N, A, LDA ); + if ( isnan( z[ i%z.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%z.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var min; + var max; + var ord; + var N; + var f; + var i; + var k; + + min = 1; // 10^min + max = 6; // 10^max + + for ( k = 0; k < LAYOUTS.length; k++ ) { + ord = LAYOUTS[ k ]; + for ( i = min; i <= max; i++ ) { + N = floor( pow( pow( 10, i ), 1.0/2.0 ) ); + f = createBenchmark( ord, N ); + bench( pkg+'::square_matrix:order='+ord+',size='+(N*N), f ); + } + } +} + +main(); diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlascl/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..c73ffd067621 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/benchmark/benchmark.ndarray.js @@ -0,0 +1,124 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var pkg = require( './../package.json' ).name; +var dlascl = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var LAYOUTS = [ + 'row-major', + 'column-major' +]; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {string} order - storage layout +* @param {PositiveInteger} N - number of rows/columns +* @returns {Function} benchmark function +*/ +function createBenchmark( order, N ) { + var sa1; + var sa2; + var A; + + if ( isColumnMajor( order ) ) { + sa1 = 1; + sa2 = N; + } else { // order === 'row-major' + sa1 = N; + sa2 = 1; + } + A = uniform( N*N, -10.0, 10.0, { + 'dtype': 'float64' + }); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dlascl( 'general', 0, 0, 1.0, 2.0, N, N, A, sa1, sa2, 0 ); + if ( isnan( z[ i%z.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%z.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var min; + var max; + var ord; + var N; + var f; + var i; + var k; + + min = 1; // 10^min + max = 6; // 10^max + + for ( k = 0; k < LAYOUTS.length; k++ ) { + ord = LAYOUTS[ k ]; + for ( i = min; i <= max; i++ ) { + N = floor( pow( pow( 10, i ), 1.0/2.0 ) ); + f = createBenchmark( ord, N ); + bench( pkg+'::square_matrix:ndarray:order='+ord+',size='+(N*N), f ); + } + } +} + +main(); From e833c89303d3589804f5dedc7d35799cdc0470d2 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 19:31:57 +0000 Subject: [PATCH 14/20] test: add tests --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - 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: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../@stdlib/lapack/base/dlascl/lib/base.js | 21 +++-- .../symmetric_banded_lower_column_major.json | 42 ++++++++++ .../symmetric_banded_lower_row_major.json | 38 +++++++++ .../symmetric_banded_upper_column_major.json | 42 ++++++++++ .../symmetric_banded_upper_row_major.json | 38 +++++++++ .../lapack/base/dlascl/test/test.dlascl.js | 82 ++++++++++++++++++- 6 files changed, 251 insertions(+), 12 deletions(-) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_lower_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_lower_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_upper_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_upper_row_major.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js index e231741a119a..5804bd5952a1 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js @@ -210,18 +210,18 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA } if ( type === 'symmetric-banded-lower' ) { + ia = offsetA; + k3 = KL + 1; + k4 = N; + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { - ia = offsetA; - k3 = KL + 1; - k4 = N; for ( i1 = 0; i1 < M; i1++ ) { - for ( i0 = max( 0, i1 - KL ); i0 < min( k4, i1 + 1 ); i0++ ) { - A[ ia+( ( i1-i0 ) * strideA2) ] *= mul; + for ( i0 = 0; i0 < ( N - i1 ); i0++ ) { + A[ ia + ( i0 * strideA2 ) ] *= mul; } ia += strideA1; } } else { - ia = offsetA; for ( i1 = 0; i1 < N; i1++ ) { for ( i0 = 0; i0 < min( k3, k4 - i1 ); i0++ ) { A[ ia+(i0*strideA1) ] *= mul; @@ -232,19 +232,18 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA } if ( type === 'symmetric-banded-upper' ) { - k1 = KU + 1; ia = offsetA; if ( isRowMajor( [ strideA1, strideA2 ] ) ) { - for ( i1 = 0; i1 < M; i1++ ) { - for ( i0 = i1; i0 < min( N, i1 + k1 ); i0++ ) { - A[ ia + ( (i0-i1) * strideA2) ] *= mul; + for ( i1 = 0; i1 <= KU; i1++ ) { + for ( i0 = max( KU-i1, 0 ); i0 < N; i0++ ) { + A[ ia + ( i0 * strideA2) ] *= mul; } ia += strideA1; } } else { for ( i1 = 0; i1 < N; i1++ ) { - for ( i0 = max( k1 - i1, 0 ); i0 < k1; i0++ ) { + for ( i0 = max( KU - i1, 0 ); i0 <= KU; i0++ ) { A[ ia+(i0*strideA1) ] *= mul; } ia += strideA2; diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_lower_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_lower_column_major.json new file mode 100644 index 000000000000..b150f1ba7ae1 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_lower_column_major.json @@ -0,0 +1,42 @@ +{ + "order": "column-major", + "type": "symmetric-banded-lower", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1.0, + "CTO": 10.0, + "A": [ + 1.1, 6.1, 10.1, + 2.2, 7.2, 11.2, + 3.3, 8.3, 12.3, + 4.4, 9.4, 0.0, + 5.5, 0.0, 0.0 + ], + "A_mat": [ + [ 1.1, 6.1, 10.1, 0.0, 0.0 ], + [ 6.1, 2.2, 7.2, 11.2, 0.0 ], + [ 10.1, 7.2, 3.3, 8.3, 12.3 ], + [ 0.0, 11.2, 8.3, 4.4, 9.4 ], + [ 0.0, 0.0, 12.3, 9.4, 5.5 ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + "A_out": [ + 11.0, 61.0, 101.0, + 22.0, 72.0, 112.0, + 33.0, 83.0, 123.0, + 44.0, 94.0, 0.0, + 55.0, 0.0, 0.0 + ], + "A_out_mat": [ + [ 11.0, 61.0, 101.0, 0.0, 0.0 ], + [ 61.0, 22.0, 72.0, 112.0, 0.0 ], + [101.0, 72.0, 33.0, 83.0, 123.0 ], + [ 0.0, 112.0, 83.0, 44.0, 94.0 ], + [ 0.0, 0.0, 123.0, 94.0, 55.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_lower_row_major.json new file mode 100644 index 000000000000..d4e8a5eaf71d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_lower_row_major.json @@ -0,0 +1,38 @@ +{ + "order": "row-major", + "type": "symmetric-banded-lower", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1.0, + "CTO": 10.0, + "A": [ + 1.1, 2.2, 3.3, 4.4, 5.5, + 6.1, 7.2, 8.3, 9.4, 0.0, + 10.1, 11.2, 12.3, 0.0, 0.0 + ], + "A_mat": [ + [ 1.1, 6.1, 10.1, 0.0, 0.0 ], + [ 6.1, 2.2, 7.2, 11.2, 0.0 ], + [ 10.1, 7.2, 3.3, 8.3, 12.3 ], + [ 0.0, 11.2, 8.3, 4.4, 9.4 ], + [ 0.0, 0.0, 12.3, 9.4, 5.5 ] + ], + "LDA": 5, + "strideA1": 5, + "strideA2": 1, + "offsetA": 0, + "A_out": [ + 11.0, 22.0, 33.0, 44.0, 55.0, + 61.0, 72.0, 83.0, 94.0, 0.0, + 101.0, 112.0, 123.0, 0.0, 0.0 + ], + "A_out_mat": [ + [ 11.0, 61.0, 101.0, 0.0, 0.0 ], + [ 61.0, 22.0, 72.0, 112.0, 0.0 ], + [101.0, 72.0, 33.0, 83.0, 123.0 ], + [ 0.0, 112.0, 83.0, 44.0, 94.0 ], + [ 0.0, 0.0, 123.0, 94.0, 55.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_upper_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_upper_column_major.json new file mode 100644 index 000000000000..4b0069b715a2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_upper_column_major.json @@ -0,0 +1,42 @@ +{ + "order": "column-major", + "type": "symmetric-banded-upper", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1.0, + "CTO": 10.0, + "A": [ + 0.0, 0.0, 1.1, + 0.0, 6.1, 2.2, + 10.1, 7.2, 3.3, + 11.2, 8.3, 4.4, + 12.3, 9.4, 5.5 + ], + "A_mat": [ + [ 1.1, 6.1, 10.1, 0.0, 0.0 ], + [ 6.1, 2.2, 7.2, 11.2, 0.0 ], + [ 10.1, 7.2, 3.3, 8.3, 12.3 ], + [ 0.0, 11.2, 8.3, 4.4, 9.4 ], + [ 0.0, 0.0, 12.3, 9.4, 5.5 ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + "A_out": [ + 0.0, 0.0, 11.0, + 0.0, 61.0, 22.0, + 101.0, 72.0, 33.0, + 112.0, 83.0, 44.0, + 123.0, 94.0, 55.0 + ], + "A_out_mat": [ + [ 11.0, 61.0, 101.0, 0.0, 0.0 ], + [ 61.0, 22.0, 72.0, 112.0, 0.0 ], + [101.0, 72.0, 33.0, 83.0, 123.0 ], + [ 0.0, 112.0, 83.0, 44.0, 94.0 ], + [ 0.0, 0.0, 123.0, 94.0, 55.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_upper_row_major.json new file mode 100644 index 000000000000..fa49632e2fbc --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/symmetric_banded_upper_row_major.json @@ -0,0 +1,38 @@ +{ + "order": "row-major", + "type": "symmetric-banded-upper", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1.0, + "CTO": 10.0, + "A": [ + 0.0, 0.0, 10.1, 11.2, 12.3, + 0.0, 6.1, 7.2, 8.3, 9.4, + 1.1, 2.2, 3.3, 4.4, 5.5 + ], + "A_mat": [ + [ 1.1, 6.1, 10.1, 0.0, 0.0 ], + [ 6.1, 2.2, 7.2, 11.2, 0.0 ], + [ 10.1, 7.2, 3.3, 8.3, 12.3 ], + [ 0.0, 11.2, 8.3, 4.4, 9.4 ], + [ 0.0, 0.0, 12.3, 9.4, 5.5 ] + ], + "LDA": 5, + "strideA1": 5, + "strideA2": 1, + "offsetA": 0, + "A_out": [ + 0.0, 0.0, 101.0, 112.0, 123.0, + 0.0, 61.0, 72.0, 83.0, 94.0, + 11.0, 22.0, 33.0, 44.0, 55.0 + ], + "A_out_mat": [ + [ 11.0, 61.0, 101.0, 0.0, 0.0 ], + [ 61.0, 22.0, 72.0, 112.0, 0.0 ], + [101.0, 72.0, 33.0, 83.0, 123.0 ], + [ 0.0, 112.0, 83.0, 44.0, 94.0 ], + [ 0.0, 0.0, 123.0, 94.0, 55.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js index ca8628cd4253..eef62cbd2ca6 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js @@ -16,7 +16,7 @@ * limitations under the License. */ -/* eslint-disable max-len */ +/* eslint-disable max-len, id-length */ 'use strict'; @@ -37,6 +37,10 @@ var LOWER_COL_MAJOR = require( './fixtures/lower_row_major.json' ); var LOWER_ROW_MAJOR = require( './fixtures/lower_row_major.json' ); var BANDED_COL_MAJOR = require( './fixtures/banded_column_major.json' ); var BANDED_ROW_MAJOR = require( './fixtures/banded_row_major.json' ); +var SYMMETRIC_BANDED_LOWER_ROW_MAJOR = require( './fixtures/symmetric_banded_lower_row_major.json' ); +var SYMMETRIC_BANDED_LOWER_COL_MAJOR = require( './fixtures/symmetric_banded_lower_column_major.json' ); +var SYMMETRIC_BANDED_UPPER_ROW_MAJOR = require( './fixtures/symmetric_banded_upper_row_major.json' ); +var SYMMETRIC_BANDED_UPPER_COL_MAJOR = require( './fixtures/symmetric_banded_upper_column_major.json' ); // TESTS // @@ -458,3 +462,79 @@ tape( 'the function scales a banded matrix (row-major)', function test( t ) { t.end(); }); + +tape( 'the function scales a symmetric banded matrix where the lower half is stored (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales symmetric banded matrix where the lower half is stored (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded matrix where the upper half is stored (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales symmetric banded matrix where the upper half is stored (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); From 1b9c79e2d5aada2fe7b07274b2cd3bcc6f7c1b77 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 20:00:08 +0000 Subject: [PATCH 15/20] test: add tests --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - 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: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../@stdlib/lapack/base/dlascl/lib/base.js | 14 ++++--- .../upper_hessenberg_column_major.json | 38 +++++++++++++++++ .../fixtures/upper_hessenberg_row_major.json | 38 +++++++++++++++++ .../lapack/base/dlascl/test/test.dlascl.js | 42 ++++++++++++++++++- 4 files changed, 125 insertions(+), 7 deletions(-) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_hessenberg_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_hessenberg_row_major.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js index 5804bd5952a1..9c72354c5503 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js @@ -66,6 +66,7 @@ var bignum = 1.0 / smlnum; function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-params var cfromc; var cfrom1; + var isrm; var ctoc; var cto1; var done; @@ -93,6 +94,7 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA cfromc = CFROM; ctoc = CTO; + isrm = isRowMajor( [ strideA1, strideA2 ] ); while ( !done ) { cfrom1 = CTO * smlnum; @@ -152,7 +154,7 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA if ( type === 'upper' ) { // Upper triangular matrix ia = offsetA; - if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + if ( isrm ) { for ( i1 = 0; i1 < M; i1++ ) { for ( i0 = i1; i0 < N; i0++ ) { A[ ia+(i0*strideA2) ] *= mul; @@ -172,7 +174,7 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA if ( type === 'lower' ) { // Lower triangular matrix ia = offsetA; - if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + if ( isrm ) { for ( i1 = 0; i1 < M; i1++ ) { for ( i0 = 0; i0 <= min( i1, N-1 ); i0++ ) { A[ ia+(i0*strideA2) ] *= mul; @@ -190,10 +192,10 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA } if ( type === 'upper-hessenberg' ) { - if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + if ( isrm ) { ia = offsetA; for ( i1 = 0; i1 < M; i1++ ) { - for ( i0 = 0; i0 <= min( i1+1, N-1 ); i0++ ) { + for ( i0 = max( i1-1, 0 ); i0 < N; i0++ ) { A[ ia+(i0*strideA2) ] *= mul; } ia += strideA1; @@ -214,7 +216,7 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA k3 = KL + 1; k4 = N; - if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + if ( isrm ) { for ( i1 = 0; i1 < M; i1++ ) { for ( i0 = 0; i0 < ( N - i1 ); i0++ ) { A[ ia + ( i0 * strideA2 ) ] *= mul; @@ -234,7 +236,7 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA if ( type === 'symmetric-banded-upper' ) { ia = offsetA; - if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + if ( isrm ) { for ( i1 = 0; i1 <= KU; i1++ ) { for ( i0 = max( KU-i1, 0 ); i0 < N; i0++ ) { A[ ia + ( i0 * strideA2) ] *= mul; diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_hessenberg_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_hessenberg_column_major.json new file mode 100644 index 000000000000..670203ba1b91 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_hessenberg_column_major.json @@ -0,0 +1,38 @@ +{ + "order": "column-major", + "type": "upper-hessenberg", + "M": 4, + "N": 4, + "KL": 0, + "KU": 1, + "CFROM": 1.0, + "CTO": 2.0, + "A": [ + 1.0, 5.0, 0.0, 0.0, + 2.0, 6.0, 9.0, 0.0, + 3.0, 7.0, 10.0, 12.0, + 4.0, 8.0, 11.0, 13.0 + ], + "A_mat": [ + [1.0, 2.0, 3.0, 4.0], + [5.0, 6.0, 7.0, 8.0], + [0.0, 9.0, 10.0, 11.0], + [0.0, 0.0, 12.0, 13.0] + ], + "LDA": 4, + "strideA1": 1, + "strideA2": 4, + "offsetA": 0, + "A_out": [ + 2.0, 10.0, 0.0, 0.0, + 4.0, 12.0, 18.0, 0.0, + 6.0, 14.0, 20.0, 24.0, + 8.0, 16.0, 22.0, 26.0 + ], + "A_out_mat": [ + [2.0, 4.0, 6.0, 8.0], + [10.0, 12.0, 14.0, 16.0], + [0.0, 18.0, 20.0, 22.0], + [0.0, 0.0, 24.0, 26.0] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_hessenberg_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_hessenberg_row_major.json new file mode 100644 index 000000000000..65b58ea9c77e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/upper_hessenberg_row_major.json @@ -0,0 +1,38 @@ +{ + "order": "row-major", + "type": "upper-hessenberg", + "M": 4, + "N": 4, + "KL": 0, + "KU": 1, + "CFROM": 1.0, + "CTO": 2.0, + "A": [ + 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 0.0, 9.0, 10.0, 11.0, + 0.0, 0.0, 12.0, 13.0 + ], + "A_mat": [ + [1.0, 2.0, 3.0, 4.0], + [5.0, 6.0, 7.0, 8.0], + [0.0, 9.0, 10.0, 11.0], + [0.0, 0.0, 12.0, 13.0] + ], + "LDA": 4, + "strideA1": 4, + "strideA2": 1, + "offsetA": 0, + "A_out": [ + 2.0, 4.0, 6.0, 8.0, + 10.0, 12.0, 14.0, 16.0, + 0.0, 18.0, 20.0, 22.0, + 0.0, 0.0, 24.0, 26.0 + ], + "A_out_mat": [ + [2.0, 4.0, 6.0, 8.0], + [10.0, 12.0, 14.0, 16.0], + [0.0, 18.0, 20.0, 22.0], + [0.0, 0.0, 24.0, 26.0] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js index eef62cbd2ca6..71804cb4be08 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.dlascl.js @@ -33,7 +33,7 @@ var GENERAL_COL_MAJOR = require( './fixtures/general_column_major.json' ); var GENERAL_ROW_MAJOR = require( './fixtures/general_row_major.json' ); var UPPER_COL_MAJOR = require( './fixtures/upper_column_major.json' ); var UPPER_ROW_MAJOR = require( './fixtures/upper_row_major.json' ); -var LOWER_COL_MAJOR = require( './fixtures/lower_row_major.json' ); +var LOWER_COL_MAJOR = require( './fixtures/lower_column_major.json' ); var LOWER_ROW_MAJOR = require( './fixtures/lower_row_major.json' ); var BANDED_COL_MAJOR = require( './fixtures/banded_column_major.json' ); var BANDED_ROW_MAJOR = require( './fixtures/banded_row_major.json' ); @@ -41,6 +41,8 @@ var SYMMETRIC_BANDED_LOWER_ROW_MAJOR = require( './fixtures/symmetric_banded_low var SYMMETRIC_BANDED_LOWER_COL_MAJOR = require( './fixtures/symmetric_banded_lower_column_major.json' ); var SYMMETRIC_BANDED_UPPER_ROW_MAJOR = require( './fixtures/symmetric_banded_upper_row_major.json' ); var SYMMETRIC_BANDED_UPPER_COL_MAJOR = require( './fixtures/symmetric_banded_upper_column_major.json' ); +var UPPER_HESSENBERG_ROW_MAJOR = require( './fixtures/upper_hessenberg_row_major.json' ); +var UPPER_HESSENBERG_COL_MAJOR = require( './fixtures/upper_hessenberg_column_major.json' ); // TESTS // @@ -538,3 +540,41 @@ tape( 'the function scales symmetric banded matrix where the upper half is store t.end(); }); + +tape( 'the function scales an upper hessenberg matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HESSENBERG_COL_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HESSENBERG_ROW_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.order, data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.LDA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); From 31b4286dda8611044903523f1088274ef68f9fbe Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 20:27:12 +0000 Subject: [PATCH 16/20] test: add all tests --- .../large_strides/banded_column_major.json | 212 +++++++++++++++++ .../large_strides/banded_row_major.json | 212 +++++++++++++++++ .../large_strides/general_column_major.json | 70 ++++++ .../large_strides/general_row_major.json | 70 ++++++ .../large_strides/lower_column_major.json | 88 +++++++ .../large_strides/lower_row_major.json | 88 +++++++ .../symmetric_banded_lower_column_major.json | 152 ++++++++++++ .../symmetric_banded_lower_row_major.json | 152 ++++++++++++ .../symmetric_banded_upper_column_major.json | 152 ++++++++++++ .../symmetric_banded_upper_row_major.json | 152 ++++++++++++ .../large_strides/upper_column_major.json | 88 +++++++ .../upper_hessenberg_column_major.json | 134 +++++++++++ .../upper_hessenberg_row_major.json | 134 +++++++++++ .../large_strides/upper_row_major.json | 88 +++++++ .../mixed_strides/banded_column_major.json | 152 ++++++++++++ .../mixed_strides/banded_row_major.json | 152 ++++++++++++ .../mixed_strides/general_column_major.json | 58 +++++ .../mixed_strides/general_row_major.json | 58 +++++ .../mixed_strides/lower_column_major.json | 70 ++++++ .../mixed_strides/lower_row_major.json | 70 ++++++ .../symmetric_banded_lower_column_major.json | 122 ++++++++++ .../symmetric_banded_lower_row_major.json | 122 ++++++++++ .../symmetric_banded_upper_column_major.json | 122 ++++++++++ .../symmetric_banded_upper_row_major.json | 122 ++++++++++ .../mixed_strides/upper_column_major.json | 70 ++++++ .../upper_hessenberg_column_major.json | 102 ++++++++ .../upper_hessenberg_row_major.json | 102 ++++++++ .../mixed_strides/upper_row_major.json | 70 ++++++ .../negative_strides/banded_column_major.json | 152 ++++++++++++ .../negative_strides/banded_row_major.json | 152 ++++++++++++ .../general_column_major.json | 58 +++++ .../negative_strides/general_row_major.json | 58 +++++ .../negative_strides/lower_column_major.json | 70 ++++++ .../negative_strides/lower_row_major.json | 70 ++++++ .../symmetric_banded_lower_column_major.json | 122 ++++++++++ .../symmetric_banded_lower_row_major.json | 122 ++++++++++ .../symmetric_banded_upper_column_major.json | 122 ++++++++++ .../symmetric_banded_upper_row_major.json | 122 ++++++++++ .../negative_strides/upper_column_major.json | 70 ++++++ .../upper_hessenberg_column_major.json | 102 ++++++++ .../upper_hessenberg_row_major.json | 102 ++++++++ .../negative_strides/upper_row_major.json | 70 ++++++ .../fixtures/offsets/banded_column_major.json | 154 ++++++++++++ .../fixtures/offsets/banded_row_major.json | 154 ++++++++++++ .../offsets/general_column_major.json | 60 +++++ .../fixtures/offsets/general_row_major.json | 60 +++++ .../fixtures/offsets/lower_column_major.json | 72 ++++++ .../fixtures/offsets/lower_row_major.json | 72 ++++++ .../symmetric_banded_lower_column_major.json | 124 ++++++++++ .../symmetric_banded_lower_row_major.json | 124 ++++++++++ .../symmetric_banded_upper_column_major.json | 124 ++++++++++ .../symmetric_banded_upper_row_major.json | 124 ++++++++++ .../fixtures/offsets/upper_column_major.json | 72 ++++++ .../upper_hessenberg_column_major.json | 104 ++++++++ .../offsets/upper_hessenberg_row_major.json | 104 ++++++++ .../fixtures/offsets/upper_row_major.json | 72 ++++++ .../lapack/base/dlascl/test/test.ndarray.js | 223 +++++++++++++++++- 57 files changed, 6218 insertions(+), 1 deletion(-) create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/banded_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/banded_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/general_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/general_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/lower_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/lower_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_lower_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_lower_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_upper_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_upper_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_hessenberg_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_hessenberg_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/banded_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/banded_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/general_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/general_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/lower_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/lower_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_lower_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_lower_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_upper_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_upper_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_hessenberg_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_hessenberg_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/banded_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/banded_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/general_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/general_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/lower_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/lower_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_lower_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_lower_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_upper_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_upper_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_hessenberg_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_hessenberg_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/banded_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/banded_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/general_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/general_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/lower_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/lower_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_lower_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_lower_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_upper_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_upper_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_hessenberg_column_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_hessenberg_row_major.json create mode 100644 lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_row_major.json diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/banded_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/banded_column_major.json new file mode 100644 index 000000000000..50d02c29ddb8 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/banded_column_major.json @@ -0,0 +1,212 @@ +{ + "order": "column-major", + "type": "banded", + "M": 5, + "N": 5, + "KL": 2, + "KU": 1, + "CFROM": 1, + "CTO": 10, + "A": [ + 0, + 9999, + 0, + 9999, + 0, + 9999, + 1.1, + 9999, + 2.1, + 9999, + 3.1, + 9999, + 0, + 9999, + 0, + 9999, + 1.2, + 9999, + 2.2, + 9999, + 3.2, + 9999, + 4.2, + 9999, + 0, + 9999, + 0, + 9999, + 2.3, + 9999, + 3.3, + 9999, + 4.3, + 9999, + 5.3, + 9999, + 0, + 9999, + 0, + 9999, + 3.4, + 9999, + 4.4, + 9999, + 5.4, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 4.5, + 9999, + 5.5, + 9999, + 0, + 9999, + 0, + 9999 + ], + "A_mat": [ + [ + 1.1, + 1.2, + 0, + 0, + 0 + ], + [ + 2.1, + 2.2, + 2.3, + 0, + 0 + ], + [ + 3.1, + 3.2, + 3.3, + 3.4, + 0 + ], + [ + 0, + 4.2, + 4.3, + 4.4, + 4.5 + ], + [ + 0, + 0, + 5.3, + 5.4, + 5.5 + ] + ], + "LDA": 6, + "strideA1": 2, + "strideA2": 12, + "offsetA": 0, + "A_out": [ + 0, + 9999, + 0, + 9999, + 0, + 9999, + 11, + 9999, + 21, + 9999, + 31, + 9999, + 0, + 9999, + 0, + 9999, + 12, + 9999, + 22, + 9999, + 32, + 9999, + 42, + 9999, + 0, + 9999, + 0, + 9999, + 23, + 9999, + 33, + 9999, + 43, + 9999, + 53, + 9999, + 0, + 9999, + 0, + 9999, + 34, + 9999, + 44, + 9999, + 54, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 45, + 9999, + 55, + 9999, + 0, + 9999, + 0, + 9999 + ], + "A_out_mat": [ + [ + 11, + 12, + 0, + 0, + 0 + ], + [ + 21, + 22, + 23, + 0, + 0 + ], + [ + 31, + 32, + 33, + 34, + 0 + ], + [ + 0, + 42, + 43, + 44, + 45 + ], + [ + 0, + 0, + 53, + 54, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/banded_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/banded_row_major.json new file mode 100644 index 000000000000..cad859f56d64 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/banded_row_major.json @@ -0,0 +1,212 @@ +{ + "order": "row-major", + "type": "banded", + "M": 5, + "N": 5, + "KL": 2, + "KU": 1, + "CFROM": 1, + "CTO": 10, + "A": [ + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 1.2, + 9999, + 2.3, + 9999, + 3.4, + 9999, + 4.5, + 9999, + 1.1, + 9999, + 2.2, + 9999, + 3.3, + 9999, + 4.4, + 9999, + 5.5, + 9999, + 2.1, + 9999, + 3.2, + 9999, + 4.3, + 9999, + 5.4, + 9999, + 0, + 9999, + 3.1, + 9999, + 4.2, + 9999, + 5.3, + 9999, + 0, + 9999, + 0, + 9999 + ], + "A_mat": [ + [ + 1.1, + 1.2, + 0, + 0, + 0 + ], + [ + 2.1, + 2.2, + 2.3, + 0, + 0 + ], + [ + 3.1, + 3.2, + 3.3, + 3.4, + 0 + ], + [ + 0, + 4.2, + 4.3, + 4.4, + 4.5 + ], + [ + 0, + 0, + 5.3, + 5.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": 10, + "strideA2": 2, + "offsetA": 0, + "A_out": [ + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 0, + 9999, + 12, + 9999, + 23, + 9999, + 34, + 9999, + 45, + 9999, + 11, + 9999, + 22, + 9999, + 33, + 9999, + 44, + 9999, + 55, + 9999, + 21, + 9999, + 32, + 9999, + 43, + 9999, + 54, + 9999, + 0, + 9999, + 31, + 9999, + 42, + 9999, + 53, + 9999, + 0, + 9999, + 0, + 9999 + ], + "A_out_mat": [ + [ + 11, + 12, + 0, + 0, + 0 + ], + [ + 21, + 22, + 23, + 0, + 0 + ], + [ + 31, + 32, + 33, + 34, + 0 + ], + [ + 0, + 42, + 43, + 44, + 45 + ], + [ + 0, + 0, + 53, + 54, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/general_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/general_column_major.json new file mode 100644 index 000000000000..01b7e2d8f20b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/general_column_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "type": "general", + "M": 3, + "N": 2, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 1, + 9999, + 2, + 9999, + 3, + 9999, + 4, + 9999, + 5, + 9999, + 6, + 9999 + ], + "A_mat": [ + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_out": [ + 2, + 9999, + 4, + 9999, + 6, + 9999, + 8, + 9999, + 10, + 9999, + 12, + 9999 + ], + "A_out_mat": [ + [ + 2, + 4 + ], + [ + 6, + 8 + ], + [ + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/general_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/general_row_major.json new file mode 100644 index 000000000000..f6c20aa8da45 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/general_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "type": "general", + "M": 3, + "N": 2, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 1, + 9999, + 4, + 9999, + 2, + 9999, + 5, + 9999, + 3, + 9999, + 6, + 9999 + ], + "A_mat": [ + [ + 1, + 4 + ], + [ + 2, + 5 + ], + [ + 3, + 6 + ] + ], + "LDA": 2, + "strideA1": 4, + "strideA2": 2, + "offsetA": 0, + "A_out": [ + 2, + 9999, + 8, + 9999, + 4, + 9999, + 10, + 9999, + 6, + 9999, + 12, + 9999 + ], + "A_out_mat": [ + [ + 2, + 8 + ], + [ + 4, + 10 + ], + [ + 6, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/lower_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/lower_column_major.json new file mode 100644 index 000000000000..3f85d5c622b8 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/lower_column_major.json @@ -0,0 +1,88 @@ +{ + "order": "column-major", + "type": "lower", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 1, + 9999, + 2, + 9999, + 3, + 9999, + 0, + 9999, + 4, + 9999, + 5, + 9999, + 0, + 9999, + 0, + 9999, + 6, + 9999 + ], + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 4, + 0 + ], + [ + 3, + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_out": [ + 2, + 9999, + 4, + 9999, + 6, + 9999, + 0, + 9999, + 8, + 9999, + 10, + 9999, + 0, + 9999, + 0, + 9999, + 12, + 9999 + ], + "A_out_mat": [ + [ + 2, + 0, + 0 + ], + [ + 4, + 8, + 0 + ], + [ + 6, + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/lower_row_major.json new file mode 100644 index 000000000000..2036e226728d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/lower_row_major.json @@ -0,0 +1,88 @@ +{ + "order": "row-major", + "type": "lower", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 2, + 9999, + 4, + 9999, + 0, + 9999, + 3, + 9999, + 5, + 9999, + 6, + 9999 + ], + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 4, + 0 + ], + [ + 3, + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_out": [ + 2, + 9999, + 0, + 9999, + 0, + 9999, + 4, + 9999, + 8, + 9999, + 0, + 9999, + 6, + 9999, + 10, + 9999, + 12, + 9999 + ], + "A_out_mat": [ + [ + 2, + 0, + 0 + ], + [ + 4, + 8, + 0 + ], + [ + 6, + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_lower_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_lower_column_major.json new file mode 100644 index 000000000000..959b3ec9d503 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_lower_column_major.json @@ -0,0 +1,152 @@ +{ + "order": "column-major", + "type": "symmetric-banded-lower", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 1.1, + 9999, + 6.1, + 9999, + 10.1, + 9999, + 2.2, + 9999, + 7.2, + 9999, + 11.2, + 9999, + 3.3, + 9999, + 8.3, + 9999, + 12.3, + 9999, + 4.4, + 9999, + 9.4, + 9999, + 0, + 9999, + 5.5, + 9999, + 0, + 9999, + 0, + 9999 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 3, + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_out": [ + 11, + 9999, + 61, + 9999, + 101, + 9999, + 22, + 9999, + 72, + 9999, + 112, + 9999, + 33, + 9999, + 83, + 9999, + 123, + 9999, + 44, + 9999, + 94, + 9999, + 0, + 9999, + 55, + 9999, + 0, + 9999, + 0, + 9999 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_lower_row_major.json new file mode 100644 index 000000000000..260aef7cd370 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_lower_row_major.json @@ -0,0 +1,152 @@ +{ + "order": "row-major", + "type": "symmetric-banded-lower", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 1.1, + 9999, + 2.2, + 9999, + 3.3, + 9999, + 4.4, + 9999, + 5.5, + 9999, + 6.1, + 9999, + 7.2, + 9999, + 8.3, + 9999, + 9.4, + 9999, + 0, + 9999, + 10.1, + 9999, + 11.2, + 9999, + 12.3, + 9999, + 0, + 9999, + 0, + 9999 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": 10, + "strideA2": 2, + "offsetA": 0, + "A_out": [ + 11, + 9999, + 22, + 9999, + 33, + 9999, + 44, + 9999, + 55, + 9999, + 61, + 9999, + 72, + 9999, + 83, + 9999, + 94, + 9999, + 0, + 9999, + 101, + 9999, + 112, + 9999, + 123, + 9999, + 0, + 9999, + 0, + 9999 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_upper_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_upper_column_major.json new file mode 100644 index 000000000000..ce151dc79ec4 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_upper_column_major.json @@ -0,0 +1,152 @@ +{ + "order": "column-major", + "type": "symmetric-banded-upper", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 0, + 9999, + 0, + 9999, + 1.1, + 9999, + 0, + 9999, + 6.1, + 9999, + 2.2, + 9999, + 10.1, + 9999, + 7.2, + 9999, + 3.3, + 9999, + 11.2, + 9999, + 8.3, + 9999, + 4.4, + 9999, + 12.3, + 9999, + 9.4, + 9999, + 5.5, + 9999 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 3, + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_out": [ + 0, + 9999, + 0, + 9999, + 11, + 9999, + 0, + 9999, + 61, + 9999, + 22, + 9999, + 101, + 9999, + 72, + 9999, + 33, + 9999, + 112, + 9999, + 83, + 9999, + 44, + 9999, + 123, + 9999, + 94, + 9999, + 55, + 9999 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_upper_row_major.json new file mode 100644 index 000000000000..5eca93c8fbdc --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/symmetric_banded_upper_row_major.json @@ -0,0 +1,152 @@ +{ + "order": "row-major", + "type": "symmetric-banded-upper", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 0, + 9999, + 0, + 9999, + 10.1, + 9999, + 11.2, + 9999, + 12.3, + 9999, + 0, + 9999, + 6.1, + 9999, + 7.2, + 9999, + 8.3, + 9999, + 9.4, + 9999, + 1.1, + 9999, + 2.2, + 9999, + 3.3, + 9999, + 4.4, + 9999, + 5.5, + 9999 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": 10, + "strideA2": 2, + "offsetA": 0, + "A_out": [ + 0, + 9999, + 0, + 9999, + 101, + 9999, + 112, + 9999, + 123, + 9999, + 0, + 9999, + 61, + 9999, + 72, + 9999, + 83, + 9999, + 94, + 9999, + 11, + 9999, + 22, + 9999, + 33, + 9999, + 44, + 9999, + 55, + 9999 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_column_major.json new file mode 100644 index 000000000000..fdd24bafda86 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_column_major.json @@ -0,0 +1,88 @@ +{ + "order": "column-major", + "type": "upper", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 2, + 9999, + 3, + 9999, + 0, + 9999, + 4, + 9999, + 5, + 9999, + 6, + 9999 + ], + "A_mat": [ + [ + 1, + 2, + 4 + ], + [ + 0, + 3, + 5 + ], + [ + 0, + 0, + 6 + ] + ], + "LDA": 3, + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_out": [ + 2, + 9999, + 0, + 9999, + 0, + 9999, + 4, + 9999, + 6, + 9999, + 0, + 9999, + 8, + 9999, + 10, + 9999, + 12, + 9999 + ], + "A_out_mat": [ + [ + 2, + 4, + 8 + ], + [ + 0, + 6, + 10 + ], + [ + 0, + 0, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_hessenberg_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_hessenberg_column_major.json new file mode 100644 index 000000000000..e6ab4400448e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_hessenberg_column_major.json @@ -0,0 +1,134 @@ +{ + "order": "column-major", + "type": "upper-hessenberg", + "M": 4, + "N": 4, + "KL": 0, + "KU": 1, + "CFROM": 1, + "CTO": 2, + "A": [ + 1, + 9999, + 5, + 9999, + 0, + 9999, + 0, + 9999, + 2, + 9999, + 6, + 9999, + 9, + 9999, + 0, + 9999, + 3, + 9999, + 7, + 9999, + 10, + 9999, + 12, + 9999, + 4, + 9999, + 8, + 9999, + 11, + 9999, + 13, + 9999 + ], + "A_mat": [ + [ + 1, + 2, + 3, + 4 + ], + [ + 5, + 6, + 7, + 8 + ], + [ + 0, + 9, + 10, + 11 + ], + [ + 0, + 0, + 12, + 13 + ] + ], + "LDA": 4, + "strideA1": 2, + "strideA2": 8, + "offsetA": 0, + "A_out": [ + 2, + 9999, + 10, + 9999, + 0, + 9999, + 0, + 9999, + 4, + 9999, + 12, + 9999, + 18, + 9999, + 0, + 9999, + 6, + 9999, + 14, + 9999, + 20, + 9999, + 24, + 9999, + 8, + 9999, + 16, + 9999, + 22, + 9999, + 26, + 9999 + ], + "A_out_mat": [ + [ + 2, + 4, + 6, + 8 + ], + [ + 10, + 12, + 14, + 16 + ], + [ + 0, + 18, + 20, + 22 + ], + [ + 0, + 0, + 24, + 26 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_hessenberg_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_hessenberg_row_major.json new file mode 100644 index 000000000000..f49a1543d435 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_hessenberg_row_major.json @@ -0,0 +1,134 @@ +{ + "order": "row-major", + "type": "upper-hessenberg", + "M": 4, + "N": 4, + "KL": 0, + "KU": 1, + "CFROM": 1, + "CTO": 2, + "A": [ + 1, + 9999, + 2, + 9999, + 3, + 9999, + 4, + 9999, + 5, + 9999, + 6, + 9999, + 7, + 9999, + 8, + 9999, + 0, + 9999, + 9, + 9999, + 10, + 9999, + 11, + 9999, + 0, + 9999, + 0, + 9999, + 12, + 9999, + 13, + 9999 + ], + "A_mat": [ + [ + 1, + 2, + 3, + 4 + ], + [ + 5, + 6, + 7, + 8 + ], + [ + 0, + 9, + 10, + 11 + ], + [ + 0, + 0, + 12, + 13 + ] + ], + "LDA": 4, + "strideA1": 8, + "strideA2": 2, + "offsetA": 0, + "A_out": [ + 2, + 9999, + 4, + 9999, + 6, + 9999, + 8, + 9999, + 10, + 9999, + 12, + 9999, + 14, + 9999, + 16, + 9999, + 0, + 9999, + 18, + 9999, + 20, + 9999, + 22, + 9999, + 0, + 9999, + 0, + 9999, + 24, + 9999, + 26, + 9999 + ], + "A_out_mat": [ + [ + 2, + 4, + 6, + 8 + ], + [ + 10, + 12, + 14, + 16 + ], + [ + 0, + 18, + 20, + 22 + ], + [ + 0, + 0, + 24, + 26 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_row_major.json new file mode 100644 index 000000000000..710ad6d9375d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/large_strides/upper_row_major.json @@ -0,0 +1,88 @@ +{ + "order": "row-major", + "type": "upper", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 1, + 9999, + 2, + 9999, + 4, + 9999, + 0, + 9999, + 3, + 9999, + 5, + 9999, + 0, + 9999, + 0, + 9999, + 6, + 9999 + ], + "A_mat": [ + [ + 1, + 2, + 4 + ], + [ + 0, + 3, + 5 + ], + [ + 0, + 0, + 6 + ] + ], + "LDA": 3, + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_out": [ + 2, + 9999, + 4, + 9999, + 8, + 9999, + 0, + 9999, + 6, + 9999, + 10, + 9999, + 0, + 9999, + 0, + 9999, + 12, + 9999 + ], + "A_out_mat": [ + [ + 2, + 4, + 8 + ], + [ + 0, + 6, + 10 + ], + [ + 0, + 0, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/banded_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/banded_column_major.json new file mode 100644 index 000000000000..fe1f7e793955 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/banded_column_major.json @@ -0,0 +1,152 @@ +{ + "order": "column-major", + "type": "banded", + "M": 5, + "N": 5, + "KL": 2, + "KU": 1, + "CFROM": 1, + "CTO": 10, + "A": [ + 0, + 0, + 4.5, + 5.5, + 0, + 0, + 0, + 0, + 3.4, + 4.4, + 5.4, + 0, + 0, + 0, + 2.3, + 3.3, + 4.3, + 5.3, + 0, + 0, + 1.2, + 2.2, + 3.2, + 4.2, + 0, + 0, + 0, + 1.1, + 2.1, + 3.1 + ], + "A_mat": [ + [ + 1.1, + 1.2, + 0, + 0, + 0 + ], + [ + 2.1, + 2.2, + 2.3, + 0, + 0 + ], + [ + 3.1, + 3.2, + 3.3, + 3.4, + 0 + ], + [ + 0, + 4.2, + 4.3, + 4.4, + 4.5 + ], + [ + 0, + 0, + 5.3, + 5.4, + 5.5 + ] + ], + "LDA": 6, + "strideA1": 1, + "strideA2": -6, + "offsetA": 24, + "A_out": [ + 0, + 0, + 45, + 55, + 0, + 0, + 0, + 0, + 34, + 44, + 54, + 0, + 0, + 0, + 23, + 33, + 43, + 53, + 0, + 0, + 12, + 22, + 32, + 42, + 0, + 0, + 0, + 11, + 21, + 31 + ], + "A_out_mat": [ + [ + 11, + 12, + 0, + 0, + 0 + ], + [ + 21, + 22, + 23, + 0, + 0 + ], + [ + 31, + 32, + 33, + 34, + 0 + ], + [ + 0, + 42, + 43, + 44, + 45 + ], + [ + 0, + 0, + 53, + 54, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/banded_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/banded_row_major.json new file mode 100644 index 000000000000..9b11908f11c7 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/banded_row_major.json @@ -0,0 +1,152 @@ +{ + "order": "row-major", + "type": "banded", + "M": 5, + "N": 5, + "KL": 2, + "KU": 1, + "CFROM": 1, + "CTO": 10, + "A": [ + 3.1, + 4.2, + 5.3, + 0, + 0, + 2.1, + 3.2, + 4.3, + 5.4, + 0, + 1.1, + 2.2, + 3.3, + 4.4, + 5.5, + 0, + 1.2, + 2.3, + 3.4, + 4.5, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "A_mat": [ + [ + 1.1, + 1.2, + 0, + 0, + 0 + ], + [ + 2.1, + 2.2, + 2.3, + 0, + 0 + ], + [ + 3.1, + 3.2, + 3.3, + 3.4, + 0 + ], + [ + 0, + 4.2, + 4.3, + 4.4, + 4.5 + ], + [ + 0, + 0, + 5.3, + 5.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": -5, + "strideA2": 1, + "offsetA": 25, + "A_out": [ + 31, + 42, + 53, + 0, + 0, + 21, + 32, + 43, + 54, + 0, + 11, + 22, + 33, + 44, + 55, + 0, + 12, + 23, + 34, + 45, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "A_out_mat": [ + [ + 11, + 12, + 0, + 0, + 0 + ], + [ + 21, + 22, + 23, + 0, + 0 + ], + [ + 31, + 32, + 33, + 34, + 0 + ], + [ + 0, + 42, + 43, + 44, + 45 + ], + [ + 0, + 0, + 53, + 54, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/general_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/general_column_major.json new file mode 100644 index 000000000000..4b541c26c2f2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/general_column_major.json @@ -0,0 +1,58 @@ +{ + "order": "column-major", + "type": "general", + "M": 3, + "N": 2, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 4, + 5, + 6, + 1, + 2, + 3 + ], + "A_mat": [ + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": -3, + "offsetA": 3, + "A_out": [ + 8, + 10, + 12, + 2, + 4, + 6 + ], + "A_out_mat": [ + [ + 2, + 4 + ], + [ + 6, + 8 + ], + [ + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/general_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/general_row_major.json new file mode 100644 index 000000000000..c2b1064e80e8 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/general_row_major.json @@ -0,0 +1,58 @@ +{ + "order": "row-major", + "type": "general", + "M": 3, + "N": 2, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 3, + 6, + 2, + 5, + 1, + 4 + ], + "A_mat": [ + [ + 1, + 4 + ], + [ + 2, + 5 + ], + [ + 3, + 6 + ] + ], + "LDA": 2, + "strideA1": -2, + "strideA2": 1, + "offsetA": 4, + "A_out": [ + 6, + 12, + 4, + 10, + 2, + 8 + ], + "A_out_mat": [ + [ + 2, + 8 + ], + [ + 4, + 10 + ], + [ + 6, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/lower_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/lower_column_major.json new file mode 100644 index 000000000000..411daaf747ce --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/lower_column_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "type": "lower", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 0, + 0, + 6, + 0, + 4, + 5, + 1, + 2, + 3 + ], + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 4, + 0 + ], + [ + 3, + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_out": [ + 0, + 0, + 12, + 0, + 8, + 10, + 2, + 4, + 6 + ], + "A_out_mat": [ + [ + 2, + 0, + 0 + ], + [ + 4, + 8, + 0 + ], + [ + 6, + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/lower_row_major.json new file mode 100644 index 000000000000..09bbc21a109e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/lower_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "type": "lower", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 3, + 5, + 6, + 2, + 4, + 0, + 1, + 0, + 0 + ], + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 4, + 0 + ], + [ + 3, + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_out": [ + 6, + 10, + 12, + 4, + 8, + 0, + 2, + 0, + 0 + ], + "A_out_mat": [ + [ + 2, + 0, + 0 + ], + [ + 4, + 8, + 0 + ], + [ + 6, + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_lower_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_lower_column_major.json new file mode 100644 index 000000000000..4094a37a209f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_lower_column_major.json @@ -0,0 +1,122 @@ +{ + "order": "column-major", + "type": "symmetric-banded-lower", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 5.5, + 0, + 0, + 4.4, + 9.4, + 0, + 3.3, + 8.3, + 12.3, + 2.2, + 7.2, + 11.2, + 1.1, + 6.1, + 10.1 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": -3, + "offsetA": 12, + "A_out": [ + 55, + 0, + 0, + 44, + 94, + 0, + 33, + 83, + 123, + 22, + 72, + 112, + 11, + 61, + 101 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_lower_row_major.json new file mode 100644 index 000000000000..0757a8502464 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_lower_row_major.json @@ -0,0 +1,122 @@ +{ + "order": "row-major", + "type": "symmetric-banded-lower", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 10.1, + 11.2, + 12.3, + 0, + 0, + 6.1, + 7.2, + 8.3, + 9.4, + 0, + 1.1, + 2.2, + 3.3, + 4.4, + 5.5 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": -5, + "strideA2": 1, + "offsetA": 10, + "A_out": [ + 101, + 112, + 123, + 0, + 0, + 61, + 72, + 83, + 94, + 0, + 11, + 22, + 33, + 44, + 55 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_upper_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_upper_column_major.json new file mode 100644 index 000000000000..c69e2136fb35 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_upper_column_major.json @@ -0,0 +1,122 @@ +{ + "order": "column-major", + "type": "symmetric-banded-upper", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 12.3, + 9.4, + 5.5, + 11.2, + 8.3, + 4.4, + 10.1, + 7.2, + 3.3, + 0, + 6.1, + 2.2, + 0, + 0, + 1.1 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": -3, + "offsetA": 12, + "A_out": [ + 123, + 94, + 55, + 112, + 83, + 44, + 101, + 72, + 33, + 0, + 61, + 22, + 0, + 0, + 11 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_upper_row_major.json new file mode 100644 index 000000000000..1ad05a25d76b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/symmetric_banded_upper_row_major.json @@ -0,0 +1,122 @@ +{ + "order": "row-major", + "type": "symmetric-banded-upper", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 1.1, + 2.2, + 3.3, + 4.4, + 5.5, + 0, + 6.1, + 7.2, + 8.3, + 9.4, + 0, + 0, + 10.1, + 11.2, + 12.3 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": -5, + "strideA2": 1, + "offsetA": 10, + "A_out": [ + 11, + 22, + 33, + 44, + 55, + 0, + 61, + 72, + 83, + 94, + 0, + 0, + 101, + 112, + 123 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_column_major.json new file mode 100644 index 000000000000..495193d7507c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_column_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "type": "upper", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 4, + 5, + 6, + 2, + 3, + 0, + 1, + 0, + 0 + ], + "A_mat": [ + [ + 1, + 2, + 4 + ], + [ + 0, + 3, + 5 + ], + [ + 0, + 0, + 6 + ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_out": [ + 8, + 10, + 12, + 4, + 6, + 0, + 2, + 0, + 0 + ], + "A_out_mat": [ + [ + 2, + 4, + 8 + ], + [ + 0, + 6, + 10 + ], + [ + 0, + 0, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_hessenberg_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_hessenberg_column_major.json new file mode 100644 index 000000000000..2a774d6ebf94 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_hessenberg_column_major.json @@ -0,0 +1,102 @@ +{ + "order": "column-major", + "type": "upper-hessenberg", + "M": 4, + "N": 4, + "KL": 0, + "KU": 1, + "CFROM": 1, + "CTO": 2, + "A": [ + 4, + 8, + 11, + 13, + 3, + 7, + 10, + 12, + 2, + 6, + 9, + 0, + 1, + 5, + 0, + 0 + ], + "A_mat": [ + [ + 1, + 2, + 3, + 4 + ], + [ + 5, + 6, + 7, + 8 + ], + [ + 0, + 9, + 10, + 11 + ], + [ + 0, + 0, + 12, + 13 + ] + ], + "LDA": 4, + "strideA1": 1, + "strideA2": -4, + "offsetA": 12, + "A_out": [ + 8, + 16, + 22, + 26, + 6, + 14, + 20, + 24, + 4, + 12, + 18, + 0, + 2, + 10, + 0, + 0 + ], + "A_out_mat": [ + [ + 2, + 4, + 6, + 8 + ], + [ + 10, + 12, + 14, + 16 + ], + [ + 0, + 18, + 20, + 22 + ], + [ + 0, + 0, + 24, + 26 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_hessenberg_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_hessenberg_row_major.json new file mode 100644 index 000000000000..d54824304fbe --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_hessenberg_row_major.json @@ -0,0 +1,102 @@ +{ + "order": "row-major", + "type": "upper-hessenberg", + "M": 4, + "N": 4, + "KL": 0, + "KU": 1, + "CFROM": 1, + "CTO": 2, + "A": [ + 0, + 0, + 12, + 13, + 0, + 9, + 10, + 11, + 5, + 6, + 7, + 8, + 1, + 2, + 3, + 4 + ], + "A_mat": [ + [ + 1, + 2, + 3, + 4 + ], + [ + 5, + 6, + 7, + 8 + ], + [ + 0, + 9, + 10, + 11 + ], + [ + 0, + 0, + 12, + 13 + ] + ], + "LDA": 4, + "strideA1": -4, + "strideA2": 1, + "offsetA": 12, + "A_out": [ + 0, + 0, + 24, + 26, + 0, + 18, + 20, + 22, + 10, + 12, + 14, + 16, + 2, + 4, + 6, + 8 + ], + "A_out_mat": [ + [ + 2, + 4, + 6, + 8 + ], + [ + 10, + 12, + 14, + 16 + ], + [ + 0, + 18, + 20, + 22 + ], + [ + 0, + 0, + 24, + 26 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_row_major.json new file mode 100644 index 000000000000..79bee8af4b2c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/mixed_strides/upper_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "type": "upper", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 0, + 0, + 6, + 0, + 3, + 5, + 1, + 2, + 4 + ], + "A_mat": [ + [ + 1, + 2, + 4 + ], + [ + 0, + 3, + 5 + ], + [ + 0, + 0, + 6 + ] + ], + "LDA": 3, + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_out": [ + 0, + 0, + 12, + 0, + 6, + 10, + 2, + 4, + 8 + ], + "A_out_mat": [ + [ + 2, + 4, + 8 + ], + [ + 0, + 6, + 10 + ], + [ + 0, + 0, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/banded_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/banded_column_major.json new file mode 100644 index 000000000000..df4c0acf061b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/banded_column_major.json @@ -0,0 +1,152 @@ +{ + "order": "column-major", + "type": "banded", + "M": 5, + "N": 5, + "KL": 2, + "KU": 1, + "CFROM": 1, + "CTO": 10, + "A": [ + 0, + 0, + 5.5, + 4.5, + 0, + 0, + 0, + 5.4, + 4.4, + 3.4, + 0, + 0, + 5.3, + 4.3, + 3.3, + 2.3, + 0, + 0, + 4.2, + 3.2, + 2.2, + 1.2, + 0, + 0, + 3.1, + 2.1, + 1.1, + 0, + 0, + 0 + ], + "A_mat": [ + [ + 1.1, + 1.2, + 0, + 0, + 0 + ], + [ + 2.1, + 2.2, + 2.3, + 0, + 0 + ], + [ + 3.1, + 3.2, + 3.3, + 3.4, + 0 + ], + [ + 0, + 4.2, + 4.3, + 4.4, + 4.5 + ], + [ + 0, + 0, + 5.3, + 5.4, + 5.5 + ] + ], + "LDA": 6, + "strideA1": -1, + "strideA2": -6, + "offsetA": 29, + "A_out": [ + 0, + 0, + 55, + 45, + 0, + 0, + 0, + 54, + 44, + 34, + 0, + 0, + 53, + 43, + 33, + 23, + 0, + 0, + 42, + 32, + 22, + 12, + 0, + 0, + 31, + 21, + 11, + 0, + 0, + 0 + ], + "A_out_mat": [ + [ + 11, + 12, + 0, + 0, + 0 + ], + [ + 21, + 22, + 23, + 0, + 0 + ], + [ + 31, + 32, + 33, + 34, + 0 + ], + [ + 0, + 42, + 43, + 44, + 45 + ], + [ + 0, + 0, + 53, + 54, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/banded_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/banded_row_major.json new file mode 100644 index 000000000000..3c41d2c06f38 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/banded_row_major.json @@ -0,0 +1,152 @@ +{ + "order": "row-major", + "type": "banded", + "M": 5, + "N": 5, + "KL": 2, + "KU": 1, + "CFROM": 1, + "CTO": 10, + "A": [ + 0, + 0, + 5.3, + 4.2, + 3.1, + 0, + 5.4, + 4.3, + 3.2, + 2.1, + 5.5, + 4.4, + 3.3, + 2.2, + 1.1, + 4.5, + 3.4, + 2.3, + 1.2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "A_mat": [ + [ + 1.1, + 1.2, + 0, + 0, + 0 + ], + [ + 2.1, + 2.2, + 2.3, + 0, + 0 + ], + [ + 3.1, + 3.2, + 3.3, + 3.4, + 0 + ], + [ + 0, + 4.2, + 4.3, + 4.4, + 4.5 + ], + [ + 0, + 0, + 5.3, + 5.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": -5, + "strideA2": -1, + "offsetA": 29, + "A_out": [ + 0, + 0, + 53, + 42, + 31, + 0, + 54, + 43, + 32, + 21, + 55, + 44, + 33, + 22, + 11, + 45, + 34, + 23, + 12, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "A_out_mat": [ + [ + 11, + 12, + 0, + 0, + 0 + ], + [ + 21, + 22, + 23, + 0, + 0 + ], + [ + 31, + 32, + 33, + 34, + 0 + ], + [ + 0, + 42, + 43, + 44, + 45 + ], + [ + 0, + 0, + 53, + 54, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/general_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/general_column_major.json new file mode 100644 index 000000000000..9c31787d6c46 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/general_column_major.json @@ -0,0 +1,58 @@ +{ + "order": "column-major", + "type": "general", + "M": 3, + "N": 2, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 6, + 5, + 4, + 3, + 2, + 1 + ], + "A_mat": [ + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": -1, + "strideA2": -3, + "offsetA": 5, + "A_out": [ + 12, + 10, + 8, + 6, + 4, + 2 + ], + "A_out_mat": [ + [ + 2, + 4 + ], + [ + 6, + 8 + ], + [ + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/general_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/general_row_major.json new file mode 100644 index 000000000000..5a36f65a1251 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/general_row_major.json @@ -0,0 +1,58 @@ +{ + "order": "row-major", + "type": "general", + "M": 3, + "N": 2, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 6, + 3, + 5, + 2, + 4, + 1 + ], + "A_mat": [ + [ + 1, + 4 + ], + [ + 2, + 5 + ], + [ + 3, + 6 + ] + ], + "LDA": 2, + "strideA1": -2, + "strideA2": -1, + "offsetA": 5, + "A_out": [ + 12, + 6, + 10, + 4, + 8, + 2 + ], + "A_out_mat": [ + [ + 2, + 8 + ], + [ + 4, + 10 + ], + [ + 6, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/lower_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/lower_column_major.json new file mode 100644 index 000000000000..d533555c116e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/lower_column_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "type": "lower", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 6, + 0, + 0, + 5, + 4, + 0, + 3, + 2, + 1 + ], + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 4, + 0 + ], + [ + 3, + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_out": [ + 12, + 0, + 0, + 10, + 8, + 0, + 6, + 4, + 2 + ], + "A_out_mat": [ + [ + 2, + 0, + 0 + ], + [ + 4, + 8, + 0 + ], + [ + 6, + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/lower_row_major.json new file mode 100644 index 000000000000..061c4240175a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/lower_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "type": "lower", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 6, + 5, + 3, + 0, + 4, + 2, + 0, + 0, + 1 + ], + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 4, + 0 + ], + [ + 3, + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_out": [ + 12, + 10, + 6, + 0, + 8, + 4, + 0, + 0, + 2 + ], + "A_out_mat": [ + [ + 2, + 0, + 0 + ], + [ + 4, + 8, + 0 + ], + [ + 6, + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_lower_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_lower_column_major.json new file mode 100644 index 000000000000..6dd89bda6097 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_lower_column_major.json @@ -0,0 +1,122 @@ +{ + "order": "column-major", + "type": "symmetric-banded-lower", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 0, + 0, + 5.5, + 0, + 9.4, + 4.4, + 12.3, + 8.3, + 3.3, + 11.2, + 7.2, + 2.2, + 10.1, + 6.1, + 1.1 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 3, + "strideA1": -1, + "strideA2": -3, + "offsetA": 14, + "A_out": [ + 0, + 0, + 55, + 0, + 94, + 44, + 123, + 83, + 33, + 112, + 72, + 22, + 101, + 61, + 11 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_lower_row_major.json new file mode 100644 index 000000000000..a2aaeba20e2f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_lower_row_major.json @@ -0,0 +1,122 @@ +{ + "order": "row-major", + "type": "symmetric-banded-lower", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 0, + 0, + 12.3, + 11.2, + 10.1, + 0, + 9.4, + 8.3, + 7.2, + 6.1, + 5.5, + 4.4, + 3.3, + 2.2, + 1.1 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": -5, + "strideA2": -1, + "offsetA": 14, + "A_out": [ + 0, + 0, + 123, + 112, + 101, + 0, + 94, + 83, + 72, + 61, + 55, + 44, + 33, + 22, + 11 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_upper_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_upper_column_major.json new file mode 100644 index 000000000000..b8fd03ea0980 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_upper_column_major.json @@ -0,0 +1,122 @@ +{ + "order": "column-major", + "type": "symmetric-banded-upper", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 5.5, + 9.4, + 12.3, + 4.4, + 8.3, + 11.2, + 3.3, + 7.2, + 10.1, + 2.2, + 6.1, + 0, + 1.1, + 0, + 0 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 3, + "strideA1": -1, + "strideA2": -3, + "offsetA": 14, + "A_out": [ + 55, + 94, + 123, + 44, + 83, + 112, + 33, + 72, + 101, + 22, + 61, + 0, + 11, + 0, + 0 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_upper_row_major.json new file mode 100644 index 000000000000..01d263ebf477 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/symmetric_banded_upper_row_major.json @@ -0,0 +1,122 @@ +{ + "order": "row-major", + "type": "symmetric-banded-upper", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 5.5, + 4.4, + 3.3, + 2.2, + 1.1, + 9.4, + 8.3, + 7.2, + 6.1, + 0, + 12.3, + 11.2, + 10.1, + 0, + 0 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": -5, + "strideA2": -1, + "offsetA": 14, + "A_out": [ + 55, + 44, + 33, + 22, + 11, + 94, + 83, + 72, + 61, + 0, + 123, + 112, + 101, + 0, + 0 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_column_major.json new file mode 100644 index 000000000000..95e520911c0a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_column_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "type": "upper", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 6, + 5, + 4, + 0, + 3, + 2, + 0, + 0, + 1 + ], + "A_mat": [ + [ + 1, + 2, + 4 + ], + [ + 0, + 3, + 5 + ], + [ + 0, + 0, + 6 + ] + ], + "LDA": 3, + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_out": [ + 12, + 10, + 8, + 0, + 6, + 4, + 0, + 0, + 2 + ], + "A_out_mat": [ + [ + 2, + 4, + 8 + ], + [ + 0, + 6, + 10 + ], + [ + 0, + 0, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_hessenberg_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_hessenberg_column_major.json new file mode 100644 index 000000000000..f16ed48a089c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_hessenberg_column_major.json @@ -0,0 +1,102 @@ +{ + "order": "column-major", + "type": "upper-hessenberg", + "M": 4, + "N": 4, + "KL": 0, + "KU": 1, + "CFROM": 1, + "CTO": 2, + "A": [ + 13, + 11, + 8, + 4, + 12, + 10, + 7, + 3, + 0, + 9, + 6, + 2, + 0, + 0, + 5, + 1 + ], + "A_mat": [ + [ + 1, + 2, + 3, + 4 + ], + [ + 5, + 6, + 7, + 8 + ], + [ + 0, + 9, + 10, + 11 + ], + [ + 0, + 0, + 12, + 13 + ] + ], + "LDA": 4, + "strideA1": -1, + "strideA2": -4, + "offsetA": 15, + "A_out": [ + 26, + 22, + 16, + 8, + 24, + 20, + 14, + 6, + 0, + 18, + 12, + 4, + 0, + 0, + 10, + 2 + ], + "A_out_mat": [ + [ + 2, + 4, + 6, + 8 + ], + [ + 10, + 12, + 14, + 16 + ], + [ + 0, + 18, + 20, + 22 + ], + [ + 0, + 0, + 24, + 26 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_hessenberg_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_hessenberg_row_major.json new file mode 100644 index 000000000000..0af33f7362e3 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_hessenberg_row_major.json @@ -0,0 +1,102 @@ +{ + "order": "row-major", + "type": "upper-hessenberg", + "M": 4, + "N": 4, + "KL": 0, + "KU": 1, + "CFROM": 1, + "CTO": 2, + "A": [ + 13, + 12, + 0, + 0, + 11, + 10, + 9, + 0, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ], + "A_mat": [ + [ + 1, + 2, + 3, + 4 + ], + [ + 5, + 6, + 7, + 8 + ], + [ + 0, + 9, + 10, + 11 + ], + [ + 0, + 0, + 12, + 13 + ] + ], + "LDA": 4, + "strideA1": -4, + "strideA2": -1, + "offsetA": 15, + "A_out": [ + 26, + 24, + 0, + 0, + 22, + 20, + 18, + 0, + 16, + 14, + 12, + 10, + 8, + 6, + 4, + 2 + ], + "A_out_mat": [ + [ + 2, + 4, + 6, + 8 + ], + [ + 10, + 12, + 14, + 16 + ], + [ + 0, + 18, + 20, + 22 + ], + [ + 0, + 0, + 24, + 26 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_row_major.json new file mode 100644 index 000000000000..987d9ec1d7a7 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/negative_strides/upper_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "type": "upper", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 6, + 0, + 0, + 5, + 3, + 0, + 4, + 2, + 1 + ], + "A_mat": [ + [ + 1, + 2, + 4 + ], + [ + 0, + 3, + 5 + ], + [ + 0, + 0, + 6 + ] + ], + "LDA": 3, + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_out": [ + 12, + 0, + 0, + 10, + 6, + 0, + 8, + 4, + 2 + ], + "A_out_mat": [ + [ + 2, + 4, + 8 + ], + [ + 0, + 6, + 10 + ], + [ + 0, + 0, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/banded_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/banded_column_major.json new file mode 100644 index 000000000000..58d18444dd96 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/banded_column_major.json @@ -0,0 +1,154 @@ +{ + "order": "column-major", + "type": "banded", + "M": 5, + "N": 5, + "KL": 2, + "KU": 1, + "CFROM": 1, + "CTO": 10, + "A": [ + 9999, + 0, + 0, + 0, + 1.1, + 2.1, + 3.1, + 0, + 0, + 1.2, + 2.2, + 3.2, + 4.2, + 0, + 0, + 2.3, + 3.3, + 4.3, + 5.3, + 0, + 0, + 3.4, + 4.4, + 5.4, + 0, + 0, + 0, + 4.5, + 5.5, + 0, + 0 + ], + "A_mat": [ + [ + 1.1, + 1.2, + 0, + 0, + 0 + ], + [ + 2.1, + 2.2, + 2.3, + 0, + 0 + ], + [ + 3.1, + 3.2, + 3.3, + 3.4, + 0 + ], + [ + 0, + 4.2, + 4.3, + 4.4, + 4.5 + ], + [ + 0, + 0, + 5.3, + 5.4, + 5.5 + ] + ], + "LDA": 6, + "strideA1": 1, + "strideA2": 6, + "offsetA": 1, + "A_out": [ + 9999, + 0, + 0, + 0, + 11, + 21, + 31, + 0, + 0, + 12, + 22, + 32, + 42, + 0, + 0, + 23, + 33, + 43, + 53, + 0, + 0, + 34, + 44, + 54, + 0, + 0, + 0, + 45, + 55, + 0, + 0 + ], + "A_out_mat": [ + [ + 11, + 12, + 0, + 0, + 0 + ], + [ + 21, + 22, + 23, + 0, + 0 + ], + [ + 31, + 32, + 33, + 34, + 0 + ], + [ + 0, + 42, + 43, + 44, + 45 + ], + [ + 0, + 0, + 53, + 54, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/banded_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/banded_row_major.json new file mode 100644 index 000000000000..a3743c22d559 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/banded_row_major.json @@ -0,0 +1,154 @@ +{ + "order": "row-major", + "type": "banded", + "M": 5, + "N": 5, + "KL": 2, + "KU": 1, + "CFROM": 1, + "CTO": 10, + "A": [ + 9999, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1.2, + 2.3, + 3.4, + 4.5, + 1.1, + 2.2, + 3.3, + 4.4, + 5.5, + 2.1, + 3.2, + 4.3, + 5.4, + 0, + 3.1, + 4.2, + 5.3, + 0, + 0 + ], + "A_mat": [ + [ + 1.1, + 1.2, + 0, + 0, + 0 + ], + [ + 2.1, + 2.2, + 2.3, + 0, + 0 + ], + [ + 3.1, + 3.2, + 3.3, + 3.4, + 0 + ], + [ + 0, + 4.2, + 4.3, + 4.4, + 4.5 + ], + [ + 0, + 0, + 5.3, + 5.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": 5, + "strideA2": 1, + "offsetA": 1, + "A_out": [ + 9999, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 12, + 23, + 34, + 45, + 11, + 22, + 33, + 44, + 55, + 21, + 32, + 43, + 54, + 0, + 31, + 42, + 53, + 0, + 0 + ], + "A_out_mat": [ + [ + 11, + 12, + 0, + 0, + 0 + ], + [ + 21, + 22, + 23, + 0, + 0 + ], + [ + 31, + 32, + 33, + 34, + 0 + ], + [ + 0, + 42, + 43, + 44, + 45 + ], + [ + 0, + 0, + 53, + 54, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/general_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/general_column_major.json new file mode 100644 index 000000000000..ca641533f574 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/general_column_major.json @@ -0,0 +1,60 @@ +{ + "order": "column-major", + "type": "general", + "M": 3, + "N": 2, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 9999, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "A_mat": [ + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_out": [ + 9999, + 2, + 4, + 6, + 8, + 10, + 12 + ], + "A_out_mat": [ + [ + 2, + 4 + ], + [ + 6, + 8 + ], + [ + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/general_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/general_row_major.json new file mode 100644 index 000000000000..ccab03e26cdb --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/general_row_major.json @@ -0,0 +1,60 @@ +{ + "order": "row-major", + "type": "general", + "M": 3, + "N": 2, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 9999, + 1, + 4, + 2, + 5, + 3, + 6 + ], + "A_mat": [ + [ + 1, + 4 + ], + [ + 2, + 5 + ], + [ + 3, + 6 + ] + ], + "LDA": 2, + "strideA1": 2, + "strideA2": 1, + "offsetA": 1, + "A_out": [ + 9999, + 2, + 8, + 4, + 10, + 6, + 12 + ], + "A_out_mat": [ + [ + 2, + 8 + ], + [ + 4, + 10 + ], + [ + 6, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/lower_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/lower_column_major.json new file mode 100644 index 000000000000..98812fcfe64b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/lower_column_major.json @@ -0,0 +1,72 @@ +{ + "order": "column-major", + "type": "lower", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 9999, + 1, + 2, + 3, + 0, + 4, + 5, + 0, + 0, + 6 + ], + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 4, + 0 + ], + [ + 3, + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_out": [ + 9999, + 2, + 4, + 6, + 0, + 8, + 10, + 0, + 0, + 12 + ], + "A_out_mat": [ + [ + 2, + 0, + 0 + ], + [ + 4, + 8, + 0 + ], + [ + 6, + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/lower_row_major.json new file mode 100644 index 000000000000..ec581ac0fc50 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/lower_row_major.json @@ -0,0 +1,72 @@ +{ + "order": "row-major", + "type": "lower", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 9999, + 1, + 0, + 0, + 2, + 4, + 0, + 3, + 5, + 6 + ], + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 4, + 0 + ], + [ + 3, + 5, + 6 + ] + ], + "LDA": 3, + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_out": [ + 9999, + 2, + 0, + 0, + 4, + 8, + 0, + 6, + 10, + 12 + ], + "A_out_mat": [ + [ + 2, + 0, + 0 + ], + [ + 4, + 8, + 0 + ], + [ + 6, + 10, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_lower_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_lower_column_major.json new file mode 100644 index 000000000000..4ec3566946bf --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_lower_column_major.json @@ -0,0 +1,124 @@ +{ + "order": "column-major", + "type": "symmetric-banded-lower", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 9999, + 1.1, + 6.1, + 10.1, + 2.2, + 7.2, + 11.2, + 3.3, + 8.3, + 12.3, + 4.4, + 9.4, + 0, + 5.5, + 0, + 0 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_out": [ + 9999, + 11, + 61, + 101, + 22, + 72, + 112, + 33, + 83, + 123, + 44, + 94, + 0, + 55, + 0, + 0 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_lower_row_major.json new file mode 100644 index 000000000000..f8a586ed4cfc --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_lower_row_major.json @@ -0,0 +1,124 @@ +{ + "order": "row-major", + "type": "symmetric-banded-lower", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 9999, + 1.1, + 2.2, + 3.3, + 4.4, + 5.5, + 6.1, + 7.2, + 8.3, + 9.4, + 0, + 10.1, + 11.2, + 12.3, + 0, + 0 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": 5, + "strideA2": 1, + "offsetA": 1, + "A_out": [ + 9999, + 11, + 22, + 33, + 44, + 55, + 61, + 72, + 83, + 94, + 0, + 101, + 112, + 123, + 0, + 0 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_upper_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_upper_column_major.json new file mode 100644 index 000000000000..c2d6762274d2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_upper_column_major.json @@ -0,0 +1,124 @@ +{ + "order": "column-major", + "type": "symmetric-banded-upper", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 9999, + 0, + 0, + 1.1, + 0, + 6.1, + 2.2, + 10.1, + 7.2, + 3.3, + 11.2, + 8.3, + 4.4, + 12.3, + 9.4, + 5.5 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_out": [ + 9999, + 0, + 0, + 11, + 0, + 61, + 22, + 101, + 72, + 33, + 112, + 83, + 44, + 123, + 94, + 55 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_upper_row_major.json new file mode 100644 index 000000000000..5879f29411aa --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/symmetric_banded_upper_row_major.json @@ -0,0 +1,124 @@ +{ + "order": "row-major", + "type": "symmetric-banded-upper", + "M": 5, + "N": 5, + "KL": 2, + "KU": 2, + "CFROM": 1, + "CTO": 10, + "A": [ + 9999, + 0, + 0, + 10.1, + 11.2, + 12.3, + 0, + 6.1, + 7.2, + 8.3, + 9.4, + 1.1, + 2.2, + 3.3, + 4.4, + 5.5 + ], + "A_mat": [ + [ + 1.1, + 6.1, + 10.1, + 0, + 0 + ], + [ + 6.1, + 2.2, + 7.2, + 11.2, + 0 + ], + [ + 10.1, + 7.2, + 3.3, + 8.3, + 12.3 + ], + [ + 0, + 11.2, + 8.3, + 4.4, + 9.4 + ], + [ + 0, + 0, + 12.3, + 9.4, + 5.5 + ] + ], + "LDA": 5, + "strideA1": 5, + "strideA2": 1, + "offsetA": 1, + "A_out": [ + 9999, + 0, + 0, + 101, + 112, + 123, + 0, + 61, + 72, + 83, + 94, + 11, + 22, + 33, + 44, + 55 + ], + "A_out_mat": [ + [ + 11, + 61, + 101, + 0, + 0 + ], + [ + 61, + 22, + 72, + 112, + 0 + ], + [ + 101, + 72, + 33, + 83, + 123 + ], + [ + 0, + 112, + 83, + 44, + 94 + ], + [ + 0, + 0, + 123, + 94, + 55 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_column_major.json new file mode 100644 index 000000000000..8897125c1768 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_column_major.json @@ -0,0 +1,72 @@ +{ + "order": "column-major", + "type": "upper", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 9999, + 1, + 0, + 0, + 2, + 3, + 0, + 4, + 5, + 6 + ], + "A_mat": [ + [ + 1, + 2, + 4 + ], + [ + 0, + 3, + 5 + ], + [ + 0, + 0, + 6 + ] + ], + "LDA": 3, + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_out": [ + 9999, + 2, + 0, + 0, + 4, + 6, + 0, + 8, + 10, + 12 + ], + "A_out_mat": [ + [ + 2, + 4, + 8 + ], + [ + 0, + 6, + 10 + ], + [ + 0, + 0, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_hessenberg_column_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_hessenberg_column_major.json new file mode 100644 index 000000000000..cb98f4becb66 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_hessenberg_column_major.json @@ -0,0 +1,104 @@ +{ + "order": "column-major", + "type": "upper-hessenberg", + "M": 4, + "N": 4, + "KL": 0, + "KU": 1, + "CFROM": 1, + "CTO": 2, + "A": [ + 9999, + 1, + 5, + 0, + 0, + 2, + 6, + 9, + 0, + 3, + 7, + 10, + 12, + 4, + 8, + 11, + 13 + ], + "A_mat": [ + [ + 1, + 2, + 3, + 4 + ], + [ + 5, + 6, + 7, + 8 + ], + [ + 0, + 9, + 10, + 11 + ], + [ + 0, + 0, + 12, + 13 + ] + ], + "LDA": 4, + "strideA1": 1, + "strideA2": 4, + "offsetA": 1, + "A_out": [ + 9999, + 2, + 10, + 0, + 0, + 4, + 12, + 18, + 0, + 6, + 14, + 20, + 24, + 8, + 16, + 22, + 26 + ], + "A_out_mat": [ + [ + 2, + 4, + 6, + 8 + ], + [ + 10, + 12, + 14, + 16 + ], + [ + 0, + 18, + 20, + 22 + ], + [ + 0, + 0, + 24, + 26 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_hessenberg_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_hessenberg_row_major.json new file mode 100644 index 000000000000..2f0ce932300e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_hessenberg_row_major.json @@ -0,0 +1,104 @@ +{ + "order": "row-major", + "type": "upper-hessenberg", + "M": 4, + "N": 4, + "KL": 0, + "KU": 1, + "CFROM": 1, + "CTO": 2, + "A": [ + 9999, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 0, + 9, + 10, + 11, + 0, + 0, + 12, + 13 + ], + "A_mat": [ + [ + 1, + 2, + 3, + 4 + ], + [ + 5, + 6, + 7, + 8 + ], + [ + 0, + 9, + 10, + 11 + ], + [ + 0, + 0, + 12, + 13 + ] + ], + "LDA": 4, + "strideA1": 4, + "strideA2": 1, + "offsetA": 1, + "A_out": [ + 9999, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 0, + 18, + 20, + 22, + 0, + 0, + 24, + 26 + ], + "A_out_mat": [ + [ + 2, + 4, + 6, + 8 + ], + [ + 10, + 12, + 14, + 16 + ], + [ + 0, + 18, + 20, + 22 + ], + [ + 0, + 0, + 24, + 26 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_row_major.json new file mode 100644 index 000000000000..3ee8d1feb8e9 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/fixtures/offsets/upper_row_major.json @@ -0,0 +1,72 @@ +{ + "order": "row-major", + "type": "upper", + "M": 3, + "N": 3, + "KL": 0, + "KU": 0, + "CFROM": 1, + "CTO": 2, + "A": [ + 9999, + 1, + 2, + 4, + 0, + 3, + 5, + 0, + 0, + 6 + ], + "A_mat": [ + [ + 1, + 2, + 4 + ], + [ + 0, + 3, + 5 + ], + [ + 0, + 0, + 6 + ] + ], + "LDA": 3, + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_out": [ + 9999, + 2, + 4, + 8, + 0, + 6, + 10, + 0, + 0, + 12 + ], + "A_out_mat": [ + [ + 2, + 4, + 8 + ], + [ + 0, + 6, + 10 + ], + [ + 0, + 0, + 12 + ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js index 631d90008013..7e4c49388146 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js @@ -16,7 +16,7 @@ * limitations under the License. */ -/* eslint-disable max-len */ +/* eslint-disable max-len, id-length */ 'use strict'; @@ -35,6 +35,75 @@ var UPPER_COL_MAJOR = require( './fixtures/upper_column_major.json' ); var UPPER_ROW_MAJOR = require( './fixtures/upper_row_major.json' ); var LOWER_COL_MAJOR = require( './fixtures/lower_row_major.json' ); var LOWER_ROW_MAJOR = require( './fixtures/lower_row_major.json' ); +var BANDED_COL_MAJOR = require( './fixtures/banded_column_major.json' ); +var BANDED_ROW_MAJOR = require( './fixtures/banded_row_major.json' ); +var SYMMETRIC_BANDED_LOWER_COL_MAJOR = require( './fixtures/symmetric_banded_lower_column_major.json' ); +var SYMMETRIC_BANDED_LOWER_ROW_MAJOR = require( './fixtures/symmetric_banded_lower_row_major.json' ); +var SYMMETRIC_BANDED_UPPER_COL_MAJOR = require( './fixtures/symmetric_banded_upper_column_major.json' ); +var SYMMETRIC_BANDED_UPPER_ROW_MAJOR = require( './fixtures/symmetric_banded_upper_row_major.json' ); +var UPPER_HEISSENBERG_COL_MAJOR = require( './fixtures/upper_hessenberg_column_major.json' ); +var UPPER_HEISSENBERG_ROW_MAJOR = require( './fixtures/upper_hessenberg_row_major.json' ); + +var GENERAL_COL_MAJOR_OFFSET = require( './fixtures/offsets/general_column_major.json' ); +var GENERAL_ROW_MAJOR_OFFSET = require( './fixtures/offsets/general_row_major.json' ); +var UPPER_COL_MAJOR_OFFSET = require( './fixtures/offsets/upper_column_major.json' ); +var UPPER_ROW_MAJOR_OFFSET = require( './fixtures/offsets/upper_row_major.json' ); +var LOWER_COL_MAJOR_OFFSET = require( './fixtures/offsets/lower_column_major.json' ); +var LOWER_ROW_MAJOR_OFFSET = require( './fixtures/offsets/lower_row_major.json' ); +var BANDED_COL_MAJOR_OFFSET = require( './fixtures/offsets/banded_column_major.json' ); +var BANDED_ROW_MAJOR_OFFSET = require( './fixtures/offsets/banded_row_major.json' ); +var SYMMETRIC_BANDED_LOWER_COL_MAJOR_OFFSET = require( './fixtures/offsets/symmetric_banded_lower_column_major.json' ); +var SYMMETRIC_BANDED_LOWER_ROW_MAJOR_OFFSET = require( './fixtures/offsets/symmetric_banded_lower_row_major.json' ); +var SYMMETRIC_BANDED_UPPER_COL_MAJOR_OFFSET = require( './fixtures/offsets/symmetric_banded_upper_column_major.json' ); +var SYMMETRIC_BANDED_UPPER_ROW_MAJOR_OFFSET = require( './fixtures/offsets/symmetric_banded_upper_row_major.json' ); +var UPPER_HEISSENBERG_COL_MAJOR_OFFSET = require( './fixtures/offsets/upper_hessenberg_column_major.json' ); +var UPPER_HEISSENBERG_ROW_MAJOR_OFFSET = require( './fixtures/offsets/upper_hessenberg_row_major.json' ); + +var GENERAL_COL_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/general_column_major.json' ); +var GENERAL_ROW_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/general_row_major.json' ); +var UPPER_COL_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/upper_column_major.json' ); +var UPPER_ROW_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/upper_row_major.json' ); +var LOWER_COL_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/lower_column_major.json' ); +var LOWER_ROW_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/lower_row_major.json' ); +var BANDED_COL_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/banded_column_major.json' ); +var BANDED_ROW_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/banded_row_major.json' ); +var SYMMETRIC_BANDED_LOWER_COL_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/symmetric_banded_lower_column_major.json' ); +var SYMMETRIC_BANDED_LOWER_ROW_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/symmetric_banded_lower_row_major.json' ); +var SYMMETRIC_BANDED_UPPER_COL_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/symmetric_banded_upper_column_major.json' ); +var SYMMETRIC_BANDED_UPPER_ROW_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/symmetric_banded_upper_row_major.json' ); +var UPPER_HEISSENBERG_COL_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/upper_hessenberg_column_major.json' ); +var UPPER_HEISSENBERG_ROW_MAJOR_LARGE_STRIDES = require( './fixtures/large_strides/upper_hessenberg_row_major.json' ); + +var GENERAL_COL_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/general_column_major.json' ); +var GENERAL_ROW_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/general_row_major.json' ); +var UPPER_COL_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/upper_column_major.json' ); +var UPPER_ROW_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/upper_row_major.json' ); +var LOWER_COL_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/lower_column_major.json' ); +var LOWER_ROW_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/lower_row_major.json' ); +var BANDED_COL_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/banded_column_major.json' ); +var BANDED_ROW_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/banded_row_major.json' ); +var SYMMETRIC_BANDED_LOWER_COL_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/symmetric_banded_lower_column_major.json' ); +var SYMMETRIC_BANDED_LOWER_ROW_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/symmetric_banded_lower_row_major.json' ); +var SYMMETRIC_BANDED_UPPER_COL_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/symmetric_banded_upper_column_major.json' ); +var SYMMETRIC_BANDED_UPPER_ROW_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/symmetric_banded_upper_row_major.json' ); +var UPPER_HEISSENBERG_COL_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/upper_hessenberg_column_major.json' ); +var UPPER_HEISSENBERG_ROW_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/upper_hessenberg_row_major.json' ); + +// Negative Strides: +var GENERAL_COL_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/general_column_major.json' ); +var GENERAL_ROW_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/general_row_major.json' ); +var UPPER_COL_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/upper_column_major.json' ); +var UPPER_ROW_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/upper_row_major.json' ); +var LOWER_COL_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/lower_column_major.json' ); +var LOWER_ROW_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/lower_row_major.json' ); +var BANDED_COL_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/banded_column_major.json' ); +var BANDED_ROW_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/banded_row_major.json' ); +var SYMMETRIC_BANDED_LOWER_COL_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/symmetric_banded_lower_column_major.json' ); +var SYMMETRIC_BANDED_LOWER_ROW_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/symmetric_banded_lower_row_major.json' ); +var SYMMETRIC_BANDED_UPPER_COL_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/symmetric_banded_upper_column_major.json' ); +var SYMMETRIC_BANDED_UPPER_ROW_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/symmetric_banded_upper_row_major.json' ); +var UPPER_HEISSENBERG_COL_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/upper_hessenberg_column_major.json' ); +var UPPER_HEISSENBERG_ROW_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/upper_hessenberg_row_major.json' ); // TESTS // @@ -195,3 +264,155 @@ tape( 'the function scales a lower triangular matrix (row-major)', function test t.end(); }); + +tape( 'the function scales a banded matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_ROW_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_COL_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded lower matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded lower matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded upper matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded upper matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HEISSENBERG_COL_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HEISSENBERG_ROW_MAJOR; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); From 1940240f9cbeb1efefd1751a9e48824587a0d732 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 20:32:31 +0000 Subject: [PATCH 17/20] test: add ndarray tests --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - 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: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../lapack/base/dlascl/test/test.ndarray.js | 1065 ++++++++++++++++- 1 file changed, 1064 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js index 7e4c49388146..eae2ad8e7229 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js @@ -89,7 +89,6 @@ var SYMMETRIC_BANDED_UPPER_ROW_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_ var UPPER_HEISSENBERG_COL_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/upper_hessenberg_column_major.json' ); var UPPER_HEISSENBERG_ROW_MAJOR_MIXED_STRIDES = require( './fixtures/mixed_strides/upper_hessenberg_row_major.json' ); -// Negative Strides: var GENERAL_COL_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/general_column_major.json' ); var GENERAL_ROW_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/general_row_major.json' ); var UPPER_COL_MAJOR_NEGATIVE_STRIDES = require( './fixtures/negative_strides/upper_column_major.json' ); @@ -416,3 +415,1067 @@ tape( 'the function scales an upper hessenberg matrix (row-major)', function tes t.end(); }); + +tape( 'the function scales a general matrix with an offset (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = GENERAL_COL_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a general matrix with an offset (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = GENERAL_ROW_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix with an offset (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_COL_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix with an offset (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_ROW_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix with an offset (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = LOWER_COL_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix with an offset (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = LOWER_ROW_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix with an offset (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_COL_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix with an offset (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_ROW_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded lower matrix with an offset (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_COL_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded lower matrix with an offset (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_ROW_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded upper matrix with an offset (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_COL_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded upper matrix with an offset (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_ROW_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix with an offset (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HEISSENBERG_COL_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix with an offset (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HEISSENBERG_ROW_MAJOR_OFFSET; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a general matrix with large strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = GENERAL_COL_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a general matrix with large strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = GENERAL_ROW_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix with large strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_COL_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix with large strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_ROW_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix with large strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = LOWER_COL_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix with large strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = LOWER_ROW_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix with large strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_COL_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix with large strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_ROW_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded lower matrix with large strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_COL_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded lower matrix with large strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_ROW_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded upper matrix with large strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_COL_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded upper matrix with large strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_ROW_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix with large strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HEISSENBERG_COL_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix with large strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HEISSENBERG_ROW_MAJOR_LARGE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a general matrix with mixed strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = GENERAL_COL_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a general matrix with mixed strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = GENERAL_ROW_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix with mixed strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_COL_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix with mixed strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_ROW_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix with mixed strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = LOWER_COL_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix with mixed strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = LOWER_ROW_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix with mixed strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_COL_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix with mixed strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_ROW_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded lower matrix with mixed strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_COL_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded lower matrix with mixed strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_ROW_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded upper matrix with mixed strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_COL_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded upper matrix with mixed strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_ROW_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix with mixed strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HEISSENBERG_COL_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix with mixed strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HEISSENBERG_ROW_MAJOR_MIXED_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a general matrix with negative strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = GENERAL_COL_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a general matrix with negative strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = GENERAL_ROW_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix with negative strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_COL_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper triangular matrix with negative strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_ROW_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix with negative strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = LOWER_COL_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a lower triangular matrix with negative strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = LOWER_ROW_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix with negative strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_COL_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a banded matrix with negative strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = BANDED_ROW_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded lower matrix with negative strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_COL_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded lower matrix with negative strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_LOWER_ROW_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded upper matrix with negative strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_COL_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales a symmetric banded upper matrix with negative strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = SYMMETRIC_BANDED_UPPER_ROW_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix with negative strides (column-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HEISSENBERG_COL_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function scales an upper hessenberg matrix with negative strides (row-major)', function test( t ) { + var expected; + var data; + var out; + var A; + + data = UPPER_HEISSENBERG_ROW_MAJOR_NEGATIVE_STRIDES; + + A = new Float64Array( data.A ); + + expected = new Float64Array( data.A_out ); + + out = dlascl( data.type, data.KL, data.KU, data.CFROM, data.CTO, data.M, data.N, A, data.strideA1, data.strideA2, data.offsetA ); + t.strictEqual( out, A, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); From f60ca9662a314b3ce665d13d9e814b6a215a496b Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 20:33:05 +0000 Subject: [PATCH 18/20] chore: cleanup --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - 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: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../@stdlib/lapack/base/dlascl/test/test.ndarray.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js index eae2ad8e7229..59ba565d251a 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/test/test.ndarray.js @@ -16,7 +16,7 @@ * limitations under the License. */ -/* eslint-disable max-len, id-length */ +/* eslint-disable max-len, id-length, max-lines */ 'use strict'; From 2f26be3e17d7f42e779961f07d0902b3505e841c Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 20:53:52 +0000 Subject: [PATCH 19/20] refactor: split base into functions --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- .../@stdlib/lapack/base/dlascl/lib/base.js | 535 +++++++++++++----- 1 file changed, 390 insertions(+), 145 deletions(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js index 9c72354c5503..b536d1c1da3a 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js @@ -16,7 +16,7 @@ * limitations under the License. */ -/* eslint-disable max-statements, max-len */ +/* eslint-disable max-len */ 'use strict'; @@ -36,12 +36,393 @@ var smlnum = dlamch( 'safe minimum' ); var bignum = 1.0 / smlnum; +// FUNCTIONS // + +/** +* Multiplies a real M by N general matrix `A` by a real scalar `mul`. +* +* @private +* @param {NonNegativeInteger} M - number of rows in matrix `A` +* @param {NonNegativeInteger} N - number of columns in matrix `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @param {number} mul - scalar multiplier +* @returns {void} +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ] ); +* +* scaleGeneral( 3, 2, A, 2, 1, 0, 2.0 ); +* // A => [ 2.0, 8.0, 4.0, 10.0, 6.0, 12.0 ] +*/ +function scaleGeneral( M, N, A, strideA1, strideA2, offsetA, mul ) { + var da1; + var da0; + var S1; + var S0; + var ia; + var i0; + var i1; + var o; + + // Resolve the loop interchange order: + o = loopOrder( [ M, N ], [ strideA1, strideA2 ] ); + S0 = o.sh[ 0 ]; + S1 = o.sh[ 1 ]; + da0 = o.sx[ 0 ]; + da1 = o.sx[ 1 ] - ( S0 * o.sx[ 0 ] ); + + // Set the pointers to the first indexed elements in the respective matrices... + ia = offsetA; + + // Iterate over the matrix dimensions... + for ( i1 = 0; i1 < S1; i1++ ) { + for ( i0 = 0; i0 < S0; i0++ ) { + A[ ia ] *= mul; + ia += da0; + } + ia += da1; + } +} + +/** +* Multiplies a real M by N upper triangular matrix `A` by a real scalar `mul`. +* +* @private +* @param {NonNegativeInteger} M - number of rows in matrix `A` +* @param {NonNegativeInteger} N - number of columns in matrix `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @param {boolean} isrm - boolean indicating if the matrix is row-major +* @param {number} mul - scalar multiplier +* @returns {void} +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 2.0, 4.0, 0.0, 3.0, 5.0, 0.0, 0.0, 6.0 ] ); +* +* scaleUpper( 3, 3, A, 3, 1, 0, true, 2.0 ); +* // A => [ 2.0, 4.0, 8.0, 0.0, 6.0, 10.0, 0.0, 0.0, 12.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 0.0, 0.0, 2.0, 3.0, 0.0, 4.0, 5.0, 6.0 ] ); +* +* scaleUpper( 3, 3, A, 1, 3, 0, false, 2.0 ); +* // A => [ 2.0, 0.0, 0.0, 4.0, 6.0, 0.0, 8.0, 10.0, 12.0 ] +*/ +function scaleUpper( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) { + var ia; + var i0; + var i1; + + ia = offsetA; + if ( isrm ) { + for ( i1 = 0; i1 < M; i1++ ) { + for ( i0 = i1; i0 < N; i0++ ) { + A[ ia + ( i0 * strideA2 ) ] *= mul; + } + ia += strideA1; + } + } else { + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = 0; i0 <= min( i1, M - 1 ); i0++ ) { + A[ ia + ( i0 * strideA1 ) ] *= mul; + } + ia += strideA2; + } + } +} + +/** +* Multiplies a real M by N lower triangular matrix `A` by a real scalar `mul`. +* +* @private +* @param {NonNegativeInteger} M - number of rows in matrix `A` +* @param {NonNegativeInteger} N - number of columns in matrix `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @param {boolean} isrm - boolean indicating if the matrix is row-major +* @param {number} mul - scalar multiplier +* @returns {void} +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 0.0, 0.0, 2.0, 4.0, 0.0, 3.0, 5.0, 6.0 ] ); +* +* scaleLower( 3, 3, A, 3, 1, 0, true, 2.0 ); +* // A => [ 2.0, 0.0, 0.0, 4.0, 8.0, 0.0, 6.0, 10.0, 12.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 2.0, 3.0, 0.0, 4.0, 5.0, 0.0, 0.0, 6.0 ] ); +* +* scaleLower( 3, 3, A, 1, 3, 0, false, 2.0 ); +* // A => [ 2.0, 4.0, 6.0, 0.0, 8.0, 10.0, 0.0, 0.0, 12.0 ] +*/ +function scaleLower( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) { + var ia; + var i0; + var i1; + + ia = offsetA; + if ( isrm ) { + for ( i1 = 0; i1 < M; i1++ ) { + for ( i0 = 0; i0 <= min( i1, N - 1 ); i0++ ) { + A[ ia + ( i0 * strideA2 ) ] *= mul; + } + ia += strideA1; + } + } else { + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = i1; i0 < M; i0++ ) { + A[ ia + ( i0 * strideA1 ) ] *= mul; + } + ia += strideA2; + } + } +} + +/** +* Multiplies a real M by N upper Hessenberg matrix `A` by a real scalar `mul`. +* +* @private +* @param {NonNegativeInteger} M - number of rows in matrix `A` +* @param {NonNegativeInteger} N - number of columns in matrix `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @param {boolean} isrm - boolean indicating if the matrix is row-major +* @param {number} mul - scalar multiplier +* @returns {void} +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 0.0, 9.0, 10.0, 11.0, 0.0, 0.0, 12.0, 13.0 ] ); +* +* scaleUpperHHessenberg( 4, 4, A, 4, 1, 0, true, 2.0 ); +* // A => [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 0.0, 18.0, 20.0, 22.0, 0.0, 0.0, 24.0, 26.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 5.0, 0.0, 0.0, 2.0, 6.0, 9.0, 0.0, 3.0, 7.0, 10.0, 12.0, 4.0, 8.0, 11.0, 13.0 ] ); +* +* scaleUpperHHessenberg( 4, 4, A, 1, 4, 0, false, 2.0 ); +* // A => [ 2.0, 10.0, 0.0, 0.0, 4.0, 12.0, 18.0, 0.0, 6.0, 14.0, 20.0, 24.0, 8.0, 16.0, 22.0, 26.0 ] +*/ +function scaleUpperHHessenberg( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) { + var ia; + var i0; + var i1; + + if ( isrm ) { + ia = offsetA; + for ( i1 = 0; i1 < M; i1++ ) { + for ( i0 = max( i1 - 1, 0 ); i0 < N; i0++ ) { + A[ ia + ( i0 * strideA2 ) ] *= mul; + } + ia += strideA1; + } + } else { + ia = offsetA; + for ( i0 = 0; i0 < N; i0++ ) { + for ( i1 = 0; i1 <= min( i0 + 1, M - 1 ); i1++ ) { + A[ ia + ( i1 * strideA1 ) ] *= mul; + } + ia += strideA2; + } + } +} + +/** +* Multiplies a real M by N symmetric banded lower matrix `A` by a real scalar `mul`. +* +* @private +* @param {NonNegativeInteger} KL - lower band width of `A` +* @param {NonNegativeInteger} M - number of rows in matrix `A` +* @param {NonNegativeInteger} N - number of columns in matrix `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @param {boolean} isrm - boolean indicating if the matrix is row-major +* @param {number} mul - scalar multiplier +* @returns {void} +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.1, 2.2, 3.3, 4.4, 5.5, 6.1, 7.2, 8.3, 9.4, 0.0, 10.1, 11.2, 12.3, 0.0, 0.0 ] ); +* +* scaleSymmetricBandedLower( 2, 5, 5, A, 5, 1, 0, true, 10.0 ); +* // A => [ 11.0, 22.0, 33.0, 44.0, 55.0, 61.0, 72.0, 83.0, 94.0, 0.0, 101.0, 112.0, 123.0, 0.0, 0.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.1, 6.1, 10.1, 2.2, 7.2, 11.2, 3.3, 8.3, 12.3, 4.4, 9.4, 0.0, 5.5, 0.0, 0.0 ] ); +* +* scaleSymmetricBandedLower( 2, 5, 5, A, 1, 3, 0, false, 10.0 ); +* // A => [ 11.0, 61.0, 101.0, 22.0, 72.0, 112.0, 33.0, 83.0, 123.0, 44.0, 94.0, 0.0, 55.0, 0.0, 0.0 ] +*/ +function scaleSymmetricBandedLower( KL, M, N, A, strideA1, strideA2, offsetA, isrm, mul ) { + var ia; + var i0; + var i1; + var k3; + var k4; + + ia = offsetA; + k3 = KL + 1; + k4 = N; + + if ( isrm ) { + for ( i1 = 0; i1 < M; i1++ ) { + for ( i0 = 0; i0 < ( N - i1 ); i0++ ) { + A[ ia + ( i0 * strideA2 ) ] *= mul; + } + ia += strideA1; + } + } else { + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = 0; i0 < min( k3, k4 - i1 ); i0++ ) { + A[ ia + ( i0 * strideA1 ) ] *= mul; + } + ia += strideA2; + } + } +} + +/** +* Multiplies a real M by N symmetric banded upper matrix `A` by a real scalar `mul`. +* +* @private +* @param {NonNegativeInteger} KU - upper band width of `A` +* @param {NonNegativeInteger} M - number of rows in matrix `A` +* @param {NonNegativeInteger} N - number of columns in matrix `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @param {boolean} isrm - boolean indicating if the matrix is row-major +* @param {number} mul - scalar multiplier +* @returns {void} +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 0.0, 0.0, 10.1, 11.2, 12.3, 0.0, 6.1, 7.2, 8.3, 9.4, 1.1, 2.2, 3.3, 4.4, 5.5 ] ); +* +* scaleSymmetricBandedUpper( 2, 5, 5, A, 5, 1, 0, true, 10.0 ); +* // A => [ 0.0, 0.0, 101.0, 112.0, 123.0, 0.0, 61.0, 72.0, 83.0, 94.0, 11.0, 22.0, 33.0, 44.0, 55.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 0.0, 0.0, 1.1, 0.0, 6.1, 2.2, 10.1, 7.2, 3.3, 11.2, 8.3, 4.4, 12.3, 9.4, 5.5 ] ); +* +* scaleSymmetricBandedUpper( 2, 5, 5, A, 1, 3, 0, false, 10.0 ); +* // A => [ 0.0, 0.0, 11.0, 0.0, 61.0, 22.0, 101.0, 72.0, 33.0, 112.0, 83.0, 44.0, 123.0, 94.0, 55.0 ] +*/ +function scaleSymmetricBandedUpper( KU, M, N, A, strideA1, strideA2, offsetA, isrm, mul ) { + var ia; + var i0; + var i1; + + ia = offsetA; + + if ( isrm ) { + for ( i1 = 0; i1 <= KU; i1++ ) { + for ( i0 = max( KU - i1, 0 ); i0 < N; i0++ ) { + A[ ia + ( i0 * strideA2 ) ] *= mul; + } + ia += strideA1; + } + } else { + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = max( KU - i1, 0 ); i0 <= KU; i0++ ) { + A[ ia + ( i0 * strideA1 ) ] *= mul; + } + ia += strideA2; + } + } +} + +/** +* Multiplies a real M by N banded matrix `A` by a real scalar `mul`. +* +* @private +* @param {NonNegativeInteger} KL - lower band width of `A` +* @param {NonNegativeInteger} KU - upper band width of `A` +* @param {NonNegativeInteger} M - number of rows in matrix `A` +* @param {NonNegativeInteger} N - number of columns in matrix `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @param {number} mul - scalar multiplier +* @returns {void} +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.2, 2.3, 3.4, 4.5, 1.1, 2.2, 3.3, 4.4, 5.5, 2.1, 3.2, 4.3, 5.4, 0.0, 3.1, 4.2, 5.3, 0.0, 0.0 ] ); +* +* scaleBanded( 2, 1, 5, 5, A, 5, 1, 0, 10.0 ); +* // A => [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0, 23.0, 34.0, 45.0, 11.0, 22.0, 33.0, 44.0, 55.0, 21.0, 32.0, 43.0, 54.0, 0.0, 31.0, 42.0, 53.0, 0.0, 0.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 0.0, 0.0, 0.0, 1.1, 2.1, 3.1, 0.0, 0.0, 1.2, 2.2, 3.2, 4.2, 0.0, 0.0, 2.3, 3.3, 4.3, 5.3, 0.0, 0.0, 3.4, 4.4, 5.4, 0.0, 0.0, 0.0, 4.5, 5.5, 0.0, 0.0 ] ); +* +* scaleBanded( 2, 1, 5, 5, A, 1, 6, 0, 10.0 ); +* // A => [ 0.0, 0.0, 0.0, 11.0, 21.0, 31.0, 0.0, 0.0, 12.0, 22.0, 32.0, 42.0, 0.0, 0.0, 23.0, 33.0, 43.0, 53.0, 0.0, 0.0, 34.0, 44.0, 54.0, 0.0, 0.0, 0.0, 45.0, 55.0, 0.0, 0.0 ] +*/ +function scaleBanded( KL, KU, M, N, A, strideA1, strideA2, offsetA, mul ) { + var ia; + var i0; + var i1; + var k1; + var k2; + var k3; + var k4; + + k1 = KL + KU; + k2 = KL; + k3 = ( 2 * KL ) + KU; + k4 = KL + KU + M - 1; + ia = offsetA; + + for ( i1 = 0; i1 < N; i1++ ) { + for ( i0 = max( k1 - i1, k2 ); i0 <= min( k3, k4 - i1 ); i0++ ) { + A[ ia + ( i0 * strideA1 ) ] *= mul; + } + ia += strideA2; + } +} + + // MAIN // /** * Multiplies a real M by N matrix `A` by a real scalar `CTO/CFROM`. * -* @private * @param {string} type - specifies the type of matrix `A` * @param {NonNegativeInteger} KL - lower band width of `A`. Referenced only if type is `symmetric-banded-lower` or `banded`. * @param {NonNegativeInteger} KU - upper band width of `A`. Referenced only if type is `symmetric-banded-upper` or `banded`. @@ -71,20 +452,6 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA var cto1; var done; var mul; - var da1; - var da0; - var S1; - var S0; - var ia; - var i0; - var i1; - var k3; - var k4; - var k1; - var k2; - var sh; - var sa; - var o; if ( N === 0 || M === 0 ) { return A; @@ -125,147 +492,25 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA } if ( type === 'general' ) { - // Full matrix - - // Resolve the loop interchange order: - o = loopOrder( [ M, N ], [ strideA1, strideA2 ] ); - sh = o.sh; - sa = o.sx; - - // Extract loop variables for purposes of loop interchange: dimensions and loop offset (pointer) increments... - S0 = sh[ 0 ]; - S1 = sh[ 1 ]; - da0 = sa[ 0 ]; - da1 = sa[ 1 ] - ( S0*sa[0] ); - - // Set the pointers to the first indexed elements in the respective matrices... - ia = offsetA; - - // Iterate over the matrix dimensions... - for ( i1 = 0; i1 < S1; i1++ ) { - for ( i0 = 0; i0 < S0; i0++ ) { - A[ ia ] *= mul; - ia += da0; - } - ia += da1; - } + scaleGeneral( M, N, A, strideA1, strideA2, offsetA, mul ); } - if ( type === 'upper' ) { - // Upper triangular matrix - ia = offsetA; - if ( isrm ) { - for ( i1 = 0; i1 < M; i1++ ) { - for ( i0 = i1; i0 < N; i0++ ) { - A[ ia+(i0*strideA2) ] *= mul; - } - ia += strideA1; - } - } else { - for ( i1 = 0; i1 < N; i1++ ) { - for ( i0 = 0; i0 <= min( i1, M-1 ); i0++ ) { - A[ ia+(i0*strideA1) ] *= mul; - } - ia += strideA2; - } - } + scaleUpper( M, N, A, strideA1, strideA2, offsetA, isrm, mul ); } - if ( type === 'lower' ) { - // Lower triangular matrix - ia = offsetA; - if ( isrm ) { - for ( i1 = 0; i1 < M; i1++ ) { - for ( i0 = 0; i0 <= min( i1, N-1 ); i0++ ) { - A[ ia+(i0*strideA2) ] *= mul; - } - ia += strideA1; - } - } else { - for ( i1 = 0; i1 < N; i1++ ) { - for ( i0 = i1; i0 < M; i0++ ) { - A[ ia+(i0*strideA1) ] *= mul; - } - ia += strideA2; - } - } + scaleLower( M, N, A, strideA1, strideA2, offsetA, isrm, mul ); } - if ( type === 'upper-hessenberg' ) { - if ( isrm ) { - ia = offsetA; - for ( i1 = 0; i1 < M; i1++ ) { - for ( i0 = max( i1-1, 0 ); i0 < N; i0++ ) { - A[ ia+(i0*strideA2) ] *= mul; - } - ia += strideA1; - } - } else { - ia = offsetA; - for ( i0 = 0; i0 < N; i0++ ) { - for ( i1 = 0; i1 <= min( i0+1, M-1 ); i1++ ) { - A[ ia+(i1*strideA1) ] *= mul; - } - ia += strideA2; - } - } + scaleUpperHHessenberg( M, N, A, strideA1, strideA2, offsetA, isrm, mul ); } - if ( type === 'symmetric-banded-lower' ) { - ia = offsetA; - k3 = KL + 1; - k4 = N; - - if ( isrm ) { - for ( i1 = 0; i1 < M; i1++ ) { - for ( i0 = 0; i0 < ( N - i1 ); i0++ ) { - A[ ia + ( i0 * strideA2 ) ] *= mul; - } - ia += strideA1; - } - } else { - for ( i1 = 0; i1 < N; i1++ ) { - for ( i0 = 0; i0 < min( k3, k4 - i1 ); i0++ ) { - A[ ia+(i0*strideA1) ] *= mul; - } - ia += strideA2; - } - } + scaleSymmetricBandedLower( KL, M, N, A, strideA1, strideA2, offsetA, isrm, mul ); } - if ( type === 'symmetric-banded-upper' ) { - ia = offsetA; - - if ( isrm ) { - for ( i1 = 0; i1 <= KU; i1++ ) { - for ( i0 = max( KU-i1, 0 ); i0 < N; i0++ ) { - A[ ia + ( i0 * strideA2) ] *= mul; - } - ia += strideA1; - } - } else { - for ( i1 = 0; i1 < N; i1++ ) { - for ( i0 = max( KU - i1, 0 ); i0 <= KU; i0++ ) { - A[ ia+(i0*strideA1) ] *= mul; - } - ia += strideA2; - } - } + scaleSymmetricBandedUpper( KU, M, N, A, strideA1, strideA2, offsetA, isrm, mul ); } - if ( type === 'banded' ) { - k1 = KL + KU; - k2 = KL; - k3 = ( 2 * KL ) + KU; - k4 = KL + KU + M - 1; - ia = offsetA; - - for ( i1 = 0; i1 < N; i1++ ) { - for ( i0 = max( k1 - i1, k2 ); i0 <= min( k3, k4-i1 ); i0++ ) { - A[ ia+(i0*strideA1) ] *= mul; - } - ia += strideA2; - } + scaleBanded( KL, KU, M, N, A, strideA1, strideA2, offsetA, mul ); } } From b30f33fc4adfd57a6d5438b3fade2529a996e8c6 Mon Sep 17 00:00:00 2001 From: Aayush Khanna Date: Sun, 6 Jul 2025 20:56:07 +0000 Subject: [PATCH 20/20] refactor: add cont statements --- 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: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - 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 --- --- lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js index b536d1c1da3a..810f2da4773b 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js +++ b/lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js @@ -493,24 +493,31 @@ function dlascl( type, KL, KU, CFROM, CTO, M, N, A, strideA1, strideA2, offsetA if ( type === 'general' ) { scaleGeneral( M, N, A, strideA1, strideA2, offsetA, mul ); + continue; } if ( type === 'upper' ) { scaleUpper( M, N, A, strideA1, strideA2, offsetA, isrm, mul ); + continue; } if ( type === 'lower' ) { scaleLower( M, N, A, strideA1, strideA2, offsetA, isrm, mul ); + continue; } if ( type === 'upper-hessenberg' ) { scaleUpperHHessenberg( M, N, A, strideA1, strideA2, offsetA, isrm, mul ); + continue; } if ( type === 'symmetric-banded-lower' ) { scaleSymmetricBandedLower( KL, M, N, A, strideA1, strideA2, offsetA, isrm, mul ); + continue; } if ( type === 'symmetric-banded-upper' ) { scaleSymmetricBandedUpper( KU, M, N, A, strideA1, strideA2, offsetA, isrm, mul ); + continue; } if ( type === 'banded' ) { scaleBanded( KL, KU, M, N, A, strideA1, strideA2, offsetA, mul ); + continue; } }