diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/README.md b/lib/node_modules/@stdlib/lapack/base/dgtts2/README.md new file mode 100644 index 000000000000..3d51fe8de2de --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/README.md @@ -0,0 +1,302 @@ + + + + +# dgtts2 + +> Solve a system of linear equations with a tridiagonal matrix using the LU factorization computed by [dgttrf][lapack-dgttrf]. + +
+ +## Usage + +```javascript +var dgtts2 = require( '@stdlib/lapack/base/dgtts2' ); +``` + +#### dgtts2( order, itrans, N, nrhs, DL, D, DU, DU2, IPIV, B, LDB ) + +Solves a system of linear equations with a tri diagonal matrix using the LU factorization computed by [dgttrf][lapack-dgttrf]. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); +var Int32Array = require( '@stdlib/array/int32' ); + +var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +var DU2 = new Float64Array( [ 0.0 ] ); +var IPIV = new Int32Array( [ 0, 1, 2 ] ); +var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); + +var out = dgtts2( 'column-major', 1, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); +// out => [ ~1.44, ~1.25, ~1.55 ] +``` + +The function has the following parameters: + +- **order**: storage layout. +- **itrans**: specifies the form of the system of equations. +- **N**: order of the matrix `A`. +- **nrhs**: number of right-hand sides, i.e., the number of columns of the matrix `B`. +- **DL**: multipliers that define the matrix `L` as a [`Float64Array`][mdn-float64array]. +- **D**: diagonal elements of the upper triangular matrix `U` as a [`Float64Array`][mdn-float64array]. +- **DU**: elements of the first super-diagonal of `U` as a [`Float64Array`][mdn-float64array]. +- **DU2**: elements of the second super-diagonal of `U` as a [`Float64Array`][mdn-float64array]. +- **IPIV**: vector of pivot indices as an [`Int32Array`][mdn-int32array]. +- **B**: right-hand side matrix B, overwritten by the solution matrix `X` as a [`Float64Array`][mdn-float64array]. +- **LDB**: stride of the first dimension of `B` (a.k.a., leading dimension of the matrix `B`). + +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' ); +var Int32Array = require( '@stdlib/array/int32' ); + +// Initial arrays... +var DL0 = new Float64Array( [ 0.0, 0.25, 0.26666667 ] ); +var D0 = new Float64Array( [ 0.0, 4.0, 3.75, 3.73333333 ] ); +var DU0 = new Float64Array( [ 0.0, 1.0, 0.73333333 ] ); +var DU20 = new Float64Array( [ 0.0, 0.0 ] ); +var IPIV0 = new Int32Array( [ 0, 0, 1, 2 ] ); +var B0 = new Float64Array( [ 0.0, 7.0, 8.0, 7.0 ] ); + +// Create offset views... +var DL = new Float64Array( DL0.buffer, DL0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var D = new Float64Array( D0.buffer, D0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var DU = new Float64Array( DU0.buffer, DU0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var DU2 = new Float64Array( DU20.buffer, DU20.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var IPIV = new Int32Array( IPIV0.buffer, IPIV0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var B = new Float64Array( B0.buffer, B0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +dgtts2( 'column-major', 1, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); +// B0 => [ 0.0, ~1.44, ~1.25, ~1.55 ] +``` + +#### dgtts2.ndarray( itrans, N, nrhs, DL, sdl, odl, D, sd, od, DU, sdu, odu, DU2, sdu2, odu2, IPIV, si, oi, B, sb1, sb2, ob ) + +Solves a system of linear equations with a tri diagonal matrix using the LU factorization computed by [dgttrf][lapack-dgttrf] and alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); +var Int32Array = require( '@stdlib/array/int32' ); + +var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +var DU2 = new Float64Array( [ 0.0 ] ); +var IPIV = new Int32Array( [ 0, 1, 2 ] ); +var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); + +var out = dgtts2.ndarray( 1, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); +// out => [ ~1.44, ~1.25, ~1.55 ] +``` + +The function has the following parameters: + +- **itrans**: specifies the form of the system of equations. +- **N**: order of the matrix `A`. +- **nrhs**: number of right-hand sides, i.e., the number of columns of the matrix `B`. +- **DL**: multipliers that define the matrix `L` as a [`Float64Array`][mdn-float64array]. +- **sdl**: stride length for `DL`. +- **odl**: starting index for `DL`. +- **D**: diagonal elements of the upper triangular matrix `U` as a [`Float64Array`][mdn-float64array]. +- **sd**: stride length for `D`. +- **od**: starting index for `D`. +- **DU**: elements of the first super-diagonal of `U` as a [`Float64Array`][mdn-float64array]. +- **sdu**: stride length for `DU`. +- **odu**: starting index for `DU`. +- **DU2**: elements of the second super-diagonal of `U` as a [`Float64Array`][mdn-float64array]. +- **sdu2**: stride length for `DU2`. +- **odu2**: starting index for `DU2`. +- **IPIV**: vector of pivot indices as an [`Int32Array`][mdn-int32array]. +- **si**: stride length for `IPIV`. +- **oi**: starting index for `IPIV`. +- **B**: right-hand side matrix B, overwritten by the solution matrix `X` as a [`Float64Array`][mdn-float64array]. +- **sb1**: stride length for first dimension of `B`. +- **sb2**: stride length for second dimension of `B`. +- **ob**: starting index for `B`. + +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 Int32Array = require( '@stdlib/array/int32' ); + +var DL = new Float64Array( [ 0.0, 0.25, 0.26666667 ] ); +var D = new Float64Array( [ 0.0, 4.0, 3.75, 3.73333333 ] ); +var DU = new Float64Array( [ 0.0, 1.0, 0.73333333 ] ); +var DU2 = new Float64Array( [ 0.0, 0.0 ] ); +var IPIV = new Int32Array( [ 0, 0, 1, 2 ] ); +var B = new Float64Array( [ 0.0, 7.0, 8.0, 7.0 ] ); + +var out = dgtts2.ndarray( 1, 3, 1, DL, 1, 1, D, 1, 1, DU, 1, 1, DU2, 1, 1, IPIV, 1, 1, B, 1, 1, 1 ); +// out => [ 0.0, ~1.44, ~1.25, ~1.55 ] +``` + +
+ + + +
+ +## Notes + +- `dgtts2()` corresponds to the [LAPACK][lapack] routine [`dgtts2`][lapack-dgtts2]. + +
+ + + +
+ +## Examples + + + +```javascript +var ndarray2array = require( '@stdlib/ndarray/base/to-array' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var Float64Array = require( '@stdlib/array/float64' ); +var Int32Array = require( '@stdlib/array/int32' ); +var dgtts2 = require( '@stdlib/lapack/base/dgtts2' ); + +var shape = [ 3, 3 ]; +var order = 'row-major'; +var strides = shape2strides( shape, order ); + +var B = new Float64Array( [ 7.0, 8.0, 7.0, 2.0, 3.0, 4.0, 1.0, 1.5, 2.0 ] ); +console.log( ndarray2array( B, shape, strides, 0, order ) ); + +var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +var DU2 = new Float64Array( [ 0.0 ] ); +var IPIV = new Int32Array( [ 0, 1, 2 ] ); + +var X = dgtts2( 'row-major', 1, 3, 3, DL, D, DU, DU2, IPIV, B, 3 ); +console.log( ndarray2array( X, shape, strides, 0, order ) ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +TODO +``` + +#### TODO + +TODO. + +```c +TODO +``` + +TODO + +```c +TODO +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +TODO +``` + +
+ + + +
+ + + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/benchmark/benchmark.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/benchmark/benchmark.js new file mode 100644 index 000000000000..759d3b40d601 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/benchmark/benchmark.js @@ -0,0 +1,127 @@ +/** +* @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 Int32Array = require( '@stdlib/array/int32' ); +var dgttrf = require( '@stdlib/lapack/base/dgttrf' ); +var Float64Array = require( '@stdlib/array/float64' ); +var pkg = require( './../package.json' ).name; +var dgtts2 = require( './../lib/dgtts2.js' ); + + +// VARIABLES // + +var LAYOUTS = [ + 'row-major', + 'column-major' +]; +var opts = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {string} order - storage layout +* @param {PositiveInteger} itrans - specifies the form of the system of equations +* @param {PositiveInteger} N - number of elements along each dimension +* @returns {Function} benchmark function +*/ +function createBenchmark( order, itrans, N ) { + var IPIV = new Int32Array( N ); + var DU2 = new Float64Array( N-2 ); + var DL = uniform( N-1, 100.0, 10000.0, opts ); + var DU = uniform( N-1, 100.0, 10000.0, opts ); + var D = uniform( N, 100.0, 1000000.0, opts ); + var B = uniform( N*N, 0, 10000, opts ); + + dgttrf( N, DL, D, DU, DU2, IPIV ); + + 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 = dgtts2( order, itrans, N, N, DL, D, DU, DU2, IPIV, B, N ); + 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 itrans; + var min; + var max; + var ord; + var N; + var f; + var i; + var k; + + min = 1; // 10^min + max = 3; // 10^max + + for ( k = 0; k < LAYOUTS.length; k++ ) { + ord = LAYOUTS[ k ]; + for ( itrans = 0; itrans < 3; itrans++ ) { + for ( i = min; i <= max; i++ ) { + N = pow( 10, i ); + f = createBenchmark( ord, itrans, N ); + bench( pkg+'::square_matrix:order='+ord+',itrans='+itrans+',size='+(N*N), f ); + } + } + } +} + +main(); diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..09db22b42610 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/benchmark/benchmark.ndarray.js @@ -0,0 +1,145 @@ +/** +* @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 isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); +var Int32Array = require( '@stdlib/array/int32' ); +var dgttrf = require( '@stdlib/lapack/base/dgttrf' ); +var Float64Array = require( '@stdlib/array/float64' ); +var pkg = require( './../package.json' ).name; +var dgtts2 = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var LAYOUTS = [ + 'row-major', + 'column-major' +]; +var opts = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {string} order - storage layout +* @param {PositiveInteger} itrans - specifies the form of the system of equations +* @param {PositiveInteger} N - number of elements along each dimension +* @returns {Function} benchmark function +*/ +function createBenchmark( order, itrans, N ) { + var IPIV; + var DU2; + var sb1; + var sb2; + var DU; + var DL; + var B; + var D; + + IPIV = new Int32Array( N ); + DU2 = new Float64Array( N-2 ); + DL = uniform( N-1, 100.0, 10000.0, opts ); + DU = uniform( N-1, 100.0, 10000.0, opts ); + D = uniform( N, 100.0, 1000000.0, opts ); + B = uniform( N*N, 0, 10000, opts ); + + if ( isColumnMajor( order ) ) { + sb1 = 1; + sb2 = N; + } else { + sb1 = N; + sb2 = 1; + } + + dgttrf( N, DL, D, DU, DU2, IPIV ); + + 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 = dgtts2( itrans, N, N, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, sb1, sb2, 0 ); // eslint-disable-line max-len + 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 itrans; + var min; + var max; + var ord; + var N; + var f; + var i; + var k; + + min = 1; // 10^min + max = 3; // 10^max + + for ( k = 0; k < LAYOUTS.length; k++ ) { + ord = LAYOUTS[ k ]; + for ( itrans = 0; itrans < 3; itrans++ ) { + for ( i = min; i <= max; i++ ) { + N = pow( 10, i ); + f = createBenchmark( ord, itrans, N ); + bench( pkg+'::square_matrix:order='+ord+',itrans='+itrans+',size='+(N*N), f ); + } + } + } +} + +main(); diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/docs/repl.txt b/lib/node_modules/@stdlib/lapack/base/dgtts2/docs/repl.txt new file mode 100644 index 000000000000..d148fc4f58b0 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/docs/repl.txt @@ -0,0 +1,184 @@ + +{{alias}}( order, itrans, N, nrhs, DL, D, DU, DU2, IPIV, B, LDB ) + Solves a system of linear equations with a tri diagonal matrix using + the LU factorization computed by `dgttrf`. + + Indexing is relative to the first index. To introduce an offset, use + typed array views. + + If `N` is equal to `0`, the function returns `B` unchanged. + + Parameters + ---------- + order: string + Row-major (C-style) or column-major (Fortran-style) order. Must be + either 'row-major' or 'column-major'. + + itrans: integer + Specifies the form of the system of equations. To solve A * X = B + (no transpose) use itrans = 0, to solve A**T * X = B (transpose) + use itrans = 1, to solve A**T * X = B (conjugate transpose = transpose) + use itrans = 2. + + N: integer + Order of the matrix `A`. + + nrhs: integer + Number of right-hand sides, i.e., the number of columns of the + matrix `B`. + + DL: Float64Array + Multipliers that define the matrix `L`. + + D: Float64Array + Diagonal elements of the upper triangular matrix `U`. + + DU: Float64Array + Elements of the first super-diagonal of `U`. + + DU2: Float64Array + Elements of the second super-diagonal of `U`. + + IPIV: Int32Array + Array of pivot indices. + + B: Float64Array + Right-hand side matrix `B`, overwritten by the solution + matrix `X`. + + LDB: integer + Leading dimension of array `B`. + + Returns + ------- + B: Float64Array + Mutated input matrix. + + Examples + -------- + > var DL = new {{alias:@stdlib/array/float64}}( [ 0.25, 0.26666667 ] ); + > var D = new {{alias:@stdlib/array/float64}}( [ 4.0, 3.75, 3.73333333 ] ); + > var DU = new {{alias:@stdlib/array/float64}}( [ 1.0, 0.73333333 ] ); + > var DU2 = new {{alias:@stdlib/array/float64}}( [ 0.0 ] ); + > var B = new {{alias:@stdlib/array/float64}}( [ 7.0, 8.0, 7.0 ] ); + > var IPIV = new {{alias:@stdlib/array/int32}}( [ 0, 1, 2 ] ); + > var ord = 'column-major'; + > {{alias}}( ord, 1, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ) + [ ~1.44, ~1.25, ~1.55 ] + + // Using typed array views: + > var DL0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.25, 0.26666667 ] ); + > var D0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 4.0, 3.75, 3.73333333 ] ); + > var DU0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 1.0, 0.73333333 ] ); + > var DU20 = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0 ] ); + > var IPIV0 = new {{alias:@stdlib/array/int32}}( [ 0, 0, 1, 2 ] ); + > var B0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 7.0, 8.0, 7.0 ] ); + > DL = new Float64Array( DL0.buffer, DL0.BYTES_PER_ELEMENT*1 ); + > D = new Float64Array( D0.buffer, D0.BYTES_PER_ELEMENT*1 ); + > DU = new Float64Array( DU0.buffer, DU0.BYTES_PER_ELEMENT*1 ); + > DU2 = new Float64Array( DU20.buffer, DU20.BYTES_PER_ELEMENT*1 ); + > IPIV = new Int32Array( IPIV0.buffer, IPIV0.BYTES_PER_ELEMENT*1 ); + > B = new Float64Array( B0.buffer, B0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( ord, 1, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); + > B0 + [ 0.0, ~1.44, ~1.25, ~1.55 ] + + +{{alias}}.ndarray(tr,N,r,L,sl,ol,D,sd,od,U,su,ou,U2,su2,ou2,I,si,oi,B,s1,s2,ob) + Solves a system of linear equations with a tri diagonal matrix using the + LU factorization computed by `dgttrf` and 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 + ---------- + tr: integer + Specifies the form of the system of equations. To solve A * X = B + (no transpose) use itrans = 0, to solve A**T * X = B (transpose) + use itrans = 1, to solve A**T * X = B (conjugate transpose = transpose) + use itrans = 2. + + N: integer + Order of the matrix `A`. + + r: integer + Number of right-hand sides, i.e., the number of columns of the + matrix `B`. + + L: Float64Array + Multipliers that define the matrix `L`. + + sl: integer + Stride length for `L`. + + ol: integer + Starting index for `L`. + + D: Float64Array + Diagonal elements of the upper triangular matrix `U`. + + sd: integer + Stride length for `D`. + + od: integer + Starting index for `D`. + + U: Float64Array + Elements of the first super-diagonal of `U`. + + su: integer + Stride length for `U`. + + ou: integer + Starting index for `U`. + + U2: Float64Array + Elements of the second super-diagonal of `U`. + + su2: integer + Stride length for `U2`. + + ou2: integer + Starting index for `U2`. + + I: Int32Array + Array of pivot indices. + + si: integer + Stride length for `I`. + + oi: integer + Starting index for `I`. + + B: Float64Array + Right-hand side matrix `B`, overwritten by the solution matrix `X`. + + s1: integer + Stride length for the first dimension of `B`. + + s2: integer + Stride length for the second dimension of `B`. + + ob: integer + Starting index for `B`. + + Returns + ------- + B: Float64Array + Mutated input matrix. + + Examples + -------- + > var DL = new {{alias:@stdlib/array/float64}}( [ 0.25, 0.26666667 ] ); + > var D = new {{alias:@stdlib/array/float64}}([ 4.0, 3.75, 3.73333333 ]); + > var DU = new {{alias:@stdlib/array/float64}}( [ 1.0, 0.73333333 ] ); + > var DU2 = new {{alias:@stdlib/array/float64}}( [ 0.0 ] ); + > var B = new {{alias:@stdlib/array/float64}}( [ 7.0, 8.0, 7.0 ] ); + > var I = new {{alias:@stdlib/array/int32}}( [ 0, 1, 2 ] ); + > {{alias}}.ndarray( 1,3,1, DL,1,0, D,1,0, DU,1,0, DU2,1,0, I,1,0, B,1,1,0 ) + [ ~1.44, ~1.25, ~1.55 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/docs/types/index.d.ts b/lib/node_modules/@stdlib/lapack/base/dgtts2/docs/types/index.d.ts new file mode 100644 index 000000000000..68807fee536b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/docs/types/index.d.ts @@ -0,0 +1,171 @@ +/* +* @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 `dgtts2`. +*/ +interface Routine { + /** + * Solves a system of linear equations with a tri diagonal matrix using the LU factorization computed by `dgttrf`. + * + * ## Notes + * + * - To solve A * X = B (no transpose), use itrans = 0. + * - To solve AT * X = B (transpose), use itrans = 1. + * - To solve AT * X = B (conjugate transpose = transpose), use itrans = 2. + * + * @param order - storage layout of B + * @param itrans - specifies the form of the system of equations (0: no transpose, 1: transpose, 2: conjugate transpose) + * @param N - order of the matrix A + * @param nrhs - number of right-hand sides + * @param DL - multipliers defining matrix L (length N-1) + * @param D - diagonal elements of upper triangular matrix U (length N) + * @param DU - first super-diagonal elements of U (length N-1) + * @param DU2 - second super-diagonal elements of U (length N-2) + * @param IPIV - pivot indices from factorization (length N) + * @param B - right-hand side matrix (overwritten with solution) + * @param LDB - leading dimension of B + * @returns the solution matrix X + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * var Int32Array = require( '@stdlib/array/int32' ); + * + * var DL = new Float64Array( [ 0.25, 0.26666667 ] ); + * var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); + * var DU = new Float64Array( [ 1.0, 0.73333333 ] ); + * var DU2 = new Float64Array( [ 0.0 ] ); + * var IPIV = new Int32Array( [ 0, 1, 2 ] ); + * var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); + * + * dgtts2( 'column-major', 1, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); + * // B => [ ~1.44, ~1.25, ~1.55 ] + */ + ( order: Layout, itrans: number, N: number, nrhs: number, DL: Float64Array, D: Float64Array, DU: Float64Array, DU2: Float64Array, IPIV: Int32Array, B: Float64Array, LDB: number ): Float64Array; + + /** + * Solves a system of linear equations with a tri diagonal matrix using the LU factorization computed by `dgttrf` and alternative indexing semantics. + * + * ## Notes + * + * - To solve A * X = B (no transpose), use itrans = 0. + * - To solve AT * X = B (transpose), use itrans = 1. + * - To solve AT * X = B (conjugate transpose = transpose), use itrans = 2. + * + * @param itrans - specifies the form of the system of equations + * @param N - order of the matrix A + * @param nrhs - number of right-hand sides + * @param DL - multipliers defining matrix L + * @param sdl - DL stride length + * @param odl - DL starting index + * @param D - diagonal elements of U + * @param sd - D stride length + * @param od - D starting index + * @param DU - first super-diagonal elements + * @param sdu - DU stride length + * @param odu - DU starting index + * @param DU2 - second super-diagonal elements + * @param sdu2 - DU2 stride length + * @param odu2 - DU2 starting index + * @param IPIV - pivot indices + * @param si - IPIV stride length + * @param oi - IPIV starting index + * @param B - right-hand side matrix + * @param sb1 - B first dimension stride + * @param sb2 - B second dimension stride + * @param ob - B starting index + * @returns the solution matrix X + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * var Int32Array = require( '@stdlib/array/int32' ); + * + * var DL = new Float64Array( [ 0.25, 0.26666667 ] ); + * var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); + * var DU = new Float64Array( [ 1.0, 0.73333333 ] ); + * var DU2 = new Float64Array( [ 0.0 ] ); + * var IPIV = new Int32Array( [ 0, 1, 2 ] ); + * var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); + * + * dgtts2.ndarray( 1, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); + * // B => [ ~1.44, ~1.25, ~1.55 ] + */ + ndarray( itrans: number, N: number, nrhs: number, DL: Float64Array, sdl: number, odl: number, D: Float64Array, sd: number, od: number, DU: Float64Array, sdu: number, odu: number, DU2: Float64Array, sdu2: number, odu2: number, IPIV: Int32Array, si: number, oi: number, B: Float64Array, sb1: number, sb2: number, ob: number ): Float64Array; +} + +/** +* Solves a system of linear equations with a tri diagonal matrix using the LU factorization computed by `dgttrf`. +* +* ## Notes +* +* - To solve A * X = B (no transpose), use itrans = 0. +* - To solve AT * X = B (transpose), use itrans = 1. +* - To solve AT * X = B (conjugate transpose = transpose), use itrans = 2. +* +* @param order - storage layout of B +* @param itrans - system equation form specification +* @param N - matrix order +* @param nrhs - number of right-hand sides +* @param DL - L matrix multipliers +* @param D - U matrix diagonal +* @param DU - U first super-diagonal +* @param DU2 - U second super-diagonal +* @param IPIV - pivot indices +* @param B - right-hand side matrix +* @param LDB - B leading dimension +* @returns the solution matrix X +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var Int32Array = require( '@stdlib/array/int32' ); +* +* var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +* var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +* var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +* var DU2 = new Float64Array( [ 0.0 ] ); +* var IPIV = new Int32Array( [ 0, 1, 2 ] ); +* var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); +* +* dgtts2( 'row-major', 1, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); +* // B => [ ~1.44, ~1.25, ~1.55 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var Int32Array = require( '@stdlib/array/int32' ); +* +* var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +* var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +* var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +* var DU2 = new Float64Array( [ 0.0 ] ); +* var IPIV = new Int32Array( [ 0, 1, 2 ] ); +* var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); +* +* dgtts2.ndarray( 1, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); +* // B => [ ~1.44, ~1.25, ~1.55 ] +*/ +declare var dgtts2: Routine; + +// EXPORTS // + +export = dgtts2; diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/docs/types/test.ts b/lib/node_modules/@stdlib/lapack/base/dgtts2/docs/types/test.ts new file mode 100644 index 000000000000..76314099a9bb --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/docs/types/test.ts @@ -0,0 +1,718 @@ +/* +* @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 dgtts2 = require( './index' ); + + +// TESTS // + +// The function returns a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a string... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2( 5, 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( true, 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( false, 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( null, 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( void 0, 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( [], 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( {}, 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( ( x: number ): number => x, 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2( 'column-major', '5', 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', true, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', false, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', null, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', void 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', [], 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', {}, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', ( x: number ): number => x, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2( 'column-major', 0, '3', 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, true, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, false, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, null, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, void 0, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, [], 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, {}, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, ( x: number ): number => x, 1, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2( 'column-major', 0, 3, '1', DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, true, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, false, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, null, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, void 0, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, [], DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, {}, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, ( x: number ): number => x, DL, D, DU, DU2, IPIV, B, 3 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2( 'column-major', 0, 3, 1, 'DL', D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, true, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, false, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, null, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, void 0, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, [], D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, {}, D, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, ( x: number ): number => x, D, DU, DU2, IPIV, B, 3 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2( 'column-major', 0, 3, 1, DL, 'D', DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, true, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, false, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, null, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, void 0, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, [], DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, {}, DU, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, ( x: number ): number => x, DU, DU2, IPIV, B, 3 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a seventh argument which is not a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2( 'column-major', 0, 3, 1, DL, D, 'DU', DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, true, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, false, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, null, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, void 0, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, [], DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, {}, DU2, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, ( x: number ): number => x, DU2, IPIV, B, 3 ); // $ExpectError +} + +// The compiler throws an error if the function is provided an eighth argument which is not a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const B = new Float64Array( 6 ); + + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, 'DU2', IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, true, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, false, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, null, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, void 0, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, [], IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, {}, IPIV, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, ( x: number ): number => x, IPIV, B, 3 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a ninth argument which is not an Int32Array... +{ + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, 'IPIV', B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, true, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, false, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, null, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, void 0, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, [], B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, {}, B, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, ( x: number ): number => x, B, 3 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a tenth argument which is not a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, 'B', 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, true, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, false, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, null, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, void 0, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, [], 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, {}, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, ( x: number ): number => x, 3 ); // $ExpectError +} + +// The compiler throws an error if the function is provided an eleventh argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B, '3' ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B, true ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B, false ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B, null ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B, void 0 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B, [] ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B, {} ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an invalid number of arguments... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2(); // $ExpectError + dgtts2( 'column-major' ); // $ExpectError + dgtts2( 'column-major', 0 ); // $ExpectError + dgtts2( 'column-major', 0, 3 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2 ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B ); // $ExpectError + dgtts2( 'column-major', 0, 3, 1, DL, D, DU, DU2, IPIV, B, 3, 10 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a status code... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( '0', 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( true, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( false, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( null, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( void 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( [], 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( {}, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( ( x: number ): number => x, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, '3', 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, true, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, false, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, null, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, void 0, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, [], 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, {}, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, ( x: number ): number => x, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, '1', DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, true, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, false, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, null, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, void 0, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, [], DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, {}, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, ( x: number ): number => x, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, 'DL', 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, true, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, false, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, null, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, void 0, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, [], 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, {}, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, ( x: number ): number => x, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, '1', 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, true, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, false, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, null, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, void 0, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, [], 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, {}, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, ( x: number ): number => x, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, '0', D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, true, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, false, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, null, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, void 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, [], D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, {}, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, ( x: number ): number => x, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, 'D', 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, true, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, false, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, null, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, void 0, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, [], 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, {}, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, ( x: number ): number => x, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, '1', 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, true, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, false, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, null, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, void 0, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, [], 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, {}, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, ( x: number ): number => x, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a ninth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, '0', DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, true, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, false, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, null, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, void 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, [], DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, {}, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, ( x: number ): number => x, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a tenth argument which is not a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, 'DU', 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, true, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, false, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, null, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, void 0, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, [], 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, {}, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, ( x: number ): number => x, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eleventh argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, '1', 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, true, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, false, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, null, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, void 0, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, [], 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, {}, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, ( x: number ): number => x, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a twelfth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, '0', DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, true, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, false, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, null, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, void 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, [], DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, {}, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, ( x: number ): number => x, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a thirteenth argument which is not a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, 'DU2', 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, true, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, false, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, null, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, void 0, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, [], 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, {}, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, ( x: number ): number => x, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourteenth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, '1', 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, true, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, false, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, null, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, void 0, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, [], 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, {}, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, ( x: number ): number => x, 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifteenth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, '0', IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, true, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, false, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, null, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, void 0, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, [], IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, {}, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, ( x: number ): number => x, IPIV, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixteenth argument which is not an Int32Array... +{ + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, 'IPIV', 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, true, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, false, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, null, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, void 0, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, [], 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, {}, 1, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, ( x: number ): number => x, 1, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventeenth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, '1', 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, true, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, false, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, null, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, void 0, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, [], 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, {}, 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, ( x: number ): number => x, 0, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighteenth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, '0', B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, true, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, false, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, null, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, void 0, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, [], B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, {}, B, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, ( x: number ): number => x, B, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a nineteenth argument which is not a Float64Array... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, 'B', 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, true, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, false, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, null, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, void 0, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, [], 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, {}, 1, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, ( x: number ): number => x, 1, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a twentieth argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, '1', 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, true, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, false, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, null, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, void 0, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, [], 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, {}, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a twenty-first argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, '1', 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, true, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, false, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, null, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, void 0, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, [], 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, {}, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a twenty-second argument which is not a number... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, '0' ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, true ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, false ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, null ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, void 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, [] ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, {} ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an invalid number of arguments... +{ + const IPIV = new Int32Array( 3 ); + const DL = new Float64Array( 2 ); + const D = new Float64Array( 3 ); + const DU = new Float64Array( 2 ); + const DU2 = new Float64Array( 1 ); + const B = new Float64Array( 6 ); + + dgtts2.ndarray(); // $ExpectError + dgtts2.ndarray( 0 ); // $ExpectError + dgtts2.ndarray( 0, 3 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1 ); // $ExpectError + dgtts2.ndarray( 0, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0, 10 ); // $ExpectError +} + diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/examples/index.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/examples/index.js new file mode 100644 index 000000000000..b2c0f0cc7d89 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/examples/index.js @@ -0,0 +1,41 @@ +/** +* @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 ndarray2array = require( '@stdlib/ndarray/base/to-array' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var Float64Array = require( '@stdlib/array/float64' ); +var Int32Array = require( '@stdlib/array/int32' ); +var dgtts2 = require( './../lib' ); + +var shape = [ 3, 3 ]; +var order = 'row-major'; +var strides = shape2strides( shape, order ); + +var B = new Float64Array( [ 7.0, 8.0, 7.0, 2.0, 3.0, 4.0, 1.0, 1.5, 2.0 ] ); +console.log( ndarray2array( B, shape, strides, 0, order ) ); + +var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +var DU2 = new Float64Array( [ 0.0 ] ); +var IPIV = new Int32Array( [ 0, 1, 2 ] ); + +var X = dgtts2( 'row-major', 1, 3, 3, DL, D, DU, DU2, IPIV, B, 3 ); +console.log( ndarray2array( X, shape, strides, 0, order ) ); diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/base.js new file mode 100644 index 000000000000..b4426003f5a9 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/base.js @@ -0,0 +1,372 @@ +/** +* @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, max-params */ + +'use strict'; + +// FUNCTIONS // + +/** +* Solve AT * X = B using the LU factorization of A computed by `dgttrf`, overwriting B with the solution. +* +* @private +* @param {NonNegativeInteger} N - order of the matrix A +* @param {NonNegativeInteger} nrhs - number of right-hand sides, i.e., the number of columns of the matrix B +* @param {Float64Array} DL - multipliers that define the matrix L +* @param {integer} strideDL - stride length for DL +* @param {NonNegativeInteger} offsetDL - starting index of DL +* @param {Float64Array} D - N diagonal elements of the upper triangular matrix U +* @param {integer} strideD - stride length for D +* @param {NonNegativeInteger} offsetD - starting index of D +* @param {Float64Array} DU - elements of the first super-diagonal of U +* @param {integer} strideDU - stride length for DU +* @param {NonNegativeInteger} offsetDU - starting index of DU +* @param {Float64Array} DU2 - elements of the second super-diagonal of U +* @param {integer} strideDU2 - stride length for DU2 +* @param {NonNegativeInteger} offsetDU2 - starting index of DU2 +* @param {Int32Array} IPIV - vector of pivot indices +* @param {integer} strideIPIV - stride length for IPIV +* @param {NonNegativeInteger} offsetIPIV - starting index for IPIV +* @param {Float64Array} B - right-hand side matrix B, overwritten by the solution matrix X +* @param {integer} strideB1 - stride of the first dimension of B +* @param {integer} strideB2 - stride of the second dimension of B +* @param {NonNegativeInteger} offsetB - starting index of B +* @returns {Float64Array} the solution matrix X +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var Int32Array = require( '@stdlib/array/int32' ); +* +* var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +* var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +* var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +* var DU2 = new Float64Array( [ 0.0 ] ); +* var IPIV = new Int32Array( [ 0, 1, 2 ] ); +* var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); +* +* var out = transpose( 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); +* // out => [ ~1.44, ~1.25, ~1.55 ] +*/ +function transpose( N, nrhs, DL, strideDL, offsetDL, D, strideD, offsetD, DU, strideDU, offsetDU, DU2, strideDU2, offsetDU2, IPIV, strideIPIV, offsetIPIV, B, strideB1, strideB2, offsetB ) { + var idu2; + var temp; + var idu; + var idl; + var ib1; + var ib2; + var ib3; + var id; + var ip; + var i; + var j; + + if ( nrhs <= 1 ) { + ib1 = offsetB; + for ( j = 0; j < nrhs; j++) { + ip = offsetIPIV + ( (N-2) * strideIPIV ); + idl = offsetDL + ( (N-2) * strideDL ); + id = offsetD; + idu = offsetDU; + idu2 = offsetDU2; + + B[ ib1 ] /= D[ id ]; + if ( N > 1 ) { + B[ ib1 + strideB1 ] = ( B[ ib1 + strideB1 ] - ( DU[ idu ] * B[ ib1 ] ) ) / D[ id + strideD ]; + } + + idu = offsetDU + strideDU; + id = offsetD + ( 2 * strideD ); + + ib2 = strideB1 * 2; + for ( i = 2; i < N; i++ ) { + B[ ib1 + ib2 ] = ( B[ ib1 + ib2 ] - ( DU[ idu ] * B[ ib1 + ib2 - strideB1 ] ) - ( DU2[ idu2 ] * B[ ib1 + ib2 - (2*strideB1) ] ) ) / D[ id ]; + + idu += strideDU; + idu2 += strideDU2; + id += strideD; + ib2 += strideB1; + } + + ib2 = strideB1 * ( N-2 ); + for ( i = N - 2; i >= 0; i-- ) { + ib3 = offsetB + ( strideB1 * IPIV[ ip ] ) + ( strideB2 * j ); + temp = B[ ib1 + ib2 ] - ( DL[ idl ] * B[ ib1 + ib2 + strideB1 ] ); + B[ ib1 + ib2 ] = B[ ib3 ]; + B[ ib3 ] = temp; + + ip -= strideIPIV; + idl -= strideDL; + ib2 -= strideB1; + } + + ib1 += strideB2; + } + } else { + ib1 = offsetB; + for ( j = 0; j < nrhs; j++ ) { + idu = offsetDU; + id = offsetD; + idu2 = offsetDU2; + ip = offsetIPIV + ( (N-2) * strideIPIV ); + + B[ ib1 ] /= D[ id ]; + if ( N > 1 ) { + B[ ib1 + strideB1 ] = ( B[ ib1 + strideB1 ] - ( DU[ idu ] * B[ ib1 ] ) ) / D[ id + strideD ]; + } + idu = offsetDU + strideDU; + id = offsetD + ( 2 * strideD ); + ib2 = 2 * strideB1; + for ( i = 2; i < N; i++ ) { + B[ ib1 + ib2 ] = ( B[ ib1 + ib2 ] - ( DU[ idu ] * B[ ib1 + ib2 - strideB1 ] ) - ( DU2[ idu2 ] * B[ ib1 + ib2 - (2*strideB1) ] ) ) / D[ id ]; + + idu += strideDU; + id += strideD; + idu2 += strideDU2; + ib2 += strideB1; + } + + ib2 = ( N-2 ) * strideB1; + idl = offsetDL + ( (N-2) * strideDL ); + for ( i = N - 2; i >= 0; i-- ) { + if ( IPIV[ ip ] === i ) { + B[ ib1 + ib2 ] -= DL[ idl ] * B[ ib1 + ib2 + strideB1 ]; + } else { + temp = B[ ib1 + ib2 + strideB1 ]; + B[ ib1 + ib2 + strideB1 ] = B[ ib1 + ib2 ] - ( DL[ idl ] * temp ); + B[ ib1 + ib2 ] = temp; + } + + ip -= strideIPIV; + idl -= strideDL; + ib2 -= strideB1; + } + + ib1 += strideB2; + } + } + + return B; +} + +/** +* Solve A * X = B using the LU factorization of A computed by `dgttrf`, overwriting B with the solution. +* +* @private +* @param {NonNegativeInteger} N - order of the matrix A +* @param {NonNegativeInteger} nrhs - number of right-hand sides, i.e., the number of columns of the matrix B +* @param {Float64Array} DL - multipliers that define the matrix L +* @param {integer} strideDL - stride length for DL +* @param {NonNegativeInteger} offsetDL - starting index of DL +* @param {Float64Array} D - N diagonal elements of the upper triangular matrix U +* @param {integer} strideD - stride length for D +* @param {NonNegativeInteger} offsetD - starting index of D +* @param {Float64Array} DU - elements of the first super-diagonal of U +* @param {integer} strideDU - stride length for DU +* @param {NonNegativeInteger} offsetDU - starting index of DU +* @param {Float64Array} DU2 - elements of the second super-diagonal of U +* @param {integer} strideDU2 - stride length for DU2 +* @param {NonNegativeInteger} offsetDU2 - starting index of DU2 +* @param {Int32Array} IPIV - vector of pivot indices +* @param {integer} strideIPIV - stride length for IPIV +* @param {NonNegativeInteger} offsetIPIV - starting index for IPIV +* @param {Float64Array} B - right-hand side matrix B, overwritten by the solution matrix X +* @param {integer} strideB1 - stride of the first dimension of B +* @param {integer} strideB2 - stride of the second dimension of B +* @param {NonNegativeInteger} offsetB - starting index of B +* @returns {Float64Array} the solution matrix X +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var Int32Array = require( '@stdlib/array/int32' ); +* +* var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +* var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +* var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +* var DU2 = new Float64Array( [ 0.0 ] ); +* var IPIV = new Int32Array( [ 0, 1, 2 ] ); +* var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); +* +* var out = noTranspose( 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); +* // out => [ ~1.40, ~1.39, ~1.43 ] +*/ +function noTranspose( N, nrhs, DL, strideDL, offsetDL, D, strideD, offsetD, DU, strideDU, offsetDU, DU2, strideDU2, offsetDU2, IPIV, strideIPIV, offsetIPIV, B, strideB1, strideB2, offsetB ) { + var temp; + var idu2; + var ipi; + var idl; + var idu; + var ib3; + var ib1; + var ib2; + var ip; + var id; + var j; + var i; + + if ( nrhs <= 1 ) { + ib1 = offsetB; + for ( j = 0; j < nrhs; j++ ) { + ip = offsetIPIV; + idl = offsetDL; + id = offsetD; + idu2 = offsetDU2; + + ib2 = 0; + for ( i = 0; i < N - 1; i++ ) { + ipi = IPIV[ ip ]; + ib3 = offsetB + (strideB1*ipi) + (strideB2*j); + temp = B[ offsetB + (strideB1*(i+1-ipi+i)) + (strideB2*j) ] - ( DL[ idl ] * B[ ib3 ] ); + B[ ib1 + ib2 ] = B[ ib3 ]; + B[ ib1 + ib2 + strideB1 ] = temp; + + ip += strideIPIV; + idl += strideDL; + ib2 += strideB1; + } + + B[ ib1 + ib2 ] /= D[ offsetD + (strideD*(N-1)) ]; + + idu = offsetDU + ( (N-3) * strideDU ); + id = offsetD + ( (N-3) * strideD ); + if ( N > 1 ) { + B[ ib1 + ib2 - strideB1 ] = ( B[ ib1 + ib2 - strideB1 ] - ( DU[ idu + strideDU ] * B[ ib1 + ib2 ] ) ) / D[ id + strideD ]; + } + + idu2 = offsetDU2 + ( (N-3) * strideDU2 ); + ib2 = ( N - 3 ) * strideB1; + for ( i = N - 3; i >= 0; i-- ) { + B[ ib1 + ib2 ] = ( B[ ib1 + ib2 ] - ( DU[ idu ] * B[ ib1 + ib2 + strideB1 ] ) - ( DU2[ idu2 ] * B[ ib1 + ib2 + ( 2 * strideB1 ) ] ) ) / D[ id ]; + + idu -= strideDU; + idu2 -= strideDU2; + id -= strideD; + ib2 -= strideB1; + } + ib1 += strideB2; + } + } else { + ib1 = offsetB; + for ( j = 0; j < nrhs; j++ ) { + ip = offsetIPIV; + idl = offsetDL; + ib2 = 0; + for ( i = 0; i < N - 1; i++ ) { + if ( IPIV[ ip ] === i ) { + B[ ib1 + ib2 + strideB1 ] -= DL[ idl ] * B[ ib1 + ib2 ]; + } else { + temp = B[ ib1 + ib2 ]; + B[ ib1 + ib2 ] = B[ ib1 + ib2 + strideB1 ]; + B[ ib1 + ib2 + strideB1 ] = temp - ( DL[ idl ] * B[ ib1 + ib2 ] ); + } + + ip += strideIPIV; + idl += strideDL; + ib2 += strideB1; + } + B[ ib1 + ib2 ] /= D[ offsetD + (strideD*(N-1)) ]; + + idu = offsetDU + ( (N-3) * strideDU ); + id = offsetD + ( (N-3) * strideD ); + if ( N > 1 ) { + B[ ib1 + ib2 - strideB1 ] = ( B[ ib1 + ib2 - strideB1 ] - ( DU[ idu + strideDU ] * B[ ib1 + ib2 ] ) ) / D[ id + strideD ]; + } + + idu2 = offsetDU2 + ( (N-3) * strideDU2 ); + ib2 = ( N - 3 ) * strideB1; + for ( i = N - 3; i >= 0; i-- ) { + B[ ib1 + ib2 ] = ( B[ ib1 + ib2 ] - ( DU[ idu ] * B[ ib1 + ib2 + strideB1 ] ) - ( DU2[ idu2 ] * B[ ib1 + ib2 + ( 2 * strideB1 ) ] ) ) / D[ id ]; + + idu -= strideDU; + idu2 -= strideDU2; + id -= strideD; + } + + ib1 += strideB2; + } + } + + return B; +} + + +// MAIN // + +/** +* Solves a system of linear equations with a tri diagonal matrix using the LU factorization computed by `dgttrf`. +* +* ## Notes +* +* - To solve A * X = B (no transpose), use itrans = 0. +* - To solve AT * X = B (transpose), use itrans = 1. +* - To solve AT * X = B (conjugate transpose = transpose), use itrans = 2. +* +* @param {integer} itrans - specifies the form of the system of equations +* @param {NonNegativeInteger} N - order of the matrix A +* @param {NonNegativeInteger} nrhs - number of right-hand sides, i.e., the number of columns of the matrix B +* @param {Float64Array} DL - multipliers that define the matrix L +* @param {integer} strideDL - stride length for DL +* @param {NonNegativeInteger} offsetDL - starting index of DL +* @param {Float64Array} D - N diagonal elements of the upper triangular matrix U +* @param {integer} strideD - stride length for D +* @param {NonNegativeInteger} offsetD - starting index of D +* @param {Float64Array} DU - elements of the first super-diagonal of U +* @param {integer} strideDU - stride length for DU +* @param {NonNegativeInteger} offsetDU - starting index of DU +* @param {Float64Array} DU2 - elements of the second super-diagonal of U +* @param {integer} strideDU2 - stride length for DU2 +* @param {NonNegativeInteger} offsetDU2 - starting index of DU2 +* @param {Int32Array} IPIV - vector of pivot indices +* @param {integer} strideIPIV - stride length for IPIV +* @param {NonNegativeInteger} offsetIPIV - starting index for IPIV +* @param {Float64Array} B - right-hand side matrix B, overwritten by the solution matrix X +* @param {integer} strideB1 - stride of the first dimension of B +* @param {integer} strideB2 - stride of the second dimension of B +* @param {NonNegativeInteger} offsetB - starting index of B +* @returns {Float64Array} the solution matrix X +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var Int32Array = require( '@stdlib/array/int32' ); +* +* var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +* var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +* var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +* var DU2 = new Float64Array( [ 0.0 ] ); +* var IPIV = new Int32Array( [ 0, 1, 2 ] ); +* var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); +* +* var out = dgtts2( 1, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); +* // out => [ ~1.44, ~1.25, ~1.55 ] +*/ +function dgtts2( itrans, N, nrhs, DL, strideDL, offsetDL, D, strideD, offsetD, DU, strideDU, offsetDU, DU2, strideDU2, offsetDU2, IPIV, strideIPIV, offsetIPIV, B, strideB1, strideB2, offsetB ) { + if ( N === 0 || nrhs === 0 ) { + return B; + } + if ( itrans === 0 ) { + // Solve A * X = B using the LU factorization of A, overwriting B with the solution + return noTranspose( N, nrhs, DL, strideDL, offsetDL, D, strideD, offsetD, DU, strideDU, offsetDU, DU2, strideDU2, offsetDU2, IPIV, strideIPIV, offsetIPIV, B, strideB1, strideB2, offsetB ); + } + // Solve Solve A**T * X = B using the LU factorization of A, overwriting B with the solution. + return transpose( N, nrhs, DL, strideDL, offsetDL, D, strideD, offsetD, DU, strideDU, offsetDU, DU2, strideDU2, offsetDU2, IPIV, strideIPIV, offsetIPIV, B, strideB1, strideB2, offsetB ); +} + + +// EXPORTS // + +module.exports = dgtts2; diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/dgtts2.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/dgtts2.js new file mode 100644 index 000000000000..893ab691f7a4 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/dgtts2.js @@ -0,0 +1,91 @@ +/** +* @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 format = require( '@stdlib/string/format' ); +var base = require( './base.js' ); + + +// MAIN // + +/** +* Solves a system of linear equations with a tri diagonal matrix using the LU factorization computed by `dgttrf`. +* +* ## Notes +* +* - To solve A * X = B (no transpose), use itrans = 0. +* - To solve AT * X = B (transpose), use itrans = 1. +* - To solve AT * X = B (conjugate transpose = transpose), use itrans = 2. +* +* @param {string} order - storage layout of B +* @param {integer} itrans - specifies the form of the system of equations +* @param {NonNegativeInteger} N - order of the matrix A +* @param {NonNegativeInteger} nrhs - number of right-hand sides, i.e., the number of columns of the matrix B +* @param {Float64Array} DL - multipliers that define the matrix L +* @param {Float64Array} D - diagonal elements of the upper triangular matrix U +* @param {Float64Array} DU - elements of the first super-diagonal of U +* @param {Float64Array} DU2 - elements of the second super-diagonal of U +* @param {Int32Array} IPIV - vector of pivot indices +* @param {Float64Array} B - right-hand side matrix B, overwritten by the solution matrix X +* @param {NonNegativeInteger} LDB - leading dimension of array B +* @throws {TypeError} first argument must be a valid order +* @throws {RangeError} eleventh argument must be greater than or equal to N +* @returns {Float64Array} The solution matrix X +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var Int32Array = require( '@stdlib/array/int32' ); +* +* var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +* var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +* var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +* var DU2 = new Float64Array( [ 0.0 ] ); +* var IPIV = new Int32Array( [ 0, 1, 2 ] ); +* var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); +* +* var out = dgtts2( 'column-major', 1, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); +* // out => [ ~1.44, ~1.25, ~1.55 ] +*/ +function dgtts2( order, itrans, N, nrhs, DL, D, DU, DU2, IPIV, B, LDB ) { // eslint-disable-line max-params + var sb1; + var sb2; + + if ( !isLayout( order ) ) { + throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); + } + if ( order === 'column-major' ) { + sb1 = 1; + sb2 = LDB; + } else { // order === 'row-major' + if ( LDB < nrhs ) { + throw new RangeError( format( 'invalid argument. Eighth argument must be greater than or equal to %d. Value: `%d`.', N, LDB ) ); + } + sb1 = LDB; + sb2 = 1; + } + return base( itrans, N, nrhs, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, sb1, sb2, 0 ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dgtts2; diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/index.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/index.js new file mode 100644 index 000000000000..a9084f89eb61 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/index.js @@ -0,0 +1,80 @@ +/** +* @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'; + +/** +* LAPACK routine to solve a system of linear equations with a tri diagonal matrix using the LU factorization. +* +* @module @stdlib/lapack/base/dgtts2 +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var Int32Array = require( '@stdlib/array/int32' ); +* var dgtts2 = require( '@stdlib/lapack/base/dgtts2' ); +* +* var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +* var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +* var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +* var DU2 = new Float64Array( [ 0.0 ] ); +* var IPIV = new Int32Array( [ 0, 1, 2 ] ); +* var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); +* +* dgtts2( 'row-major', 1, 3, 1, DL, D, DU, DU2, IPIV, B, 3 ); +* // B => [ 1.4365079379889456, 1.2539682480442178, 1.5476190504889455 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var Int32Array = require( '@stdlib/array/int32' ); +* var dgtts2 = require( '@stdlib/lapack/base/dgtts2' ); +* +* var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +* var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +* var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +* var DU2 = new Float64Array( [ 0.0 ] ); +* var IPIV = new Int32Array( [ 0, 1, 2 ] ); +* var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); +* +* dgtts2.ndarray( 1, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); +* // B => [ 1.4365079379889456, 1.2539682480442178, 1.5476190504889455 ] +*/ + +// 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 dgtts2; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + dgtts2 = main; +} else { + dgtts2 = tmp; +} + + +// EXPORTS // + +module.exports = dgtts2; + +// exports: { "ndarray": "dgtts2.ndarray" } diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/main.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/main.js new file mode 100644 index 000000000000..89d62c6160b1 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/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 dgtts2 = require( './dgtts2.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( dgtts2, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dgtts2; diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/ndarray.js new file mode 100644 index 000000000000..1831dbf68707 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/lib/ndarray.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 base = require( './base.js' ); + + +// MAIN // + +/** +* Solves a system of linear equations with a tri diagonal matrix using the LU factorization computed by `dgttrf` and alternative indexing semantics. +* +* ## Notes +* +* - To solve A * X = B (no transpose), use itrans = 0. +* - To solve AT * X = B (transpose), use itrans = 1. +* - To solve AT * X = B (conjugate transpose = transpose), use itrans = 2. +* +* @param {integer} itrans - specifies the form of the system of equations +* @param {NonNegativeInteger} N - order of the matrix A +* @param {NonNegativeInteger} nrhs - number of right-hand sides, i.e., the number of columns of the matrix B +* @param {Float64Array} DL - multipliers that define the matrix L +* @param {integer} sdl - stride length for DL +* @param {NonNegativeInteger} odl - starting index of DL +* @param {Float64Array} D - N diagonal elements of the upper triangular matrix U +* @param {integer} sd - stride length for D +* @param {NonNegativeInteger} od - starting index of D +* @param {Float64Array} DU - elements of the first super-diagonal of U +* @param {integer} sdu - stride length for DU +* @param {NonNegativeInteger} odu - starting index of DU +* @param {Float64Array} DU2 - elements of the second super-diagonal of U +* @param {integer} sdu2 - stride length for DU2 +* @param {NonNegativeInteger} odu2 - starting index of DU2 +* @param {Int32Array} IPIV - vector of pivot indices +* @param {integer} si - stride length for IPIV +* @param {NonNegativeInteger} oi - starting index for IPIV +* @param {Float64Array} B - right-hand side matrix B, overwritten by the solution matrix X +* @param {integer} sb1 - stride length for the first dimension of B +* @param {integer} sb2 - stride for the second dimension of B +* @param {NonNegativeInteger} ob - starting index of B +* @returns {Float64Array} the solution matrix X +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var Int32Array = require( '@stdlib/array/int32' ); +* +* var DL = new Float64Array( [ 0.25, 0.26666667 ] ); +* var D = new Float64Array( [ 4.0, 3.75, 3.73333333 ] ); +* var DU = new Float64Array( [ 1.0, 0.73333333 ] ); +* var DU2 = new Float64Array( [ 0.0 ] ); +* var IPIV = new Int32Array( [ 0, 1, 2 ] ); +* var B = new Float64Array( [ 7.0, 8.0, 7.0 ] ); +* +* var out = dgtts2( 1, 3, 1, DL, 1, 0, D, 1, 0, DU, 1, 0, DU2, 1, 0, IPIV, 1, 0, B, 1, 1, 0 ); +* // out => [ ~1.44, ~1.25, ~1.55 ] +*/ +function dgtts2( itrans, N, nrhs, DL, sdl, odl, D, sd, od, DU, sdu, odu, DU2, sdu2, odu2, IPIV, si, oi, B, sb1, sb2, ob ) { // eslint-disable-line max-len, max-params + return base( itrans, N, nrhs, DL, sdl, odl, D, sd, od, DU, sdu, odu, DU2, sdu2, odu2, IPIV, si, oi, B, sb1, sb2, ob ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dgtts2; diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/package.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/package.json new file mode 100644 index 000000000000..a1be2fca3fbd --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/lapack/base/dgtts2", + "version": "0.0.0", + "description": "Solve a system of linear equations with a tri diagonal matrix using the LU factorization computed by dgttrf.", + "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", + "dgtts2", + "cholesky", + "factorization", + "linear", + "algebra", + "subroutines", + "array", + "ndarray", + "float64", + "double", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_no_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_no_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..cc007b93f30b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_no_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": 1, + "odl": 0, + + "D": [ 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 1.0 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 2, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 1, + "sb2": 3, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ 1.0, 5.0, -4.0, 1.5, 5.0, -3.5, 2.0, 3.0, -1.0 ], + + "expected_mat": [ + [ 1.0, 1.5, 2.0 ], + [ 5.0, 5.0, 3.0 ], + [ -4.0, -3.5, -1.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_no_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_no_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..9a068bbf0826 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_no_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": 3, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4031746026466836, 1.3873015894132654, 1.4285714242665817 ], + + "expected_mat": [ + [ 1.4031746026466836 ], + [ 1.3873015894132654 ], + [ 1.4285714242665817 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_no_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_no_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..eefab16501bd --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_no_trans_nrhs_gt_one.json @@ -0,0 +1,57 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 1, + "sb2": 3, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ + 1.7455555555, + 0.017777778, + 0.25, + 1.9494841268814838, + 0.2020634924740646, + 0.33035714225924745, + 1.6183333331681546, + 0.526666667327381, + 0.37499999832589287 + ], + + "expected_mat": [ + [ 1.7455555555, 1.9494841268814838, 1.6183333331681546 ], + [ 0.017777778, 0.2020634924740646, 0.526666667327381 ], + [ 0.25, 0.33035714225924745, 0.37499999832589287 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..6e73c13240fe --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": 1, + "odl": 0, + + "D": [ 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 1.0 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 2, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 1, + "sb2": 3, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ 1.0, 5.0, -4.0, 1.5, 5.0, -3.5, 2.0, 3.0, -1.0 ], + + "expected_mat": [ + [ 1.0, 1.5, 2.0 ], + [ 5.0, 5.0, 3.0 ], + [ -4.0, -3.5, -1.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..ab3a0381e7aa --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": 1, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4365079379889456, 1.2539682480442178, 1.5476190504889455 ], + + "expected_mat": [ + [ 1.4365079379889456 ], + [ 1.2539682480442178 ], + [ 1.5476190504889455 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..04d039568ae8 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/col_major_trans_nrhs_gt_one.json @@ -0,0 +1,57 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 1, + "sb2": 3, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ + 1.7503174605488945, + -0.0012698421955782274, + 0.25476190504889457, + 1.9566269844548256, + 0.1734920621806973, + 0.34940476245482566, + 1.6278571432659439, + 0.48857142693622446, + 0.4178571437659439 + ], + + "expected_mat": [ + [ 1.7503174605488945, 1.9566269844548256, 1.6278571432659439 ], + [ -0.0012698421955782274, 0.1734920621806973, 0.48857142693622446 ], + [ 0.25476190504889457, 0.34940476245482566, 0.4178571437659439 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_no_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_no_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..4d566e0f6e9b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_no_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": 1, + "odl": 0, + + "D": [ 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 1.0 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 2, 2 ], + "si": 1, + "oi": 0, + + "B": [ 9999.0, 1.0, 9999.0, 2.0, 9999.0, 7.0, 9999.0, 9999.0, 1.5, 9999.0, 3.0, 9999.0, 8.0, 9999.0, 9999.0, 2.0, 9999.0, 4.0, 9999.0, 7.0 ], + "sb1": -2, + "sb2": 7, + "ob": 5, + "LDB": null, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ 9999.0, -4.0, 9999.0, 5.0, 9999.0, 1.0, 9999.0, 9999.0, -3.5, 9999.0, 5.0, 9999.0, 1.5, 9999.0, 9999.0, -1.0, 9999.0, 3.0, 9999.0, 2.0 ], + + "expected_mat": [ + [ 1.0, 1.5, 2.0 ], + [ 5.0, 5.0, 3.0 ], + [ -4.0, -3.5, -1.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_no_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_no_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..e433f855c0c1 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_no_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": -3, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4031746026466836, 1.3873015894132654, 1.4285714242665817 ], + + "expected_mat": [ + [ 1.4031746026466836 ], + [ 1.3873015894132654 ], + [ 1.4285714242665817 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_no_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_no_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..7df49de91a36 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_no_trans_nrhs_gt_one.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 9999.0, 1.0, 9999.0, 2.0, 9999.0, 7.0, 9999.0, 9999.0, 1.5, 9999.0, 3.0, 9999.0, 8.0, 9999.0, 9999.0, 2.0, 9999.0, 4.0, 9999.0, 7.0 ], + "sb1": -2, + "sb2": 7, + "ob": 5, + "LDB": null, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ + 9999.0, + 0.25, + 9999.0, + 0.017777778, + 9999.0, + 1.7455555555, + 9999.0, + + 9999.0, + 0.33035714225924745, + 9999.0, + 0.2020634924740646, + 9999.0, + 1.9494841268814838, + 9999.0, + + 9999.0, + 0.37499999832589287, + 9999.0, + 0.526666667327381, + 9999.0, + 1.6183333331681546 + ], + + "expected_mat": [ + [ 1.7455555555, 1.9494841268814838, 1.6183333331681546 ], + [ 0.017777778, 0.2020634924740646, 0.526666667327381 ], + [ 0.25, 0.33035714225924745, 0.37499999832589287 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..206c9f4db336 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": 1, + "odl": 0, + + "D": [ 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 1.0 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 2, 2 ], + "si": 1, + "oi": 0, + + "B": [ 9999.0, 1.0, 9999.0, 2.0, 9999.0, 7.0, 9999.0, 9999.0, 1.5, 9999.0, 3.0, 9999.0, 8.0, 9999.0, 9999.0, 2.0, 9999.0, 4.0, 9999.0, 7.0 ], + "sb1": -2, + "sb2": 7, + "ob": 5, + "LDB": null, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ 9999.0, -4.0, 9999.0, 5.0, 9999.0, 1.0, 9999.0, 9999.0, -3.5, 9999.0, 5.0, 9999.0, 1.5, 9999.0, 9999.0, -1.0, 9999.0, 3.0, 9999.0, 2.0 ], + + "expected_mat": [ + [ 1.0, 1.5, 2.0 ], + [ 5.0, 5.0, 3.0 ], + [ -4.0, -3.5, -1.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..43d364cfc758 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": -3, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4365079379889456, 1.2539682480442178, 1.5476190504889455 ], + + "expected_mat": [ + [ 1.4365079379889456 ], + [ 1.2539682480442178 ], + [ 1.5476190504889455 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..5f7ecf9032d3 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_col_major_trans_nrhs_gt_one.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 9999.0, 1.0, 9999.0, 2.0, 9999.0, 7.0, 9999.0, 9999.0, 1.5, 9999.0, 3.0, 9999.0, 8.0, 9999.0, 9999.0, 2.0, 9999.0, 4.0, 9999.0, 7.0 ], + "sb1": -2, + "sb2": 7, + "ob": 5, + "LDB": null, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ + 9999.0, + 0.25476190504889457, + 9999.0, + -0.0012698421955782274, + 9999.0, + 1.7503174605488945, + 9999.0, + + 9999.0, + 0.34940476245482566, + 9999.0, + 0.1734920621806973, + 9999.0, + 1.9566269844548256, + 9999.0, + + 9999.0, + 0.4178571437659439, + 9999.0, + 0.48857142693622446, + 9999.0, + 1.6278571432659439 + ], + + "expected_mat": [ + [ 1.7503174605488945, 1.9566269844548256, 1.6278571432659439 ], + [ -0.0012698421955782274, 0.1734920621806973, 0.48857142693622446 ], + [ 0.25476190504889457, 0.34940476245482566, 0.4178571437659439 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_no_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_no_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..25dfcaca960e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_no_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": 1, + "odl": 0, + + "D": [ 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 1.0 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 2, 2 ], + "si": 1, + "oi": 0, + + "B": [ 9999.0, 1.0, 9999.0, 2.0, 9999.0, 7.0, 9999.0, 9999.0, 1.5, 9999.0, 3.0, 9999.0, 8.0, 9999.0, 9999.0, 2.0, 9999.0, 4.0, 9999.0, 7.0 ], + "sb1": 7, + "sb2": -2, + "ob": 5, + "LDB": null, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ 9999.0, -0.5, 9999.0, -1.0, 9999.0, 1.0, 9999.0, 9999.0, 2.0, 9999.0, 4.0, 9999.0, 5.0, 9999.0, 9999.0, 0.0, 9999.0, 0.0, 9999.0, 2.0 ], + + "expected_mat": [ + [ 1.0, -1.0, -0.5 ], + [ 5.0, 4.0, 2.0 ], + [ 2.0, 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_no_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_no_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..e433f855c0c1 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_no_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": -3, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4031746026466836, 1.3873015894132654, 1.4285714242665817 ], + + "expected_mat": [ + [ 1.4031746026466836 ], + [ 1.3873015894132654 ], + [ 1.4285714242665817 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_no_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_no_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..796944fc988e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_no_trans_nrhs_gt_one.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 9999.0, 1.0, 9999.0, 2.0, 9999.0, 7.0, 9999.0, 9999.0, 1.5, 9999.0, 3.0, 9999.0, 8.0, 9999.0, 9999.0, 2.0, 9999.0, 4.0, 9999.0, 7.0 ], + "sb1": 7, + "sb2": -2, + "ob": 5, + "LDB": null, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ + 9999.0, + 0.1884920633577806, + 9999.0, + 0.3769841267155612, + 9999.0, + 1.4031746026466836, + 9999.0, + + 9999.0, + 0.24603174656887758, + 9999.0, + 0.49206349313775516, + 9999.0, + 1.3873015894132654, + 9999.0, + + 9999.0, + 0.44642857071109693, + 9999.0, + 0.8928571414221939, + 9999.0, + 1.4285714242665817 + ], + + "expected_mat": [ + [ 1.4031746026466836, 0.3769841267155612, 0.1884920633577806 ], + [ 1.3873015894132654, 0.49206349313775516, 0.24603174656887758 ], + [ 1.4285714242665817, 0.8928571414221939, 0.44642857071109693 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..25dfcaca960e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": 1, + "odl": 0, + + "D": [ 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 1.0 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 2, 2 ], + "si": 1, + "oi": 0, + + "B": [ 9999.0, 1.0, 9999.0, 2.0, 9999.0, 7.0, 9999.0, 9999.0, 1.5, 9999.0, 3.0, 9999.0, 8.0, 9999.0, 9999.0, 2.0, 9999.0, 4.0, 9999.0, 7.0 ], + "sb1": 7, + "sb2": -2, + "ob": 5, + "LDB": null, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ 9999.0, -0.5, 9999.0, -1.0, 9999.0, 1.0, 9999.0, 9999.0, 2.0, 9999.0, 4.0, 9999.0, 5.0, 9999.0, 9999.0, 0.0, 9999.0, 0.0, 9999.0, 2.0 ], + + "expected_mat": [ + [ 1.0, -1.0, -0.5 ], + [ 5.0, 4.0, 2.0 ], + [ 2.0, 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..bf0d350a28a9 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": -3, + "ob": 0, + "LDB": 1, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4365079379889456, 1.2539682480442178, 1.5476190504889455 ], + + "expected_mat": [ + [ 1.4365079379889456 ], + [ 1.2539682480442178 ], + [ 1.5476190504889455 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..07c613c8a0d4 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/complex-access/complex_access_row_major_trans_nrhs_gt_one.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 9999.0, 1.0, 9999.0, 2.0, 9999.0, 7.0, 9999.0, 9999.0, 1.5, 9999.0, 3.0, 9999.0, 8.0, 9999.0, 9999.0, 2.0, 9999.0, 4.0, 9999.0, 7.0 ], + "sb1": 7, + "sb2": -2, + "ob": 5, + "LDB": null, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ + 9999.0, + 0.19801587345556973, + 9999.0, + 0.39603174691113946, + 9999.0, + 1.4365079379889456, + 9999.0, + + 9999.0, + 0.20793650617772105, + 9999.0, + 0.4158730123554421, + 9999.0, + 1.2539682480442178, + 9999.0, + + 9999.0, + 0.47023809595556976, + 9999.0, + 0.9404761919111395, + 9999.0, + 1.5476190504889455 + ], + + "expected_mat": [ + [ 1.4365079379889456, 0.39603174691113946, 0.19801587345556973 ], + [ 1.2539682480442178, 0.4158730123554421, 0.20793650617772105 ], + [ 1.5476190504889455, 0.9404761919111395, 0.47023809595556976 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_no_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_no_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..dc60ea8e1a64 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_no_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": -1, + "odl": 1, + + "D": [ 0.5, 1.0, 2.0 ], + "sd": -1, + "od": 2, + + "DU": [ 1.0, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 2, 0 ], + "si": -1, + "oi": 2, + + "B": [ 2.0, 4.0, 7.0, 1.5, 3.0, 8.0, 1.0, 2.0, 7.0 ], + "sb1": -1, + "sb2": -3, + "ob": 8, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ -1.0, 3.0, 2.0, -3.5, 5.0, 1.5, -4.0, 5.0, 1.0 ], + + "expected_mat": [ + [ 1.0, 1.5, 2.0 ], + [ 5.0, 5.0, 3.0 ], + [ -4.0, -3.5, -1.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_no_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_no_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..e83233fb0d87 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_no_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 1, + + "DL": [ 0.26666667, 0.25 ], + "sdl": -1, + "odl": 1, + + "D": [ 3.73333333, 3.75, 4.0 ], + "sd": -1, + "od": 2, + + "DU": [ 0.73333333, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 1, 0 ], + "si": -1, + "oi": 2, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": -1, + "sb2": -3, + "ob": 2, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4285714242665817, 1.3873015894132654, 1.4031746026466836 ], + + "expected_mat": [ + [ 1.4031746026466836 ], + [ 1.3873015894132654 ], + [ 1.4285714242665817 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_no_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_no_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..20756a6b1de2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_no_trans_nrhs_gt_one.json @@ -0,0 +1,57 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.26666667, 0.25 ], + "sdl": -1, + "odl": 1, + + "D": [ 3.73333333, 3.75, 4.0 ], + "sd": -1, + "od": 2, + + "DU": [ 0.73333333, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 1, 0 ], + "si": -1, + "oi": 2, + + "B": [ 2.0, 4.0, 7.0, 1.5, 3.0, 8.0, 1.0, 2.0, 7.0 ], + "sb1": -1, + "sb2": -3, + "ob": 8, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ + 0.37499999832589287, + 0.526666667327381, + 1.6183333331681546, + 0.33035714225924745, + 0.2020634924740646, + 1.9494841268814838, + 0.25, + 0.017777778, + 1.7455555555 + ], + + "expected_mat": [ + [ 1.7455555555, 1.9494841268814838, 1.6183333331681546 ], + [ 0.017777778, 0.2020634924740646, 0.526666667327381 ], + [ 0.25, 0.33035714225924745, 0.37499999832589287 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..770758b032c5 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": -1, + "odl": 1, + + "D": [ 0.5, 1.0, 2.0 ], + "sd": -1, + "od": 2, + + "DU": [ 1.0, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 2, 0 ], + "si": -1, + "oi": 2, + + "B": [ 2.0, 4.0, 7.0, 1.5, 3.0, 8.0, 1.0, 2.0, 7.0 ], + "sb1": -1, + "sb2": -3, + "ob": 8, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ -1.0, 3.0, 2.0, -3.5, 5.0, 1.5, -4.0, 5.0, 1.0 ], + + "expected_mat": [ + [ 1.0, 1.5, 2.0 ], + [ 5.0, 5.0, 3.0 ], + [ -4.0, -3.5, -1.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..b0db5406be98 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 1, + + "DL": [ 0.26666667, 0.25 ], + "sdl": -1, + "odl": 1, + + "D": [ 3.73333333, 3.75, 4.0 ], + "sd": -1, + "od": 2, + + "DU": [ 0.73333333, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 1, 0 ], + "si": -1, + "oi": 2, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": -1, + "sb2": -1, + "ob": 2, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.5476190504889455, 1.2539682480442178, 1.4365079379889456 ], + + "expected_mat": [ + [ 1.4365079379889456 ], + [ 1.2539682480442178 ], + [ 1.5476190504889455 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..c9ddc646efd9 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_col_major_trans_nrhs_gt_one.json @@ -0,0 +1,57 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.26666667, 0.25 ], + "sdl": -1, + "odl": 1, + + "D": [ 3.73333333, 3.75, 4.0 ], + "sd": -1, + "od": 2, + + "DU": [ 0.73333333, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 1, 0 ], + "si": -1, + "oi": 2, + + "B": [ 2.0, 4.0, 7.0, 1.5, 3.0, 8.0, 1.0, 2.0, 7.0 ], + "sb1": -1, + "sb2": -3, + "ob": 8, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ + 0.4178571437659439, + 0.48857142693622446, + 1.6278571432659439, + 0.34940476245482566, + 0.1734920621806973, + 1.9566269844548256, + 0.25476190504889457, + -0.0012698421955782274, + 1.7503174605488945 + ], + + "expected_mat": [ + [ 1.7503174605488945, 1.9566269844548256, 1.6278571432659439 ], + [ -0.0012698421955782274, 0.1734920621806973, 0.48857142693622446 ], + [ 0.25476190504889457, 0.34940476245482566, 0.4178571437659439 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_no_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_no_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..9584ada1c3c6 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_no_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": -1, + "odl": 1, + + "D": [ 0.5, 1.0, 2.0 ], + "sd": -1, + "od": 2, + + "DU": [ 1.0, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 2, 0 ], + "si": -1, + "oi": 2, + + "B": [ 2.0, 4.0, 7.0, 1.5, 3.0, 8.0, 1.0, 2.0, 7.0 ], + "sb1": -3, + "sb2": -1, + "ob": 8, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ 0.0, 0.0, 2.0, 2.0, 4.0, 5.0, -0.5, -1.0, 1.0 ], + + "expected_mat": [ + [ 1.0, -1.0, -0.5 ], + [ 5.0, 4.0, 2.0 ], + [ 2.0, 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_no_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_no_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..25d940e353c1 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_no_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 1, + + "DL": [ 0.26666667, 0.25 ], + "sdl": -1, + "odl": 1, + + "D": [ 3.73333333, 3.75, 4.0 ], + "sd": -1, + "od": 2, + + "DU": [ 0.73333333, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 1, 0 ], + "si": -1, + "oi": 2, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": -1, + "sb2": -1, + "ob": 2, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4285714242665817, 1.3873015894132654, 1.4031746026466836 ], + + "expected_mat": [ + [ 1.4031746026466836 ], + [ 1.3873015894132654 ], + [ 1.4285714242665817 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_no_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_no_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..638536738693 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_no_trans_nrhs_gt_one.json @@ -0,0 +1,57 @@ +{ + "order": "row-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.26666667, 0.25 ], + "sdl": -1, + "odl": 1, + + "D": [ 3.73333333, 3.75, 4.0 ], + "sd": -1, + "od": 2, + + "DU": [ 0.73333333, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 1, 0 ], + "si": -1, + "oi": 2, + + "B": [ 2.0, 4.0, 7.0, 1.5, 3.0, 8.0, 1.0, 2.0, 7.0 ], + "sb1": -3, + "sb2": -1, + "ob": 8, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ + 0.44642857071109693, + 0.8928571414221939, + 1.4285714242665817, + 0.24603174656887758, + 0.49206349313775516, + 1.3873015894132654, + 0.1884920633577806, + 0.3769841267155612, + 1.4031746026466836 + ], + + "expected_mat": [ + [ 1.4031746026466836, 0.3769841267155612, 0.1884920633577806 ], + [ 1.3873015894132654, 0.49206349313775516, 0.24603174656887758 ], + [ 1.4285714242665817, 0.8928571414221939, 0.44642857071109693 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..9584ada1c3c6 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": -1, + "odl": 1, + + "D": [ 0.5, 1.0, 2.0 ], + "sd": -1, + "od": 2, + + "DU": [ 1.0, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 2, 0 ], + "si": -1, + "oi": 2, + + "B": [ 2.0, 4.0, 7.0, 1.5, 3.0, 8.0, 1.0, 2.0, 7.0 ], + "sb1": -3, + "sb2": -1, + "ob": 8, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ 0.0, 0.0, 2.0, 2.0, 4.0, 5.0, -0.5, -1.0, 1.0 ], + + "expected_mat": [ + [ 1.0, -1.0, -0.5 ], + [ 5.0, 4.0, 2.0 ], + [ 2.0, 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..ce372d5c4857 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 1, + + "DL": [ 0.26666667, 0.25 ], + "sdl": -1, + "odl": 1, + + "D": [ 3.73333333, 3.75, 4.0 ], + "sd": -1, + "od": 2, + + "DU": [ 0.73333333, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 1, 0 ], + "si": -1, + "oi": 2, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": -1, + "sb2": -1, + "ob": 2, + "LDB": 1, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.5476190504889455, 1.2539682480442178, 1.4365079379889456 ], + + "expected_mat": [ + [ 1.4365079379889456 ], + [ 1.2539682480442178 ], + [ 1.5476190504889455 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..236b93523220 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/negative-strides/neg_stride_row_major_trans_nrhs_gt_one.json @@ -0,0 +1,57 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.26666667, 0.25 ], + "sdl": -1, + "odl": 1, + + "D": [ 3.73333333, 3.75, 4.0 ], + "sd": -1, + "od": 2, + + "DU": [ 0.73333333, 1.0 ], + "sdu": -1, + "odu": 1, + + "DU2": [ 0.0 ], + "sdu2": -1, + "odu2": 0, + + "IPIV": [ 2, 1, 0 ], + "si": -1, + "oi": 2, + + "B": [ 2.0, 4.0, 7.0, 1.5, 3.0, 8.0, 1.0, 2.0, 7.0 ], + "sb1": -3, + "sb2": -1, + "ob": 8, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ + 0.47023809595556976, + 0.9404761919111395, + 1.5476190504889455, + 0.20793650617772105, + 0.4158730123554421, + 1.2539682480442178, + 0.19801587345556973, + 0.39603174691113946, + 1.4365079379889456 + ], + + "expected_mat": [ + [ 1.4365079379889456, 0.39603174691113946, 0.19801587345556973 ], + [ 1.2539682480442178, 0.4158730123554421, 0.20793650617772105 ], + [ 1.5476190504889455, 0.9404761919111395, 0.47023809595556976 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_no_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_no_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..3fdc5b1bb624 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_no_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.0, 0.5, 0.5 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 1.0 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 2, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 1, + "sb2": 3, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ 0.0, 1.0, 5.0, -4.0, 1.5, 5.0, -3.5, 2.0, 3.0, -1.0 ], + + "expected_mat": [ + [ 1.0, 1.5, 2.0 ], + [ 5.0, 5.0, 3.0 ], + [ -4.0, -3.5, -1.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_no_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_no_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..eeab2f76f5e6 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_no_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 1, + + "DL": [ 0.0, 0.25, 0.26666667 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 0.73333333 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 1, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": 3, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 0.0, 1.4031746026466836, 1.3873015894132654, 1.4285714242665817 ], + + "expected_mat": [ + [ 1.4031746026466836 ], + [ 1.3873015894132654 ], + [ 1.4285714242665817 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_no_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_no_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..2a10968a7e47 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_no_trans_nrhs_gt_one.json @@ -0,0 +1,58 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.0, 0.25, 0.26666667 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 0.73333333 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 1, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 1, + "sb2": 3, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ + 0.0, + 1.7455555555, + 0.017777778, + 0.25, + 1.9494841268814838, + 0.2020634924740646, + 0.33035714225924745, + 1.6183333331681546, + 0.526666667327381, + 0.37499999832589287 + ], + + "expected_mat": [ + [ 1.7455555555, 1.9494841268814838, 1.6183333331681546 ], + [ 0.017777778, 0.2020634924740646, 0.526666667327381 ], + [ 0.25, 0.33035714225924745, 0.37499999832589287 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..411a5e83c795 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.0, 0.5, 0.5 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 1.0 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 2, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 1, + "sb2": 3, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ 0.0, 1.0, 5.0, -4.0, 1.5, 5.0, -3.5, 2.0, 3.0, -1.0 ], + + "expected_mat": [ + [ 1.0, 1.5, 2.0 ], + [ 5.0, 5.0, 3.0 ], + [ -4.0, -3.5, -1.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..377498106148 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 1, + + "DL": [ 0.0, 0.25, 0.26666667 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 0.73333333 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 1, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": 1, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 0.0, 1.4365079379889456, 1.2539682480442178, 1.5476190504889455 ], + + "expected_mat": [ + [ 1.4365079379889456 ], + [ 1.2539682480442178 ], + [ 1.5476190504889455 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..d0b9c6d7e4bb --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_col_major_trans_nrhs_gt_one.json @@ -0,0 +1,58 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.0, 0.25, 0.26666667 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 0.73333333 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 1, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 1, + "sb2": 3, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ + 0.0, + 1.7503174605488945, + -0.0012698421955782274, + 0.25476190504889457, + 1.9566269844548256, + 0.1734920621806973, + 0.34940476245482566, + 1.6278571432659439, + 0.48857142693622446, + 0.4178571437659439 + ], + + "expected_mat": [ + [ 1.7503174605488945, 1.9566269844548256, 1.6278571432659439 ], + [ -0.0012698421955782274, 0.1734920621806973, 0.48857142693622446 ], + [ 0.25476190504889457, 0.34940476245482566, 0.4178571437659439 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_no_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_no_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..f0a738faa481 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_no_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.0, 0.5, 0.5 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 1.0 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 2, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 3, + "sb2": 1, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ 0.0, 1.0, -1.0, -0.5, 5.0, 4.0, 2.0, 2.0, 0.0, 0.0 ], + + "expected_mat": [ + [ 1.0, -1.0, -0.5 ], + [ 5.0, 4.0, 2.0 ], + [ 2.0, 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_no_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_no_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..eb746c7ce900 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_no_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 1, + + "DL": [ 0.0, 0.25, 0.26666667 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 0.73333333 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 1, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": 1, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 0.0, 1.4031746026466836, 1.3873015894132654, 1.4285714242665817 ], + + "expected_mat": [ + [ 1.4031746026466836 ], + [ 1.3873015894132654 ], + [ 1.4285714242665817 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_no_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_no_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..ba466dd458de --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_no_trans_nrhs_gt_one.json @@ -0,0 +1,58 @@ +{ + "order": "row-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.0, 0.25, 0.26666667 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 0.73333333 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 1, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 3, + "sb2": 1, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ + 0.0, + 1.4031746026466836, + 0.3769841267155612, + 0.1884920633577806, + 1.3873015894132654, + 0.49206349313775516, + 0.24603174656887758, + 1.4285714242665817, + 0.8928571414221939, + 0.44642857071109693 + ], + + "expected_mat": [ + [ 1.4031746026466836, 0.3769841267155612, 0.1884920633577806 ], + [ 1.3873015894132654, 0.49206349313775516, 0.24603174656887758 ], + [ 1.4285714242665817, 0.8928571414221939, 0.44642857071109693 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..f0a738faa481 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.0, 0.5, 0.5 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 1.0 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 2, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 3, + "sb2": 1, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ 0.0, 1.0, -1.0, -0.5, 5.0, 4.0, 2.0, 2.0, 0.0, 0.0 ], + + "expected_mat": [ + [ 1.0, -1.0, -0.5 ], + [ 5.0, 4.0, 2.0 ], + [ 2.0, 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..6ce25debfb5a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 1, + + "DL": [ 0.0, 0.25, 0.26666667 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 0.73333333 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 1, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": 1, + "ob": 1, + "LDB": 1, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 0.0, 1.4365079379889456, 1.2539682480442178, 1.5476190504889455 ], + + "expected_mat": [ + [ 1.4365079379889456 ], + [ 1.2539682480442178 ], + [ 1.5476190504889455 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..ee6fbd20d971 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/offsets/offset_row_major_trans_nrhs_gt_one.json @@ -0,0 +1,58 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.0, 0.25, 0.26666667 ], + "sdl": 1, + "odl": 1, + + "D": [ 0.0, 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 1, + + "DU": [ 0.0, 1.0, 0.73333333 ], + "sdu": 1, + "odu": 1, + + "DU2": [ 0.0, 0.0 ], + "sdu2": 1, + "odu2": 1, + + "IPIV": [ 0, 0, 1, 2 ], + "si": 1, + "oi": 1, + + "B": [ 0.0, 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 3, + "sb2": 1, + "ob": 1, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ + 0.0, + 1.4365079379889456, + 0.39603174691113946, + 0.19801587345556973, + 1.2539682480442178, + 0.4158730123554421, + 0.20793650617772105, + 1.5476190504889455, + 0.9404761919111395, + 0.47023809595556976 + ], + + "expected_mat": [ + [ 1.4365079379889456, 0.39603174691113946, 0.19801587345556973 ], + [ 1.2539682480442178, 0.4158730123554421, 0.20793650617772105 ], + [ 1.5476190504889455, 0.9404761919111395, 0.47023809595556976 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_no_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_no_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..12b27fe2002f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_no_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 9999.0, 0.5, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 2.0, 9999.0, 1.0, 9999.0, 0.5, 9999.0 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 1.0, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 2, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 2.0, 9999.0, 1.0, 9999.0, 9999.0, 8.0, 9999.0, 3.0, 9999.0, 1.5, 9999.0, 9999.0, 7.0, 9999.0, 4.0, 9999.0, 2.0, 9999.0, 9999.0 ], + "sb1": 2, + "sb2": 7, + "ob": 0, + "LDB": null, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ 1.0, 9999.0, 5.0, 9999.0, -4.0, 9999.0, 9999.0, 1.5, 9999.0, 5.0, 9999.0, -3.5, 9999.0, 9999.0, 2.0, 9999.0, 3.0, 9999.0, -1.0, 9999.0, 9999.0 ], + + "expected_mat": [ + [ 1.0, 1.5, 2.0 ], + [ 5.0, 5.0, 3.0 ], + [ -4.0, -3.5, -1.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_no_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_no_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..6c06da13fc67 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_no_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 9999.0, 0.26666667, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 4.0, 9999.0, 3.75, 9999.0, 3.73333333, 9999.0 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 0.73333333, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 1, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 8.0, 9999.0, 7.0, 9999.0 ], + "sb1": 2, + "sb2": 2, + "ob": 0, + "LDB": null, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4031746026466836, 9999.0, 1.3873015894132654, 9999.0, 1.4285714242665817, 9999.0 ], + + "expected_mat": [ + [ 1.4031746026466836 ], + [ 1.3873015894132654 ], + [ 1.4285714242665817 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_no_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_no_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..8cb6043dbaa7 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_no_trans_nrhs_gt_one.json @@ -0,0 +1,71 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 9999.0, 0.26666667, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 4.0, 9999.0, 3.75, 9999.0, 3.73333333, 9999.0 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 0.73333333, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 1, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 2.0, 9999.0, 1.0, 9999.0, 9999.0, 8.0, 9999.0, 3.0, 9999.0, 1.5, 9999.0, 9999.0, 7.0, 9999.0, 4.0, 9999.0, 2.0, 9999.0, 9999.0 ], + "sb1": 2, + "sb2": 7, + "ob": 0, + "LDB": null, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ + 1.7455555555, + 9999.0, + 0.017777778, + 9999.0, + 0.25, + 9999.0, + 9999.0, + + 1.9494841268814838, + 9999.0, + 0.2020634924740646, + 9999.0, + 0.33035714225924745, + 9999.0, + 9999.0, + + 1.6183333331681546, + 9999.0, + 0.526666667327381, + 9999.0, + 0.37499999832589287, + 9999.0, + 9999.0 + ], + + "expected_mat": [ + [ 1.7455555555, 1.9494841268814838, 1.6183333331681546 ], + [ 0.017777778, 0.2020634924740646, 0.526666667327381 ], + [ 0.25, 0.33035714225924745, 0.37499999832589287 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..9deb1efa9641 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 9999.0, 0.5, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 2.0, 9999.0, 1.0, 9999.0, 0.5, 9999.0 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 1.0, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 2, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 2.0, 9999.0, 1.0, 9999.0, 9999.0, 8.0, 9999.0, 3.0, 9999.0, 1.5, 9999.0, 9999.0, 7.0, 9999.0, 4.0, 9999.0, 2.0, 9999.0, 9999.0 ], + "sb1": 2, + "sb2": 7, + "ob": 0, + "LDB": null, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ 1.0, 9999.0, 5.0, 9999.0, -4.0, 9999.0, 9999.0, 1.5, 9999.0, 5.0, 9999.0, -3.5, 9999.0, 9999.0, 2.0, 9999.0, 3.0, 9999.0, -1.0, 9999.0, 9999.0 ], + + "expected_mat": [ + [ 1.0, 1.5, 2.0 ], + [ 5.0, 5.0, 3.0 ], + [ -4.0, -3.5, -1.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..e2a42853cde7 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 9999.0, 0.26666667, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 4.0, 9999.0, 3.75, 9999.0, 3.73333333, 9999.0 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 0.73333333, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 1, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 8.0, 9999.0, 7.0, 9999.0 ], + "sb1": 2, + "sb2": 2, + "ob": 0, + "LDB": null, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4365079379889456, 9999.0, 1.2539682480442178, 9999.0, 1.5476190504889455, 9999.0 ], + + "expected_mat": [ + [ 1.4365079379889456 ], + [ 1.2539682480442178 ], + [ 1.5476190504889455 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..eb06a9fb2acd --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_col_major_trans_nrhs_gt_one.json @@ -0,0 +1,71 @@ +{ + "order": "column-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 9999.0, 0.26666667, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 4.0, 9999.0, 3.75, 9999.0, 3.73333333, 9999.0 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 0.73333333, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 1, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 2.0, 9999.0, 1.0, 9999.0, 9999.0, 8.0, 9999.0, 3.0, 9999.0, 1.5, 9999.0, 9999.0, 7.0, 9999.0, 4.0, 9999.0, 2.0, 9999.0, 9999.0 ], + "sb1": 2, + "sb2": 7, + "ob": 0, + "LDB": null, + + "B_mat": [ + [ 7.0, 8.0, 7.0 ], + [ 2.0, 3.0, 4.0 ], + [ 1.0, 1.5, 2.0 ] + ], + + "expected": [ + 1.7503174605488945, + 9999.0, + -0.0012698421955782274, + 9999.0, + 0.25476190504889457, + 9999.0, + 9999.0, + + 1.9566269844548256, + 9999.0, + 0.1734920621806973, + 9999.0, + 0.34940476245482566, + 9999.0, + 9999.0, + + 1.6278571432659439, + 9999.0, + 0.48857142693622446, + 9999.0, + 0.4178571437659439, + 9999.0, + 9999.0 + ], + + "expected_mat": [ + [ 1.7503174605488945, 1.9566269844548256, 1.6278571432659439 ], + [ -0.0012698421955782274, 0.1734920621806973, 0.48857142693622446 ], + [ 0.25476190504889457, 0.34940476245482566, 0.4178571437659439 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_no_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_no_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..24e08981e262 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_no_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 9999.0, 0.5, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 2.0, 9999.0, 1.0, 9999.0, 0.5, 9999.0 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 1.0, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 2, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 2.0, 9999.0, 1.0, 9999.0, 9999.0, 8.0, 9999.0, 3.0, 9999.0, 1.5, 9999.0, 9999.0, 7.0, 9999.0, 4.0, 9999.0, 2.0, 9999.0, 9999.0 ], + "sb1": 7, + "sb2": 2, + "ob": 0, + "LDB": null, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ 1.0, 9999.0, -1.0, 9999.0, -0.5, 9999.0, 9999.0, 5.0, 9999.0, 4.0, 9999.0, 2.0, 9999.0, 9999.0, 2.0, 9999.0, 0.0, 9999.0, 0.0, 9999.0, 9999.0 ], + + "expected_mat": [ + [ 1.0, -1.0, -0.5 ], + [ 5.0, 4.0, 2.0 ], + [ 2.0, 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_no_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_no_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..1da15761d580 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_no_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 9999.0, 0.26666667, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 4.0, 9999.0, 3.75, 9999.0, 3.73333333, 9999.0 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 0.73333333, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 1, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 8.0, 9999.0, 7.0, 9999.0 ], + "sb1": 2, + "sb2": 2, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4031746026466836, 9999.0, 1.3873015894132654, 9999.0, 1.4285714242665817, 9999.0 ], + + "expected_mat": [ + [ 1.4031746026466836 ], + [ 1.3873015894132654 ], + [ 1.4285714242665817 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_no_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_no_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..6b2d7af9e43a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_no_trans_nrhs_gt_one.json @@ -0,0 +1,71 @@ +{ + "order": "row-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 9999.0, 0.26666667, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 4.0, 9999.0, 3.75, 9999.0, 3.73333333, 9999.0 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 0.73333333, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 1, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 2.0, 9999.0, 1.0, 9999.0, 9999.0, 8.0, 9999.0, 3.0, 9999.0, 1.5, 9999.0, 9999.0, 7.0, 9999.0, 4.0, 9999.0, 2.0, 9999.0, 9999.0 ], + "sb1": 7, + "sb2": 2, + "ob": 0, + "LDB": null, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ + 1.4031746026466836, + 9999.0, + 0.3769841267155612, + 9999.0, + 0.1884920633577806, + 9999.0, + 9999.0, + + 1.3873015894132654, + 9999.0, + 0.49206349313775516, + 9999.0, + 0.24603174656887758, + 9999.0, + 9999.0, + + 1.4285714242665817, + 9999.0, + 0.8928571414221939, + 9999.0, + 0.44642857071109693, + 9999.0, + 9999.0 + ], + + "expected_mat": [ + [ 1.4031746026466836, 0.3769841267155612, 0.1884920633577806 ], + [ 1.3873015894132654, 0.49206349313775516, 0.24603174656887758 ], + [ 1.4285714242665817, 0.8928571414221939, 0.44642857071109693 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..24e08981e262 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 9999.0, 0.5, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 2.0, 9999.0, 1.0, 9999.0, 0.5, 9999.0 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 1.0, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 2, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 2.0, 9999.0, 1.0, 9999.0, 9999.0, 8.0, 9999.0, 3.0, 9999.0, 1.5, 9999.0, 9999.0, 7.0, 9999.0, 4.0, 9999.0, 2.0, 9999.0, 9999.0 ], + "sb1": 7, + "sb2": 2, + "ob": 0, + "LDB": null, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ 1.0, 9999.0, -1.0, 9999.0, -0.5, 9999.0, 9999.0, 5.0, 9999.0, 4.0, 9999.0, 2.0, 9999.0, 9999.0, 2.0, 9999.0, 0.0, 9999.0, 0.0, 9999.0, 9999.0 ], + + "expected_mat": [ + [ 1.0, -1.0, -0.5 ], + [ 5.0, 4.0, 2.0 ], + [ 2.0, 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..1ec5f7dfbf1f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 9999.0, 0.26666667, 9999.0 ], + "sdl": 2, + "odl": 0, + + "D": [ 4.0, 9999.0, 3.75, 9999.0, 3.73333333 ], + "sd": 2, + "od": 0, + + "DU": [ 1.0, 9999.0, 0.73333333, 9999.0 ], + "sdu": 2, + "odu": 0, + + "DU2": [ 0.0, 9999.0 ], + "sdu2": 2, + "odu2": 0, + + "IPIV": [ 0, 9999, 1, 9999, 2, 9999 ], + "si": 2, + "oi": 0, + + "B": [ 7.0, 9999.0, 8.0, 9999.0, 7.0, 9999.0 ], + "sb1": 2, + "sb2": 2, + "ob": 0, + "LDB": 1, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4365079379889456, 9999.0, 1.2539682480442178, 9999.0, 1.5476190504889455, 9999.0 ], + + "expected_mat": [ + [ 1.4365079379889456 ], + [ 1.2539682480442178 ], + [ 1.5476190504889455 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..8d49bd81a12a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/positive-strides/pos_stride_row_major_trans_nrhs_gt_one.json @@ -0,0 +1,71 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 9999.0, 2.0, 9999.0, 1.0, 9999.0, 9999.0, 8.0, 9999.0, 3.0, 9999.0, 1.5, 9999.0, 9999.0, 7.0, 9999.0, 4.0, 9999.0, 2.0, 9999.0, 9999.0 ], + "sb1": 7, + "sb2": 2, + "ob": 0, + "LDB": null, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ + 1.4365079379889456, + 9999.0, + 0.39603174691113946, + 9999.0, + 0.19801587345556973, + 9999.0, + 9999.0, + + 1.2539682480442178, + 9999.0, + 0.4158730123554421, + 9999.0, + 0.20793650617772105, + 9999.0, + 9999.0, + + 1.5476190504889455, + 9999.0, + 0.9404761919111395, + 9999.0, + 0.47023809595556976, + 9999.0, + 9999.0 + ], + + "expected_mat": [ + [ 1.4365079379889456, 0.39603174691113946, 0.19801587345556973 ], + [ 1.2539682480442178, 0.4158730123554421, 0.20793650617772105 ], + [ 1.5476190504889455, 0.9404761919111395, 0.47023809595556976 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_no_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_no_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..658e8357c7d9 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_no_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": 1, + "odl": 0, + + "D": [ 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 1.0 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 2, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 3, + "sb2": 1, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ 1.0, -1.0, -0.5, 5.0, 4.0, 2.0, 2.0, 0.0, 0.0 ], + + "expected_mat": [ + [ 1.0, -1.0, -0.5 ], + [ 5.0, 4.0, 2.0 ], + [ 2.0, 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_no_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_no_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..194f7bd7a144 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_no_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "column-major", + + "itrans": 0, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": 1, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4031746026466836, 1.3873015894132654, 1.4285714242665817 ], + + "expected_mat": [ + [ 1.4031746026466836 ], + [ 1.3873015894132654 ], + [ 1.4285714242665817 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_no_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_no_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..b0746e8eaeae --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_no_trans_nrhs_gt_one.json @@ -0,0 +1,57 @@ +{ + "order": "row-major", + + "itrans": 0, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 3, + "sb2": 1, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ + 1.4031746026466836, + 0.3769841267155612, + 0.1884920633577806, + 1.3873015894132654, + 0.49206349313775516, + 0.24603174656887758, + 1.4285714242665817, + 0.8928571414221939, + 0.44642857071109693 + ], + + "expected_mat": [ + [ 1.4031746026466836, 0.3769841267155612, 0.1884920633577806 ], + [ 1.3873015894132654, 0.49206349313775516, 0.24603174656887758 ], + [ 1.4285714242665817, 0.8928571414221939, 0.44642857071109693 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_trans_ipiv_ne_i.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_trans_ipiv_ne_i.json new file mode 100644 index 000000000000..658e8357c7d9 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_trans_ipiv_ne_i.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.5, 0.5 ], + "sdl": 1, + "odl": 0, + + "D": [ 2.0, 1.0, 0.5 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 1.0 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 2, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 3, + "sb2": 1, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ 1.0, -1.0, -0.5, 5.0, 4.0, 2.0, 2.0, 0.0, 0.0 ], + + "expected_mat": [ + [ 1.0, -1.0, -0.5 ], + [ 5.0, 4.0, 2.0 ], + [ 2.0, 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_trans_nrhs_eq_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_trans_nrhs_eq_one.json new file mode 100644 index 000000000000..d3d89d36c3fc --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_trans_nrhs_eq_one.json @@ -0,0 +1,47 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 1, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 8.0, 7.0 ], + "sb1": 1, + "sb2": 1, + "ob": 0, + "LDB": 1, + + "B_mat": [ + [ 7.0 ], + [ 8.0 ], + [ 7.0 ] + ], + + "expected": [ 1.4365079379889456, 1.2539682480442178, 1.5476190504889455 ], + + "expected_mat": [ + [ 1.4365079379889456 ], + [ 1.2539682480442178 ], + [ 1.5476190504889455 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_trans_nrhs_gt_one.json b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_trans_nrhs_gt_one.json new file mode 100644 index 000000000000..90fe82ef09ba --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/fixtures/row_major_trans_nrhs_gt_one.json @@ -0,0 +1,57 @@ +{ + "order": "row-major", + + "itrans": 1, + "N": 3, + "nrhs": 3, + + "DL": [ 0.25, 0.26666667 ], + "sdl": 1, + "odl": 0, + + "D": [ 4.0, 3.75, 3.73333333 ], + "sd": 1, + "od": 0, + + "DU": [ 1.0, 0.73333333 ], + "sdu": 1, + "odu": 0, + + "DU2": [ 0.0 ], + "sdu2": 1, + "odu2": 0, + + "IPIV": [ 0, 1, 2 ], + "si": 1, + "oi": 0, + + "B": [ 7.0, 2.0, 1.0, 8.0, 3.0, 1.5, 7.0, 4.0, 2.0 ], + "sb1": 3, + "sb2": 1, + "ob": 0, + "LDB": 3, + + "B_mat": [ + [ 7.0, 2.0, 1.0 ], + [ 8.0, 3.0, 1.5 ], + [ 7.0, 4.0, 2.0 ] + ], + + "expected": [ + 1.4365079379889456, + 0.39603174691113946, + 0.19801587345556973, + 1.2539682480442178, + 0.4158730123554421, + 0.20793650617772105, + 1.5476190504889455, + 0.9404761919111395, + 0.47023809595556976 + ], + + "expected_mat": [ + [ 1.4365079379889456, 0.39603174691113946, 0.19801587345556973 ], + [ 1.2539682480442178, 0.4158730123554421, 0.20793650617772105 ], + [ 1.5476190504889455, 0.9404761919111395, 0.47023809595556976 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/test.dgtts2.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/test.dgtts2.js new file mode 100644 index 000000000000..3b6d7c4b116d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/test.dgtts2.js @@ -0,0 +1,481 @@ +/** +* @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, id-length */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Int32Array = require( '@stdlib/array/int32' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dgtts2 = require( './../lib/dgtts2.js' ); + + +// FIXTURES // + +var COL_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/col_major_trans_nrhs_gt_one.json' ); +var COL_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/col_major_no_trans_nrhs_gt_one.json' ); +var ROW_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/row_major_trans_nrhs_gt_one.json' ); +var ROW_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/row_major_no_trans_nrhs_gt_one.json' ); + +var COL_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/col_major_no_trans_nrhs_eq_one.json' ); +var COL_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/col_major_trans_nrhs_eq_one.json' ); +var ROW_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/row_major_trans_nrhs_eq_one.json' ); +var ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/row_major_no_trans_nrhs_eq_one.json' ); + +var COL_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/col_major_trans_ipiv_ne_i.json' ); +var COL_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/col_major_no_trans_ipiv_ne_i.json' ); +var ROW_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/row_major_trans_ipiv_ne_i.json' ); +var ROW_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/row_major_no_trans_ipiv_ne_i.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dgtts2, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 11', function test( t ) { + t.strictEqual( dgtts2.length, 11, '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 data; + var i; + + data = COL_MAJOR_TRANS_NRHS_GT_ONE; + + 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() { + dgtts2( value, data.itrans, data.N, data.nrhs, data.DL, data.D, data.DU, data.DU2, data.IPIV, data.B, data.LDB ); + }; + } +}); + +tape( 'the function throws an error if provided an eleventh argument which is not a valid `LDA` value (row-major)', function test( t ) { + var values; + var data; + var i; + + data = ROW_MAJOR_TRANS_NRHS_GT_ONE; + + values = [ + 0, + 1, + 2 + ]; + + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + dgtts2( data.order, data.itrans, data.N, data.nrhs, data.DL, data.D, data.DU, data.DU2, data.IPIV, data.B, value ); + }; + } +}); + +tape( 'the function returns the input array unchanged if N is zero', function test( t ) { + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, 0, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + t.deepEqual( B, X, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.order, data.itrans, data.N, data.nrhs, DL, D, DU, DU2, IPIV, B, data.LDB ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/test.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/test.js new file mode 100644 index 000000000000..c6d966afa132 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/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 dgtts2 = 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 dgtts2, '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 dgtts2.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 dgtts2 = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dgtts2, 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 dgtts2; + var main; + + main = require( './../lib/dgtts2.js' ); + + dgtts2 = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dgtts2, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/lapack/base/dgtts2/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/test.ndarray.js new file mode 100644 index 000000000000..86a8c13921a5 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgtts2/test/test.ndarray.js @@ -0,0 +1,1825 @@ +/** +* @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, id-length, max-lines */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Int32Array = require( '@stdlib/array/int32' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dgtts2 = require( './../lib/ndarray.js' ); + + +// FIXTURES // + +var COL_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/col_major_trans_nrhs_gt_one.json' ); +var COL_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/col_major_no_trans_nrhs_gt_one.json' ); +var ROW_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/row_major_trans_nrhs_gt_one.json' ); +var ROW_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/row_major_no_trans_nrhs_gt_one.json' ); + +var COL_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/col_major_no_trans_nrhs_eq_one.json' ); +var COL_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/col_major_trans_nrhs_eq_one.json' ); +var ROW_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/row_major_trans_nrhs_eq_one.json' ); +var ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/row_major_no_trans_nrhs_eq_one.json' ); + +var COL_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/col_major_trans_ipiv_ne_i.json' ); +var COL_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/col_major_no_trans_ipiv_ne_i.json' ); +var ROW_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/row_major_trans_ipiv_ne_i.json' ); +var ROW_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/row_major_no_trans_ipiv_ne_i.json' ); + +var COMPLEX_ACCESS_COL_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/complex-access/complex_access_col_major_trans_nrhs_gt_one.json' ); +var COMPLEX_ACCESS_COL_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/complex-access/complex_access_col_major_no_trans_nrhs_gt_one.json' ); +var COMPLEX_ACCESS_ROW_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/complex-access/complex_access_row_major_trans_nrhs_gt_one.json' ); +var COMPLEX_ACCESS_ROW_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/complex-access/complex_access_row_major_no_trans_nrhs_gt_one.json' ); + +var COMPLEX_ACCESS_COL_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/complex-access/complex_access_col_major_no_trans_nrhs_eq_one.json' ); +var COMPLEX_ACCESS_COL_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/complex-access/complex_access_col_major_trans_nrhs_eq_one.json' ); +var COMPLEX_ACCESS_ROW_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/complex-access/complex_access_row_major_trans_nrhs_eq_one.json' ); +var COMPLEX_ACCESS_ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/complex-access/complex_access_row_major_no_trans_nrhs_eq_one.json' ); + +var COMPLEX_ACCESS_COL_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/complex-access/complex_access_col_major_trans_ipiv_ne_i.json' ); +var COMPLEX_ACCESS_COL_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/complex-access/complex_access_col_major_no_trans_ipiv_ne_i.json' ); +var COMPLEX_ACCESS_ROW_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/complex-access/complex_access_row_major_trans_ipiv_ne_i.json' ); +var COMPLEX_ACCESS_ROW_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/complex-access/complex_access_row_major_no_trans_ipiv_ne_i.json' ); + +var OFFSET_COL_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/offsets/offset_col_major_trans_nrhs_gt_one.json' ); +var OFFSET_COL_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/offsets/offset_col_major_no_trans_nrhs_gt_one.json' ); +var OFFSET_ROW_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/offsets/offset_row_major_trans_nrhs_gt_one.json' ); +var OFFSET_ROW_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/offsets/offset_row_major_no_trans_nrhs_gt_one.json' ); + +var OFFSET_COL_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/offsets/offset_col_major_no_trans_nrhs_eq_one.json' ); +var OFFSET_COL_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/offsets/offset_col_major_trans_nrhs_eq_one.json' ); +var OFFSET_ROW_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/offsets/offset_row_major_trans_nrhs_eq_one.json' ); +var OFFSET_ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/offsets/offset_row_major_no_trans_nrhs_eq_one.json' ); + +var OFFSET_COL_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/offsets/offset_col_major_trans_ipiv_ne_i.json' ); +var OFFSET_COL_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/offsets/offset_col_major_no_trans_ipiv_ne_i.json' ); +var OFFSET_ROW_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/offsets/offset_row_major_trans_ipiv_ne_i.json' ); +var OFFSET_ROW_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/offsets/offset_row_major_no_trans_ipiv_ne_i.json' ); + +var POS_STRIDE_COL_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/positive-strides/pos_stride_col_major_trans_nrhs_gt_one.json' ); +var POS_STRIDE_COL_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/positive-strides/pos_stride_col_major_no_trans_nrhs_gt_one.json' ); +var POS_STRIDE_ROW_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/positive-strides/pos_stride_row_major_trans_nrhs_gt_one.json' ); +var POS_STRIDE_ROW_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/positive-strides/pos_stride_row_major_no_trans_nrhs_gt_one.json' ); + +var POS_STRIDE_COL_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/positive-strides/pos_stride_col_major_no_trans_nrhs_eq_one.json' ); +var POS_STRIDE_COL_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/positive-strides/pos_stride_col_major_trans_nrhs_eq_one.json' ); +var POS_STRIDE_ROW_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/positive-strides/pos_stride_row_major_trans_nrhs_eq_one.json' ); +var POS_STRIDE_ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/positive-strides/pos_stride_row_major_no_trans_nrhs_eq_one.json' ); + +var POS_STRIDE_COL_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/positive-strides/pos_stride_col_major_trans_ipiv_ne_i.json' ); +var POS_STRIDE_COL_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/positive-strides/pos_stride_col_major_no_trans_ipiv_ne_i.json' ); +var POS_STRIDE_ROW_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/positive-strides/pos_stride_row_major_trans_ipiv_ne_i.json' ); +var POS_STRIDE_ROW_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/positive-strides/pos_stride_row_major_no_trans_ipiv_ne_i.json' ); + +var NEG_STRIDE_COL_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/negative-strides/neg_stride_col_major_trans_nrhs_gt_one.json' ); +var NEG_STRIDE_COL_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/negative-strides/neg_stride_col_major_no_trans_nrhs_gt_one.json' ); +var NEG_STRIDE_ROW_MAJOR_TRANS_NRHS_GT_ONE = require( './fixtures/negative-strides/neg_stride_row_major_trans_nrhs_gt_one.json' ); +var NEG_STRIDE_ROW_MAJOR_NO_TRANS_NRHS_GT_ONE = require( './fixtures/negative-strides/neg_stride_row_major_no_trans_nrhs_gt_one.json' ); + +var NEG_STRIDE_COL_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/negative-strides/neg_stride_col_major_no_trans_nrhs_eq_one.json' ); +var NEG_STRIDE_COL_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/negative-strides/neg_stride_col_major_trans_nrhs_eq_one.json' ); +var NEG_STRIDE_ROW_MAJOR_TRANS_NRHS_EQ_ONE = require( './fixtures/negative-strides/neg_stride_row_major_trans_nrhs_eq_one.json' ); +var NEG_STRIDE_ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE = require( './fixtures/negative-strides/neg_stride_row_major_no_trans_nrhs_eq_one.json' ); + +var NEG_STRIDE_COL_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/negative-strides/neg_stride_col_major_trans_ipiv_ne_i.json' ); +var NEG_STRIDE_COL_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/negative-strides/neg_stride_col_major_no_trans_ipiv_ne_i.json' ); +var NEG_STRIDE_ROW_MAJOR_TRANS_IPIV_NE_I = require( './fixtures/negative-strides/neg_stride_row_major_trans_ipiv_ne_i.json' ); +var NEG_STRIDE_ROW_MAJOR_NO_TRANS_IPIV_NE_I = require( './fixtures/negative-strides/neg_stride_row_major_no_trans_ipiv_ne_i.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dgtts2, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 22', function test( t ) { + t.strictEqual( dgtts2.length, 22, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns the input array unchanged if N is zero', function test( t ) { + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + t.deepEqual( B, X, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COL_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A**T * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function solves A * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = ROW_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_ROW_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_COL_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_COL_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A**T * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_ROW_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A**T * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_ROW_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A**T * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_COL_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A**T * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_COL_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A**T * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_COL_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_COL_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A**T * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_ROW_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter while solving A * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = OFFSET_ROW_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_ROW_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_COL_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_COL_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A**T * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_ROW_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A**T * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_ROW_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A**T * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_COL_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A**T * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_COL_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A**T * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_COL_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_COL_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A**T * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_ROW_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports positive strides while solving A * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = POS_STRIDE_ROW_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_ROW_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_COL_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_COL_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A**T * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_ROW_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A**T * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_ROW_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A**T * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_COL_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A**T * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_COL_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A**T * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_COL_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_COL_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A**T * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_ROW_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides while solving A * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = NEG_STRIDE_ROW_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_ROW_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_ROW_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_COL_MAJOR_NO_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_COL_MAJOR_NO_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A**T * X = B (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_ROW_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A**T * X = B (row-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_ROW_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A**T * X = B (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_COL_MAJOR_TRANS_NRHS_GT_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A**T * X = B (column-major, nrhs <= 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_COL_MAJOR_TRANS_NRHS_EQ_ONE; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A**T * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_COL_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A * X = B when IPIV[ i ] != i (column-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_COL_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A**T * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_ROW_MAJOR_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns while solving A * X = B when IPIV[ i ] != i (row-major, nrhs > 1)', function test( t ) { + var expectedX; + var IPIV; + var data; + var DU2; + var DU; + var DL; + var D; + var B; + var X; + + data = COMPLEX_ACCESS_ROW_MAJOR_NO_TRANS_IPIV_NE_I; + + DL = new Float64Array( data.DL ); + D = new Float64Array( data.D ); + DU = new Float64Array( data.DU ); + DU2 = new Float64Array( data.DU2 ); + IPIV = new Int32Array( data.IPIV ); + B = new Float64Array( data.B ); + + X = dgtts2( data.itrans, data.N, data.nrhs, DL, data.sdl, data.odl, D, data.sd, data.od, DU, data.sdu, data.odu, DU2, data.sdu2, data.odu2, IPIV, data.si, data.oi, B, data.sb1, data.sb2, data.ob ); + + expectedX = new Float64Array( data.expected ); + t.deepEqual( X, expectedX, 'returns expected value' ); + + t.end(); +});