diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/README.md b/lib/node_modules/@stdlib/lapack/base/dlatrs/README.md new file mode 100644 index 000000000000..77ee6ed4b520 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/README.md @@ -0,0 +1,342 @@ + + +# dlatrs + +> LAPACK routine to solve a triangular system of equations with the scale factor set to prevent overflow. + +
+ +The `dlatrs` routine solves a triangular system of linear equations with a scaling factor to prevent overflow. It can handle either the original system or its transpose: + + + +```math +A X = s B \quad \text{or} \quad A^{T} X = s B +``` + + + +where: + +- `A` is an upper or lower triangular matrix, +- `X` is the solution vector, +- `B` is the right-hand side vector, +- `s` is a scaling factor ( 0 < `s` < 1 ) chosen to avoid numerical overflow. + +The routine aims to compute a solution `x` such that the magnitude of all elements in `X` remains safely below the machine overflow threshold. + +If it determines that solving the unscaled system would not lead to overflow, it calls the Level 2 BLAS routine `dtrsv` for a standard triangular solve. Otherwise, `dlatrs` applies additional scaling and iterative techniques to avoid overflow and maintain numerical stability. + +In the presence of a singular matrix `A` (i.e., `A( j, j )` = 0 for some `j`), the scaling factor `s` is set to zero, and a non trivial solution to the homogeneous system: + + + +```math +A X = 0 +``` + + + +is returned instead. + +To ensure stability during the solve, `dlatrs` relies on several internal estimates, including: + +- the off diagonal column norms, +- the scaling factor `s`, +- and an estimate of the maximum element in the intermediate vector `X`. + +The algorithm may scale `X` at various stages using a factor `scale`, such that the final computed result satisfies: + + + +```math +x \leftarrow scale \cdot x +``` + + + +This ensures both correctness and numerical safety when solving the triangular system under limited-precision arithmetic. + +
+ + + +
+ +## Usage + +```javascript +var dlatrs = require( '@stdlib/lapack/base/dlatrs' ); +``` + +#### dlatrs( order, uplo, trans, diag, normin, N, A, LDA, X, CNORM ) + +Solves a triangular system of equations with the scale factor set to prevent overflow. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var A = new Float64Array( [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] +var X = new Float64Array( [ 5.0, 10.0, 20.0 ] ); +var CNORM = new Float64Array( 3 ); + +var scale = dlatrs( 'row-major', 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, X, CNORM ); +// returns 1.0 +// X => [ 5.0, 0.0, 5.0 ] +// CNORM => [ 0.0, 1.0, 3.0 ] +``` + +The function has the following parameters: + +- **order**: storage layout. +- **uplo**: specifies whether `A` is an upper or lower triangular matrix. +- **trans**: specifies whether `A` should be transposed, conjugate-transposed, or not transposed. +- **diag**: specifies whether `A` has a unit diagonal. +- **normin**: specifies whether `CNORM` has the column norms on entry or not, should be either `yes` or `no`. +- **N**: number of elements along each dimension of `A`. +- **A**: input matrix stored in linear memory as a [`Float64Array`][mdn-float64array]. +- **LDA**: stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`). +- **X**: input vector [`Float64Array`][mdn-float64array] describing the right hand side `B`, should have `N` elements. +- **CNORM**: [`Float64Array`][mdn-float64array] used to store the column norms of `A`, should have `N` elements. + +`X` is overwritten by the solution vector on the left hand side. If `normin` is `yes` then `CNORM` is an input parameter and it should contain the off diagonal column norms of `A`, else `CNORM` is overwritten by the off diagonal column norms computed by the routine + +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' ); +var dlatrs = require( '@stdlib/lapack/base/dlatrs' ); + +// Initial arrays... +var A0 = new Float64Array( [ 9999.0, 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] +var X0 = new Float64Array( [ 9999.0, 5.0, 10.0, 20.0 ] ); +var CNORM0 = new Float64Array( 4 ); + +// Create offset views... +var A = new Float64Array( A0.buffer, A0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var X = new Float64Array( X0.buffer, X0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var CNORM = new Float64Array( CNORM0.buffer, CNORM0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +var scale = dlatrs( 'row-major', 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, X, CNORM ); +// returns 1.0 +// X0 => [ 9999.0, 5.0, 0.0, 5.0 ] +// CNORM0 => [ 0.0, 0.0, 1.0, 3.0 ] +``` + + + +#### dlatrs.ndarray( uplo, trans, diag, normin, N, A, sa1, sa2, oa, X, sx, ox, CNORM, sc, oc ) + +Solves a triangular system of equations with the scale factor set to prevent overflow using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var A = new Float64Array( [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] +var X = new Float64Array( [ 5.0, 10.0, 20.0 ] ); +var CNORM = new Float64Array( 3 ); + +var scale = dlatrs.ndarray( 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, 1, 0, X, 1, 0, CNORM, 1, 0 ); +// returns 1.0 +// X => [ 5.0, 0.0, 5.0 ] +// CNORM => [ 0.0, 1.0, 3.0 ] +``` + +The function has the following additional parameters: + +- **sa1**: stride of the first dimensiosn of `A`. +- **sa2**: stride of the second dimension of `A`. +- **oa**: starting index for `A`. +- **sx**: stride length for `X`. +- **ox**: starting index for `X`. +- **sc**: stride length for `CNORM`. +- **oc**: starting index for `CNORM`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, + + + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var A = new Float64Array( [ 9999.0, 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] +var X = new Float64Array( [ 9999.0, 5.0, 10.0, 20.0 ] ); +var CNORM = new Float64Array( 4 ); + +var scale = dlatrs.ndarray( 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, 1, 1, X, 1, 1, CNORM, 1, 1 ); +// returns 1.0 +// X => [ 9999.0, 5.0, 0.0, 5.0 ] +// CNORM => [ 0.0, 0.0, 1.0, 3.0 ] +``` + +
+ + + +
+ +## Notes + +- Both functions mutate the input arrays `X` and `CNORM` (if `normin` = `no`). +- `dlatrs()` corresponds to the [LAPACK][LAPACK] routine [`dlatrs`][lapack-dlatrs]. + +
+ + + +
+ +## Examples + + + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var ndarray2array = require( '@stdlib/ndarray/base/to-array' ); +var dlatrs = require( '@stdlib/lapack/base/dlatrs' ); + +// Specify matrix meta data: +var shape = [ 3, 3 ]; +var strides = [ 3, 1 ]; +var offset = 0; +var N = numel( shape ); +var order = 'row-major'; + +// Create a matrix stored in linear memory: +var A = uniform( N, 2.0, 10.0, { + 'dtype': 'float64' +}); + +console.log( ndarray2array( A, shape, strides, offset, order ) ); + +var X = uniform( shape[ 0 ], 0.0, 10.0, { + 'dtype': 'float64' +}); + +var CNORM = new Float64Array( shape[ 0 ] ); + +var scale = dlatrs( order, 'upper', 'no-transpose', 'non-unit', 'no', shape[ 0 ], A, strides[ 0 ], X, CNORM ); +console.log( ndarray2array( A, shape, strides, offset, order ) ); +console.log( 'scaling factor: ', scale ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +TODO +``` + +#### TODO + +TODO. + +```c +TODO +``` + +TODO + +```c +TODO +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +TODO +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/benchmark/benchmark.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/benchmark/benchmark.js new file mode 100644 index 000000000000..b3ecacc8ba95 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/benchmark/benchmark.js @@ -0,0 +1,141 @@ +/** +* @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 Float64Array = require( '@stdlib/array/float64' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var pkg = require( './../package.json' ).name; +var dlatrs = require( './../lib/dlatrs.js' ); + + +// VARIABLES // + +var LAYOUTS = [ + 'row-major', + 'column-major' +]; +var MATRIX_TRIANGLES = [ + 'upper', + 'lower' +]; +var TRANSPOSE_OPS = [ + 'transpose', + 'no-transpose' +]; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {string} order - storage layout +* @param {PositiveInteger} N - number of elements along each dimension +* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {string} trans - specifies whether `A` should be transposed or not transposed +* @returns {Function} benchmark function +*/ +function createBenchmark( order, N, uplo, trans ) { + var CNORM; + var X; + var A; + + A = uniform( N*N, 2.0, 10.0, { + 'dtype': 'float64' + }); + X = uniform( N, 1.0, 10.0, { + 'dtype': 'float64' + }); + CNORM = new Float64Array( N ); + 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 = dlatrs( order, uplo, trans, 'non-unit', 'no', N, A, N, X, CNORM ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var trans; + var uplo; + var min; + var max; + var ord; + var N; + var f; + var i; + var j; + var k; + var l; + + min = 1; // 10^min + max = 6; // 10^max + + for ( k = 0; k < LAYOUTS.length; k++ ) { + ord = LAYOUTS[ k ]; + for ( i = min; i <= max; i++ ) { + N = floor( pow( pow( 10, i ), 1.0/2.0 ) ); + for ( j = 0; j < MATRIX_TRIANGLES.length; j++ ) { + uplo = MATRIX_TRIANGLES[ j ]; + for ( l = 0; l < TRANSPOSE_OPS.length; l++ ) { + trans = TRANSPOSE_OPS[ l ]; + f = createBenchmark( ord, N, uplo, trans ); + bench( pkg+'::square_matrix:order='+ord+',uplo='+uplo+',trans='+trans+',size='+(N*N), f ); + } + } + } + } +} + +main(); diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..576cab4474a9 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/benchmark/benchmark.ndarray.js @@ -0,0 +1,151 @@ +/** +* @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 Float64Array = require( '@stdlib/array/float64' ); +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 floor = require( '@stdlib/math/base/special/floor' ); +var pkg = require( './../package.json' ).name; +var dlatrs = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var LAYOUTS = [ + 'row-major', + 'column-major' +]; +var MATRIX_TRIANGLES = [ + 'upper', + 'lower' +]; +var TRANSPOSE_OPS = [ + 'transpose', + 'no-transpose' +]; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {string} order - storage layout +* @param {PositiveInteger} N - number of elements along each dimension +* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {string} trans - specifies whether `A` should be transposed or not transposed +* @returns {Function} benchmark function +*/ +function createBenchmark( order, N, uplo, trans ) { + var CNORM; + var sa1; + var sa2; + var X; + var A; + + A = uniform( N*N, 2.0, 10.0, { + 'dtype': 'float64' + }); + X = uniform( N, 1.0, 10.0, { + 'dtype': 'float64' + }); + if ( isColumnMajor( order ) ) { + sa1 = 1; + sa2 = N; + } else { // order === 'row-major' + sa1 = N; + sa2 = 1; + } + CNORM = new Float64Array( N ); + 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 = dlatrs( uplo, trans, 'non-unit', 'no', N, A, sa1, sa2, 0, X, 1, 0, CNORM, 1, 0 ); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var trans; + var uplo; + var min; + var max; + var ord; + var N; + var f; + var i; + var j; + var k; + var l; + + min = 1; // 10^min + max = 6; // 10^max + + for ( k = 0; k < LAYOUTS.length; k++ ) { + ord = LAYOUTS[ k ]; + for ( i = min; i <= max; i++ ) { + N = floor( pow( pow( 10, i ), 1.0/2.0 ) ); + for ( j = 0; j < MATRIX_TRIANGLES.length; j++ ) { + uplo = MATRIX_TRIANGLES[ j ]; + for ( l = 0; l < TRANSPOSE_OPS.length; l++ ) { + trans = TRANSPOSE_OPS[ l ]; + f = createBenchmark( ord, N, uplo, trans ); + bench( pkg+'::square_matrix:order='+ord+',uplo='+uplo+',trans='+trans+',size='+(N*N), f ); + } + } + } + } +} + +main(); diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/docs/repl.txt b/lib/node_modules/@stdlib/lapack/base/dlatrs/docs/repl.txt new file mode 100644 index 000000000000..6d9e71b60f5c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/docs/repl.txt @@ -0,0 +1,151 @@ + +{{alias}}( order, uplo, trans, diag, normin, N, A, LDA, X, CNORM ) + Solves a triangular system of linear equations with a scaling factor + to prevent overflow. It can handle either the original system or its + transpose. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + Parameters + ---------- + order: string + Row-major (C-style) or column-major (Fortran-style) order. Must be + either 'row-major' or 'column-major'. + + uplo: string + Specifies whether to copy the upper or lower triangular/trapezoidal part + of a matrix `A`. + + trans: string + Specifies whether `A` should be transposed, conjugate-transposed, or not + transposed. + + diag: string + Specifies whether `A` has a unit diagonal. + + normin: string + Specifies whether `CNORM` has the column norms on entry or not, should + be either `yes` or `no`. + + N: integer + Number of rows/columns in `A`. + + A: Float64Array + Input matrix `A`. + + LDA: integer + Stride of the first dimension of `A` (a.k.a., leading dimension of the + matrix `A`). + + X: Float64Array + Input vector, stores the right hand side vector `B`, overwritten by the + solution vector `X`. + + CNORM: Float64Array + Used to store the column norms of `A`, should have `N` elements. + + Returns + ------- + scale: number + Scaling factor. + + Examples + -------- + > var A = new {{alias:@stdlib/array/float64}}( [ 4.0, 2.0, 0.0, 3.0 ] ); + > var X = new {{alias:@stdlib/array/float64}}( [ 10.0, 9.0 ] ); + > var CNORM = new {{alias:@stdlib/array/float64}}( 2 ); + > var ord = 'row-major'; + > var uplo = 'upper'; + > var tran = 'no-transpose'; + > var diag = 'non-unit'; + > {{alias}}( ord, uplo, tran, diag, 'no', 2, A, 2, X, CNORM ) + 1.0 + > X + [ 1.0, 3.0 ] + > CNORM + [ 0.0, 2.0 ] + + +{{alias}}.ndarray( uplo,tran,dia,norm, N, A,sa1,sa2,oa, X,sx,ox, CNORM,sc,oc ) + Solves a triangular system of linear equations with a scaling factor + to prevent overflow using alternative indexing semantics. It can handle + either the original system or its transpose. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + uplo: string + Specifies whether to copy the upper or lower triangular/trapezoidal part + of a matrix `A`. + + tran: string + Specifies whether `A` should be transposed, conjugate-transposed, or not + transposed. + + dia: string + Specifies whether `A` has a unit diagonal. + + norm: string + Specifies whether `CNORM` has the column norms on entry or not, should + be either `yes` or `no`. + + N: integer + Number of rows/columns in `A`. + + A: Float64Array + Input matrix `A`. + + sa1: integer + Stride of the first dimension of `A`. + + sa2: integer + Stride of the second dimension of `A`. + + oa: integer + Starting index for `A`. + + X: Float64Array + Input vector, stores the right hand side vector `B`, overwritten by the + solution vector `X`. + + sx: integer + Index increment for `X`. + + ox: integer + Starting index for `X`. + + CNORM: Float64Array + Used to store the column norms of `A`, should have `N` elements. + + sc: integer + Index increment for `CNORM`. + + oc: integer + Starting index for `CNORM`. + + Returns + ------- + scale: number + Scaling factor. + + Examples + -------- + > var A = new {{alias:@stdlib/array/float64}}( [ 4.0, 2.0, 0.0, 3.0 ] ); + > var X = new {{alias:@stdlib/array/float64}}( [ 10.0, 9.0 ] ); + > var CNORM = new {{alias:@stdlib/array/float64}}( 2 ); + > var uplo = 'upper'; + > var tran = 'no-transpose'; + > var diag = 'non-unit'; + > {{alias}}.ndarray( uplo,tran,diag, 'no', 2, A, 2,1,0, X,1,0, CNORM,1,0 ) + 1.0 + > X + [ 1.0, 3.0 ] + > CNORM + [ 0.0, 2.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/docs/types/index.d.ts b/lib/node_modules/@stdlib/lapack/base/dlatrs/docs/types/index.d.ts new file mode 100644 index 000000000000..7086f9835053 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/docs/types/index.d.ts @@ -0,0 +1,142 @@ +/* +* @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, DiagonalType, MatrixTriangle, TransposeOperation } from '@stdlib/types/blas'; + +/** +* Specifies whether `CNORM` contains the column norms or do they have to be calculated. +*/ +type Normin = 'yes' | 'no'; + +/** +* Interface describing `dlatrs`. +*/ +interface Routine { + /** + * Solves a triangular system of equations with the scale factor set to prevent overflow. + * + * @param order - storage layout + * @param uplo - specifies whether `A` is an upper or lower triangular matrix + * @param trans - specifies whether `A` should be transposed or not transposed + * @param diag - specifies whether `A` has a unit diagonal + * @param normin - specifies whether `CNORM` has been set or not + * @param N - number of rows/columns in `A` + * @param A - input matrix + * @param LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`) + * @param X - input vector, specifies the right hand side vector of the equation + * @param CNORM - used to store the column norms + * @returns permuted matrix `A` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var A = new Float64Array( [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] + * var X = new Float64Array( [ 5.0, 10.0, 20,0 ] ); + * var CNORM = new Float64Array( 3 ); + * + * var scale = dlatrs( 'row-major', 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, X, CNORM ); + * // returns 1.0 + * // X => [ 5.0, 0.0, 5.0 ] + * // CNORM => [ 0.0, 1.0, 3.0 ] + */ + ( order: Layout, uplo: MatrixTriangle, trans: TransposeOperation, diag: DiagonalType, normin: Normin, N: number, A: Float64Array, LDA: number, X: Float64Array, CNORM: Float64Array ): number; + + /** + * Solves a triangular system of equations with the scale factor set to prevent overflow using alternative indexing semantics. + * + * @param uplo - specifies whether `A` is an upper or lower triangular matrix + * @param trans - specifies whether `A` should be transposed or not transposed + * @param diag - specifies whether `A` has a unit diagonal + * @param normin - specifies whether `CNORM` has been set or not + * @param N - number of rows/columns in `A` + * @param A - input matrix + * @param strideA1 - stride of the first dimension of `A` + * @param strideA2 - stride of the second dimension of `A` + * @param offsetA - starting index for `A` + * @param X - input vector, specifies the right hand side vector of the equation + * @param strideX - stride length for `X` + * @param offsetX - starting index for `X` + * @param CNORM - used to store the column norms + * @param strideCNORM - stride length for `CNORM` + * @param offsetCNORM - starting index for `CNORM` + * @returns permuted matrix `A` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var A = new Float64Array( [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] + * var X = new Float64Array( [ 5.0, 10.0, 20,0 ] ); + * var CNORM = new Float64Array( 3 ); + * + * var scale = dlatrs.ndarray( 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, 1, 0, X, 1, 0, CNORM, 1, 0 ); + * // returns 1.0 + * // X => [ 5.0, 0.0, 5.0 ] + * // CNORM => [ 0.0, 1.0, 3.0 ] + */ + ndarray( uplo: MatrixTriangle, trans: TransposeOperation, diag: DiagonalType, normin: Normin, N: number, A: Float64Array, strideA1: number, strideA2: number, offsetA: number, X: Float64Array, strideX: number, offsetX: number, CNORM: Float64Array, strideCNORM: number, offsetCNORM: number ): number; +} + +/** +* Solves a triangular system of equations with the scale factor set to prevent overflow. +* +* @param order - storage layout +* @param uplo - specifies whether `A` is an upper or lower triangular matrix +* @param trans - specifies whether `A` should be transposed or not transposed +* @param diag - specifies whether `A` has a unit diagonal +* @param normin - specifies whether `CNORM` has been set or not +* @param N - number of rows/columns in `A` +* @param A - input matrix +* @param LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`) +* @param X - input vector, specifies the right hand side vector of the equation +* @param CNORM - used to store the column norms +* @returns permuted matrix `A` +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] +* var X = new Float64Array( [ 5.0, 10.0, 20,0 ] ); +* var CNORM = new Float64Array( 3 ); +* +* var scale = dlatrs( 'row-major', 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, X, CNORM ); +* // returns 1.0 +* // X => [ 5.0, 0.0, 5.0 ] +* // CNORM => [ 0.0, 1.0, 3.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] +* var X = new Float64Array( [ 5.0, 10.0, 20,0 ] ); +* var CNORM = new Float64Array( 3 ); +* +* var scale = dlatrs.ndarray( 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, 1, 0, X, 1, 0, CNORM, 1, 0 ); +* // returns 1.0 +* // X => [ 5.0, 0.0, 5.0 ] +* // CNORM => [ 0.0, 1.0, 3.0 ] +*/ +declare var dlatrs: Routine; + + +// EXPORTS // + +export = dlatrs; diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/docs/types/test.ts b/lib/node_modules/@stdlib/lapack/base/dlatrs/docs/types/test.ts new file mode 100644 index 000000000000..18cad3e2259b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/docs/types/test.ts @@ -0,0 +1,480 @@ +/* +* @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 dlatrs = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a string... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs( 5, 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( true, 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( false, 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( null, 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( void 0, 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( [], 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( {}, 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( ( x: number ): number => x, 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError +} +// The compiler throws an error if the function is provided a second argument which is not a string... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs( 'row-major', 5, 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', true, 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', false, 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', null, 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', void 0, 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', [], 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', {}, 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', ( x: number ): number => x, 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a string... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs( 'row-major', 'lower', 5, 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', true, 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', false, 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', null, 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', void 0, 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', [], 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', {}, 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', ( x: number ): number => x, 'non-unit', 'no', 2, A, 2, X, CNORM ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a string... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs( 'row-major', 'lower', 'no-transpose', 5, 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', true, 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', false, 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', null, 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', void 0, 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', [], 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', {}, 'no', 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', ( x: number ): number => x, 'no', 2, A, 2, X, CNORM ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a string... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 5, 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', true, 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', false, 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', null, 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', void 0, 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', [], 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', {}, 2, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', ( x: number ): number => x, 2, A, 2, X, CNORM ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', '2', A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', true, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', false, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', null, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', void 0, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', [], A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', {}, A, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', ( x: number ): number => x, A, 2, X, CNORM ); // $ExpectError +} + +// The compiler throws an error if the function is provided a seventh argument which is not a Float64Array... +{ + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, 'A', 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, 5, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, true, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, false, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, null, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, void 0, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, [], 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, {}, 2, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, ( x: number ): number => x, 2, X, CNORM ); // $ExpectError +} + +// The compiler throws an error if the function is provided an eighth argument which is not a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, '2', X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, true, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, false, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, null, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, void 0, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, [], X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, {}, X, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, ( x: number ): number => x, X, CNORM ); // $ExpectError +} + +// The compiler throws an error if the function is provided a ninth argument which is not a Float64Array... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 'X', CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 5, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, true, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, false, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, null, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, void 0, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, [], CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, {}, CNORM ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, ( x: number ): number => x, CNORM ); // $ExpectError +} + +// The compiler throws an error if the function is provided a tenth argument which is not a Float64Array... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, 'CNORM' ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, 5 ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, true ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, false ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, null ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, void 0 ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, [] ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, {} ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs(); // $ExpectError + dlatrs( 'row-major' ); // $ExpectError + dlatrs( 'row-major', 'lower' ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose' ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit' ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no' ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2 ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2 ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X ); // $ExpectError + dlatrs( 'row-major', 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, X, CNORM, 1 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a string... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 5, 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( true, 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( false, 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( null, 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( void 0, 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( [], 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( {}, 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( ( x: number ): number => x, 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a string... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 5, 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', true, 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', false, 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', null, 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', void 0, 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', [], 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', {}, 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', ( x: number ): number => x, 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a string... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 2, 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', true, 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', false, 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', null, 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', void 0, 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', [], 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', {}, 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', ( x: number ): number => x, 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a string... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 2, 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', true, 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', false, 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', null, 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', void 0, 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', [], 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', {}, 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', ( x: number ): number => x, 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', '2', A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', true, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', false, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', null, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', void 0, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', [], A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', {}, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', ( x: number ): number => x, A, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a Float64Array... +{ + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, 'A', 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, 5, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, true, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, false, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, null, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, void 0, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, [], 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, {}, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, ( x: number ): number => x, 2, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a seventh argument which is not a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, '2', 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, true, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, false, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, null, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, void 0, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, [], 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, {}, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, ( x: number ): number => x, 1, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided an eighth argument which is not a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, '1', 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, true, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, false, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, null, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, void 0, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, [], 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, {}, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, ( x: number ): number => x, 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a ninth argument which is not a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, '0', X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, true, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, false, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, null, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, void 0, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, [], X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, {}, X, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, ( x: number ): number => x, X, 1, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a tenth argument which is not a Float64Array... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, 'X', 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, 5, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, true, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, false, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, null, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, void 0, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, [], 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, {}, 1, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, ( x: number ): number => x, 1, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided an eleventh argument which is not a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, '1', 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, true, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, false, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, null, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, void 0, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, [], 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, {}, 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, ( x: number ): number => x, 0, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a twelvth argument which is not a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, '0', CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, true, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, false, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, null, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, void 0, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, [], CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, {}, CNORM, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, ( x: number ): number => x, CNORM, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a thirteenth argument which is not a Float64Array... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, 'CNORM', 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, 5, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, true, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, false, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, null, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, void 0, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, [], 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, {}, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourteenth argument which is not a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, '1', 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, true, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, false, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, null, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, void 0, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, [], 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, {}, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifteenth argument which is not a number... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, '0' ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, true ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, false ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, null ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, void 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, [] ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, {} ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + const X = new Float64Array( [ 1.0, 2.0 ] ); + const CNORM = new Float64Array( 2 ); + + dlatrs.ndarray(); // $ExpectError + dlatrs.ndarray( 'lower' ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose' ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit' ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no' ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0 ); // $ExpectError + dlatrs.ndarray( 'lower', 'no-transpose', 'non-unit', 'no', 2, A, 2, 1, 0, X, 1, 0, CNORM ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/examples/index.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/examples/index.js new file mode 100644 index 000000000000..c268931280d2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/examples/index.js @@ -0,0 +1,49 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var Float64Array = require( '@stdlib/array/float64' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var ndarray2array = require( '@stdlib/ndarray/base/to-array' ); +var dlatrs = require( './../lib' ); + +// Specify matrix meta data: +var shape = [ 3, 3 ]; +var strides = [ 3, 1 ]; +var offset = 0; +var N = numel( shape ); +var order = 'row-major'; + +// Create a matrix stored in linear memory: +var A = uniform( N, 2.0, 10.0, { + 'dtype': 'float64' +}); + +console.log( ndarray2array( A, shape, strides, offset, order ) ); + +var X = uniform( shape[ 0 ], 0.0, 10.0, { + 'dtype': 'float64' +}); + +var CNORM = new Float64Array( shape[ 0 ] ); + +var scale = dlatrs( order, 'upper', 'no-transpose', 'non-unit', 'no', shape[ 0 ], A, strides[ 0 ], X, CNORM ); +console.log( ndarray2array( A, shape, strides, offset, order ) ); +console.log( 'scaling factor: ', scale ); diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/base.js new file mode 100644 index 000000000000..9d3f805ede52 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/base.js @@ -0,0 +1,595 @@ +/** +* @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'; + +/* eslint-disable max-len, max-params, max-depth, max-statements, max-lines-per-function, no-lonely-if, max-lines */ + +// MODULES // + +var dlamch = require( '@stdlib/lapack/base/dlamch' ); +var dtrsv = require( '@stdlib/blas/base/dtrsv' ).ndarray; +var idamax = require( '@stdlib/blas/base/idamax' ).ndarray; +var daxpy = require( '@stdlib/blas/base/daxpy' ).ndarray; +var dscal = require( '@stdlib/blas/base/dscal' ).ndarray; +var abs = require( '@stdlib/math/base/special/abs' ); +var max = require( '@stdlib/math/base/special/max' ); +var ddot = require( '@stdlib/blas/base/ddot' ).ndarray; +var min = require( '@stdlib/math/base/special/min' ); +var dasum = require( '@stdlib/blas/base/dasum' ).ndarray; +var dlange = require( './dlange.js' ); + + +// VARIABLES // + +var smlnum = dlamch( 'safe minimum' ) / dlamch( 'precision' ); +var bignum = 1.0 / smlnum; + + +// MAIN // + +/** +* Solves a triangular system of equations with the scale factor set to prevent overflow. +* +* @private +* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {string} trans - specifies whether `A` should be transposed or not transposed +* @param {string} diag - specifies whether `A` has a unit diagonal +* @param {string} normin - specifies whether `CNORM` has been set or not +* @param {NonNegativeInteger} N - number of rows/columns in `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @param {Float64Array} X - input vector, specifies the right hand side vector of the equation +* @param {integer} strideX - stride length for `X` +* @param {NonNegativeInteger} offsetX - starting index for `X` +* @param {Float64Array} CNORM - used to store the column norms +* @param {integer} strideCNORM - stride length for `CNORM` +* @param {NonNegativeInteger} offsetCNORM - starting index for `CNORM` +* @returns {number} scaling factor +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] +* var X = new Float64Array( [ 5.0, 10.0, 20,0 ] ); +* var CNORM = new Float64Array( 3 ); +* +* var scale = dlatrs( 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, 1, 0, X, 1, 0, CNORM, 1, 0 ); +* // returns 1.0 +* // X => [ 5.0, 0.0, 5.0 ] +* // CNORM => [ 0.0, 1.0, 3.0 ] +*/ +function dlatrs( uplo, trans, diag, normin, N, A, strideA1, strideA2, offsetA, X, strideX, offsetX, CNORM, strideCNORM, offsetCNORM ) { + var jfirst; + var scale; + var jlast; + var tscal; + var uscal; + var GOTO; + var jinc; + var imax; + var tmax; + var xmax; + var grow; + var xbnd; + var tjjs; + var sumj; + var tjj; + var rec; + var ix1; + var ia1; + var ia2; + var ia; + var xj; + var ix; + var ic; + var j; + var i; + + scale = 1.0; + if ( N === 0 ) { + return 1.0; + } + + // Compute the 1 norm of each column excluding the diagonal elements + if ( normin === 'no' ) { + if ( uplo === 'upper' ) { // upper triangular + ic = offsetCNORM; + ia = offsetA; + for ( j = 0; j < N; j++ ) { + CNORM[ ic ] = dasum( j, A, strideA1, ia ); + ia += strideA2; + ic += strideCNORM; + } + } else { // lower triangular + ic = offsetCNORM; + ia = offsetA + strideA1; // follows A( j+1, j ) + for ( j = 0; j < N - 1; j++ ) { + CNORM[ ic ] = dasum( N - ( j + 1 ), A, strideA1, ia ); + ic += strideCNORM; + ia += strideA1 + strideA2; + } + CNORM[ ic ] = 0.0; + } + } + + // Scale the column norms by `tscal` if the maximum element in `CNORM` is greater than `bignum` + imax = idamax( N, CNORM, strideCNORM, offsetCNORM ); + tmax = CNORM[ offsetCNORM + ( imax * strideCNORM ) ]; + if ( tmax <= bignum ) { + // All entries in `CNORM` are valid floating point numbers... + tscal = 1.0; + } else { + // At least one entry in `CNORM` can't be represented as a floating point number. Find the largest off diagonal element, if this is not `Infinity` use it as `tscal`... + if ( tmax <= dlamch( 'overflow' ) ) { + tscal = 1.0 / ( smlnum * tmax ); + dscal( N, tscal, CNORM, strideCNORM, offsetCNORM ); + } else { + tmax = 0.0; + if ( uplo === 'upper' ) { + // Upper triangular + ia = offsetA + strideA2; + for ( j = 1; j < N; j++ ) { + tmax = max( dlange( 'max', j, 1, A, strideA1, strideA2, ia ), tmax ); + ia += strideA2; + } + } else { + // Lower triangular + ia = offsetA + strideA1; + for ( j = 0; j < N - 1; j++ ) { + tmax = max( dlange( 'max', N - ( j + 1 ), 1, A, strideA1, strideA2, ia ), tmax ); + ia += strideA1 + strideA2; + } + } + + if ( tmax <= dlamch( 'overflow' ) ) { + tscal = 1.0 / ( smlnum * tmax ); + ic = offsetCNORM; + ia2 = offsetA; + for ( j = 0; j < N; j++ ) { + if ( CNORM[ ic ] <= dlamch( 'overflow' ) ) { + CNORM[ ic ] *= tscal; + } else { + // Recompute the 1 norm without introducing infinity in the summation + CNORM[ ic ] = 0.0; + if ( uplo === 'upper' ) { + ia1 = 0; + for ( i = 0; i < j; i++ ) { + CNORM[ ic ] += ( tscal * abs( A[ ia1 + ia2 ] ) ); + ia1 += strideA1; + } + } else { + ia1 = 0; + for ( i = j+1; i < N; i++ ) { + CNORM[ ic ] += ( tscal * abs( A[ ia1 + ia2 ] ) ); + ia1 += strideA1; + } + } + } + ic += strideCNORM; + ia2 += strideA2; + } + } else { + // At least one entry in `A` is not a valid floating point number, use `dtrsv` to propagate `Infinity` and `NaN` + dtrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, X, strideX, offsetX ); + return scale; + } + } + } + + // Compute the bound on the computed solution vector to see if `dtrsv` can be used. + j = idamax( N, X, strideX, offsetX ); + xmax = abs( X[ offsetX + ( j * strideX ) ] ); + xbnd = xmax; + + if ( trans === 'no-transpose' ) { + // Compute the growth in A * X = B + if ( uplo === 'upper' ) { + jfirst = N - 1; + jlast = 0; + jinc = -1; + } else { + jfirst = 0; + jlast = N - 1; + jinc = 1; + } + + GOTO = false; + if ( tscal !== 1.0 ) { + grow = 0.0; + GOTO = true; + } + + if ( !GOTO ) { + if ( diag === 'non-unit' ) { + /* + A is non-unit and triangular + Compute `grow` = 1 / G( j ), `xbnd` = 1 / M( j ). Initially G( 0 ) = max( X( i ), for 0 <= i < N ) + */ + grow = 1.0 / max( xbnd, smlnum ); + xbnd = grow; + ic = offsetCNORM + ( jfirst * strideCNORM ); + ia = offsetA + ( jfirst * ( strideA1 + strideA2 ) ); + for ( j = jfirst; (jinc > 0) ? j <= jlast : j >= jlast; j += jinc ) { + if ( grow <= smlnum ) { + // Exit the loop if the growth factor is very small. + GOTO = true; + break; + } + + // M( j ) = G( j - 1 ) / abs( A( j, j ) ) + tjj = abs( A[ ia ] ); + xbnd = min( xbnd, min( 1.0, tjj ) * grow ); + if ( tjj + CNORM[ ic ] >= smlnum ) { + // G( j ) = G( j - 1 ) * ( 1 + CNORM( j ) / abs( A( j, j ) ) ) + grow *= tjj / ( tjj + CNORM[ ic ] ); + } else { + // G( j ) could overflow, set grow to 0 + grow = 0.0; + } + + ia += jinc * ( strideA1 + strideA2 ); + ic += jinc * ( strideCNORM ); + } + if ( !GOTO ) { + // Control should only reach here if loop exits normally and doesn't "break". + grow = xbnd; + } + } else { + /* + A is unit and triangular. + Compute `grow` = 1 / G( j ), where G( 0 ) = max( X( i ), for 0 <= i < N ) + */ + grow = min( 1.0, 1.0 / max( xbnd, smlnum ) ); + ic = offsetCNORM + ( jfirst * strideCNORM ); + for ( j = jfirst; (jinc > 0) ? j <= jlast : j >= jlast; j+= jinc ) { + if ( grow <= smlnum ) { + // Exit the loop if the growth factor is too small. + break; + } + // G( j ) = G( j - 1 ) * ( 1 + CNORM( j ) ) + grow *= 1.0 / ( 1.0 + CNORM[ ic ] ); + ic += strideCNORM; + } + } + } + } else { + // Compute the growth in A^T * X = B + if ( uplo === 'upper' ) { + jfirst = 0; + jlast = N-1; + jinc = 1; + } else { + jfirst = N-1; + jlast = 0; + jinc = -1; + } + + GOTO = false; + if ( tscal !== 1.0 ) { + grow = 0.0; + GOTO = true; + } + + if ( !GOTO ) { + if ( diag === 'non-unit' ) { + /* + A is non-unit triangular. + Compute grow = 1 / G( j ) and xbnd = 1 / M( j ). Initially, M( 0 ) = max( X( i ), for 0 <= i < N ) + */ + grow = 1.0 / max( xbnd, smlnum ); + xbnd = grow; + ia = offsetA + ( jfirst * ( strideA1 + strideA2 ) ); // tracks A( j, j ) + ic = offsetCNORM + ( jfirst * strideCNORM ); // tracks CNORM( j ) + + for ( j = jfirst; (jinc > 0) ? j <= jlast : j >= jlast; j+=jinc ) { + if ( grow <= smlnum ) { + // Exit the loop if grow is too small. + GOTO = true; + break; + } + + // G( j ) = max( G( j - 1 ), M( j - 1 ) * ( 1 + CNORM( j ) ) ) + xj = 1.0 + CNORM[ ic ]; + grow = min( grow, xbnd / xj ); + + // M( j ) = M( j - 1 ) * ( 1 + CNORM( j ) ) / abs( A( j, j ) ) + tjj = abs( A[ ia ] ); + if ( xj > tjj ) { + xbnd *= ( tjj / xj ); + } + + ic += jinc * strideCNORM; + ia += jinc * ( strideA1 + strideA2 ); + } + if ( !GOTO ) { + grow = min( grow, xbnd ); + } + } else { + /* + A is unit triangular + Compute GROW = 1 / G( j ), where G( 0 ) = max( X( i ), for 0 <= i < N ) + */ + grow = min( 1.0, 1.0 / max( xbnd, smlnum ) ); + ic = offsetCNORM + ( jfirst * strideCNORM ); + for ( j = jfirst; (jinc > 0) ? j <= jlast : j >= jlast; j += jinc ) { + if ( grow <= smlnum ) { + // Exit the loop if the growth factor is too small + break; + } + + // G( j ) = ( 1 + CNORM( j ) ) * G( j - 1 ) + xj = 1.0 + CNORM[ ic ]; + grow /= xj; + + ic += jinc * strideCNORM; + } + } + } + } + + if ( grow * tscal > smlnum ) { + // Use the Level 2 BLAS solve if the reciprocal of the bound on elements of X is not too small. + dtrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, X, strideX, offsetX ); + } else { + // Use a Level 1 BLAS solve, scaling intermediate results. + + if ( xmax > bignum ) { + // Scale X so that its components are less than or equal to bignum in absolute value. + scale = bignum / xmax; + dscal( N, scale, X, strideX, offsetX ); + xmax = bignum; + } + + if ( trans === 'no-transpose' ) { + // Solve A * X = B + ix = offsetX + ( jfirst * strideX ); // tracks X( j ) + ia = offsetA + ( jfirst * ( strideA1 + strideA2 ) ); // tracks A( j, j ) + ia1 = offsetA + ( jfirst * strideA2 ); // tracks A( 1, j ) + ic = offsetCNORM + ( jfirst * strideCNORM ); // tracks CNORM( j ) + + for ( j = jfirst; (jinc > 0) ? j <= jlast : j >= jlast; j += jinc ) { + // Compute X( j ) = B( j ) / A( j, j ), scaling X if necessary. + xj = abs( X[ ix ] ); + GOTO = false; + if ( diag === 'non-unit' ) { + tjjs = A[ ia ] * tscal; + } else { + tjjs = tscal; + if ( tscal === 1.0 ) { + GOTO = true; + } + } + + if ( !GOTO ) { + tjj = abs( tjjs ); + if ( tjj > smlnum ) { // abs( A( j, j ) ) > smlnum + if ( tjj < 1.0 ) { + if ( xj > tjj * bignum ) { + rec = 1.0 / xj; + dscal( N, rec, X, strideX, offsetX ); + scale *= rec; + xmax *= rec; + } + } + X[ ix ] /= tjjs; + xj = abs( X[ ix ] ); + } else if ( tjj > 0.0 ) { + // 0 < abs( A( j, j ) ) <= smlnum + if ( xj > tjj * bignum ) { + // Scale X by ( 1 / abs( X( j ) ) ) * abs( A( j, j ) ) * bignum to avoid overflow when dividing by A( j, j ). + rec = ( tjj * bignum ) / xj; + if ( CNORM[ ic ] > 1.0 ) { + // Scale by 1 / CNORM( j ) to avoid overflow when multiplying X( j ) times column j + rec /= CNORM[ ic ]; + } + dscal( N, rec, X, strideX, offsetX ); + scale *= rec; + xmax *= rec; + } + X[ ix ] /= tjjs; + xj = abs( X[ ix ] ); + } else { + // A( j, j ) = 0: Set X( 1 : N ) = 0, x( j ) = 1, and scale = 0, and compute a solution to A * X = 0 + ix1 = offsetX; + for ( i = 0; i < N; i++ ) { + X[ ix1 ] = 0.0; + ix1 += strideX; + } + scale = 0.0; + xmax = 0.0; + } + } + + // Scale X if necessary to avoid overflow when adding a multiple of column j of A + if ( xj > 1.0 ) { + rec = 1.0 / xj; + if ( CNORM[ ic ] > ( bignum - xmax ) * rec ) { + // Scale X by 1 / ( 2 * abs( X( j ) ) ) + rec *= 0.5; + dscal( N, rec, X, strideX, offsetX ); + scale *= rec; + } + } else if ( xj * CNORM[ ic ] > ( bignum - xmax ) ) { + // Scale X by 0.5 + dscal( N, 0.5, X, strideX, offsetX ); + scale *= 0.5; + } + + if ( uplo === 'upper' ) { + if ( j > 0 ) { + // Compute the update X( 1 : j - 1 ) := X( 1 : j - 1 ) - X( j ) * A( 1 : j - 1, j ) + daxpy( j, -1 * tscal * X[ ix ], A, strideA1, ia1, X, strideX, offsetX ); + } + i = idamax( j, X, strideX, offsetX ); + xmax = abs( X[ offsetX + ( i * strideX ) ] ); + } else { + if ( j < N - 1 ) { + // Compute the update X( j + 1 : N ) := X( j + 1 : N ) - X( j ) * A( j + 1 : N , j ) + daxpy( N - ( j + 1 ), -1 * tscal * X[ ix ], A, strideA1, ia + strideA1, X, strideX, ix + strideX ); + i = idamax( N - ( j + 1 ), X, strideX, ix + strideX ); + xmax = abs( X[ offsetX + ( i * strideX ) ] ); + } + } + + ix += jinc * strideX; + ia += jinc * ( strideA1 + strideA2 ); + ia1 += jinc * strideA2; + ic += jinc * strideCNORM; + } + } else { + // Solve A ^ T * X = B + ix = offsetX + ( jfirst * strideX ); // tracks X( j ) + ia = offsetA + ( jfirst * ( strideA1 + strideA2 ) ); // tracks A( j, j ) + ia1 = offsetA + ( jfirst * strideA2 ); // tracks A( 1, j ) + ic = offsetCNORM + ( jfirst * strideCNORM ); // tracks CNORM( j ) + for ( j = jfirst; (jinc > 0) ? j <= jlast : j >= jlast; j += jinc ) { + // Compute X( j ) = B( j ) - sum A( k , j ) * X( k ). + xj = abs( X[ ix ] ); + uscal = tscal; + rec = 1.0 / max( xmax, 1.0 ); + if ( CNORM[ ic ] > ( bignum - xj ) * rec ) { + // If X( j ) could overflow, scale X by 1 / ( 2 * xmax ). + rec *= 0.5; + if ( diag === 'non-unit' ) { + tjjs = A[ ia ] * tscal; + } else { + tjjs = tscal; + } + tjj = abs( tjjs ); + if ( tjj > 1.0 ) { + // Divide by A( j, j ) when scaling X if A( j, j ) > 1 + rec = min( 1.0, rec * tjj ); + uscal /= tjjs; + } + if ( rec < 1.0 ) { + dscal( N, rec, X, strideX, offsetX ); + scale *= rec; + xmax *= rec; + } + } + + sumj = 0.0; + if ( uscal === 1.0 ) { + // If the scaling needed for A in the dot product is 1, call ddot to perform the dot product + if ( uplo === 'upper' ) { + sumj = ddot( j, A, strideA1, ia1, X, strideX, offsetX ); + } else { + sumj = ddot( N - ( j + 1 ), A, strideA1, ia + strideA1, X, strideX, ix + strideX ); + } + } else { + // Otherwise, use in-line code for the dot product + if ( uplo === 'upper' ) { + ia2 = 0; + ix1 = offsetX; + for ( i = 0; i < j; i++ ) { + sumj += A[ ia1 + ia2 ] * uscal * X[ ix1 ]; + ia2 += strideA1; + ix1 += strideX; + } + } else { + ia2 = ( j + 1 ) * strideA1; + ix1 = offsetX + ( ( j + 1 ) * strideX ); + for ( i = j + 1; i < N; i++ ) { + sumj += A[ ia1 + ia2 ] * uscal * X[ ix1 ]; + ia2 += strideA1; + ix1 += strideX; + } + } + } + + if ( uscal === tscal ) { + X[ ix ] -= sumj; + xj = abs( X[ ix ] ); + if ( diag === 'non-unit' ) { + tjjs = A[ ia ] * tscal; + } else { + tjjs = tscal; + GOTO = false; + if ( tscal === 1.0 ) { + GOTO = true; + } + } + + if ( !GOTO ) { + // Compute X( j ) = X( j ) / A( j, j ), scaling if necessary + tjj = abs( tjjs ); + if ( tjj > smlnum ) { + // abs( A( j, j ) ) > smlnum + if ( tjj < 1.0 ) { + if ( xj > tjj * bignum ) { + // Scale X by 1 / abs( X( j ) ) + rec = 1.0 / xj; + dscal( N, rec, X, strideX, offsetX ); + scale *= rec; + xmax *= rec; + } + } + X[ ix ] /= tjjs; + } else if ( tjj > 0.0 ) { + // 0 < abs( A( j, j ) ) <= smlnum + if ( xj > tjj * bignum ) { + // Scale X by ( 1 / abs( X( j ) ) ) * abs( A( j, j ) ) * bignum + rec = tjj * bignum / xj; + dscal( N, rec, X, strideX, offsetX ); + xmax *= rec; + scale *= rec; + } + X[ ix ] /= tjjs; + } else { + // A( j, j ) = 0: Set X( 1 : N ) = 0, X( j ) = 1, and scale = 0, and compute a solution to A^T * X = 0 + ix1 = offsetX; + for ( i = 0; i < N; i++ ) { + X[ ix1 ] = 0.0; + ix1 += strideX; + } + X[ ix ] = 1.0; + scale = 0.0; + xmax = 0.0; + } + } + } else { + // Compute X( j ) := X( j ) / A( j, j ) - sumj if the dot product has already been divided by 1 / A( j, j ) + X[ ix ] = ( X[ ix ] / tjjs ) - sumj; + } + + xmax = max( xmax, abs( X[ ix ] ) ); + + ix += jinc * strideX; + ia += jinc * ( strideA1 + strideA2 ); + ia1 += jinc * strideA2; + ic += jinc * strideCNORM; + } + } + scale /= tscal; + } + + // Scale the column norms by 1 / tscal for return + if ( tscal !== 1.0 ) { + dscal( N, 1.0 / tscal, CNORM, strideCNORM, offsetCNORM ); + } + + return scale; +} + + +// EXPORTS // + +module.exports = dlatrs; diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/dlange.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/dlange.js new file mode 100644 index 000000000000..45fe1aca8f5a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/dlange.js @@ -0,0 +1,362 @@ +/** +* @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 isnan = require( '@stdlib/math/base/assert/is-nan' ); +var dlassq = require( '@stdlib/lapack/base/dlassq' ).ndarray; +var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major' ); +var loopOrder = require( '@stdlib/ndarray/base/nullary-loop-interchange-order' ); +var dasum = require( '@stdlib/blas/base/dasum' ).ndarray; +var Float64Array = require( '@stdlib/array/float64' ); +var min = require( '@stdlib/math/base/special/min' ); +var sqrt = require( '@stdlib/math/base/special/sqrt' ); +var abs = require( '@stdlib/math/base/special/abs' ); + + +// FUNCTIONS // + +/** +* Returns the value of the one norm of a real matrix `A`. +* +* @private +* @param {NonNegativeInteger} M - number of rows in `A` +* @param {NonNegativeInteger} N - number of columns in `A` +* @param {Float64Array} A - input array +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index of `A` +* @param {Float64Array} work - work array, should have `N` indexed elements if row-major layout is used +* @param {integer} strideWork - stride length of `work` +* @param {NonNegativeInteger} offsetWork - starting index of `work` +* @returns {number} required norm value +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 4.0, 7.0, 10.0, 2.0, 5.0, 8.0, 11.0, 3.0, 6.0, 9.0, 12.0 ] ); +* var work = new Float64Array( 4 ); +* +* var out = oneNorm( 3, 4, A, 4, 1, 0, work, 1, 0 ); +* // returns 33.0 +*/ +function oneNorm( M, N, A, strideA1, strideA2, offsetA, work, strideWork, offsetWork ) { // eslint-disable-line max-len + var value; + var temp; + var ia1; + var ia2; + var sum; + var iw; + var i; + var j; + + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + iw = offsetWork; + for ( i = 0; i < N; i++ ) { + work[ iw ] = 0.0; + iw += strideWork; + } + + ia1 = offsetA; + for ( j = 0; j < M; j++ ) { + ia2 = 0; + iw = offsetWork; + for ( i = 0; i < N; i++ ) { + work[ iw ] += abs( A[ ia1 + ia2 ] ); + iw += strideWork; + ia2 += strideA2; + } + ia1 += strideA1; + } + + value = 0.0; + + iw = offsetWork; + for ( i = 0; i < N; i++ ) { + temp = work[ iw ]; + if ( value < temp || isnan( temp ) ) { + value = temp; + } + iw += strideWork; + } + } else { + value = 0.0; + ia1 = offsetA; + for ( j = 0; j < N; j++ ) { + sum = dasum( M, A, strideA1, ia1 ); + if ( value < sum || isnan( sum ) ) { + value = sum; + } + ia1 += strideA2; + } + } + + return value; +} + +/** +* Returns the absolute value of the maximum element of a real matrix `A`. +* +* @private +* @param {NonNegativeInteger} M - number of rows in `A` +* @param {NonNegativeInteger} N - number of columns in `A` +* @param {Float64Array} A - input array +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index of `A` +* @returns {number} required norm value +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 4.0, 7.0, 10.0, 2.0, 5.0, 8.0, 11.0, 3.0, 6.0, 9.0, 12.0 ] ); +* +* var out = maxAbs( 3, 4, A, 4, 1, 0 ); +* // returns 12.0 +*/ +function maxAbs( M, N, A, strideA1, strideA2, offsetA ) { + var value; + var temp; + var da0; + var da1; + var ia; + var sa; + var sh; + var S0; + var S1; + var o; + var i; + var j; + + value = 0.0; + + // Resolve the loop interchange order: + o = loopOrder( [ M, N ], [ strideA1, strideA2 ] ); + sh = o.sh; + sa = o.sx; + S0 = sh[ 0 ]; + S1 = sh[ 1 ]; + da0 = sa[ 0 ]; + da1 = sa[ 1 ] - ( S0*sa[0] ); + ia = offsetA; + + for ( i = 0; i < S1; i++ ) { + for ( j = 0; j < S0; j++ ) { + temp = A[ ia ]; + if ( value < temp || isnan( temp ) ) { + value = temp; + } + ia += da0; + } + ia += da1; + } + return value; +} + +/** +* Returns the value of the infinity norm of a real matrix `A`. +* +* @private +* @param {NonNegativeInteger} M - number of rows in `A` +* @param {NonNegativeInteger} N - number of columns in `A` +* @param {Float64Array} A - input array +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index of `A` +* @param {Float64Array} work - work array, should have `M` indexed elements if column-major layout is used +* @param {integer} strideWork - stride length of `work` +* @param {NonNegativeInteger} offsetWork - starting index of `work` +* @returns {number} required norm value +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 4.0, 7.0, 10.0, 2.0, 5.0, 8.0, 11.0, 3.0, 6.0, 9.0, 12.0 ] ); +* var work = new Float64Array( 3 ); +* +* var out = infinityNorm( 3, 4, A, 4, 1, 0, work, 1, 0 ); +* // returns 30.0 +*/ +function infinityNorm( M, N, A, strideA1, strideA2, offsetA, work, strideWork, offsetWork ) { // eslint-disable-line max-len + var value; + var temp; + var sum; + var ia1; + var ia2; + var iw; + var i; + var j; + + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + value = 0.0; + ia1 = offsetA; + for ( j = 0; j < M; j++ ) { + sum = dasum( N, A, strideA2, ia1 ); + if ( value < sum || isnan( sum ) ) { + value = sum; + } + ia1 += strideA1; + } + } else { + iw = offsetWork; + for ( i = 0; i < M; i++ ) { + work[ iw ] = 0.0; + iw += strideWork; + } + + ia1 = offsetA; + for ( j = 0; j < N; j++ ) { + ia2 = 0; + iw = offsetWork; + for ( i = 0; i < M; i++ ) { + work[ iw ] += abs( A[ ia1 + ia2 ] ); + iw += strideWork; + ia2 += strideA1; + } + ia1 += strideA2; + } + + value = 0.0; + + iw = offsetWork; + for ( i = 0; i < M; i++ ) { + temp = work[ iw ]; + if ( value < temp || isnan( temp ) ) { + value = temp; + } + iw += strideWork; + } + } + return value; +} + +/** +* Returns the absolute value of the frobenius norm of a real matrix `A`. +* +* @private +* @param {NonNegativeInteger} M - number of rows in `A` +* @param {NonNegativeInteger} N - number of columns in `A` +* @param {Float64Array} A - input array +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index of `A` +* @returns {number} required norm value +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 4.0, 7.0, 10.0, 2.0, 5.0, 8.0, 11.0, 3.0, 6.0, 9.0, 12.0 ] ); +* +* var out = frobeniusNorm( 3, 4, A, 4, 1, 0 ); +* // returns ~25.5 +*/ +function frobeniusNorm( M, N, A, strideA1, strideA2, offsetA ) { + var out; + var da0; + var da1; + var S1; + var S2; + var ia; + var i; + + out = new Float64Array( [ 0.0, 1.0 ] ); + + if ( isRowMajor( [ strideA1, strideA2 ] ) ) { + S1 = M; + S2 = N; + da0 = strideA2; + da1 = strideA1; + } else { + S1 = N; + S2 = M; + da0 = strideA1; + da1 = strideA2; + } + + ia = offsetA; + for ( i = 0; i < S1; i++ ) { + dlassq( S2, A, da0, ia, out[ 0 ], out[ 1 ], out, 1, 0 ); + ia += da1; + } + + return out[ 0 ] * sqrt( out[ 1 ] ); +} + + +// MAIN // + +/** +* Returns the value of the one norm, or the frobenius norm, or the infinity norm, or the element with the largest absolute value of a real matrix `A`. +* +* ## Notes +* +* - use `norm` = `max` to calculate the element with the largest absolute value +* - use `norm` = `one` to calculate the one norm, work should have `N` indexed elements if row-major layout is used +* - use `norm` = `infinity` to calculate the infinity norm, work should have `M` indexed elements if column-major layout is used +* - use `norm` = `frobenius` to calculate the frobenius norm +* +* @private +* @param {string} norm - specifies the type of norm to be calculated +* @param {NonNegativeInteger} M - number of rows in `A` +* @param {NonNegativeInteger} N - number of columns in `A` +* @param {Float64Array} A - input array +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index of `A` +* @param {Float64Array} work - temporary workspace array +* @param {integer} strideWork - stride length of `work` +* @param {NonNegativeInteger} offsetWork - starting index of `work` +* @returns {number} required norm value +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 1.0, 4.0, 7.0, 10.0, 2.0, 5.0, 8.0, 11.0, 3.0, 6.0, 9.0, 12.0 ] ); +* var work = new Float64Array( 3 ); +* +* var out = dlange( 'frobenius', 3, 4, A, 4, 1, 0, work, 1, 0 ); +* // returns ~25.5 +*/ +function dlange( norm, M, N, A, strideA1, strideA2, offsetA, work, strideWork, offsetWork ) { // eslint-disable-line max-len + if ( min( M, N ) === 0 ) { + return 0.0; + } + + if ( norm === 'max' ) { + return maxAbs( M, N, A, strideA1, strideA2, offsetA ); + } + + if ( norm === 'one' ) { + return oneNorm( M, N, A, strideA1, strideA2, offsetA, work, strideWork, offsetWork ); // eslint-disable-line max-len + } + + if ( norm === 'infinity' ) { + return infinityNorm( M, N, A, strideA1, strideA2, offsetA, work, strideWork, offsetWork ); // eslint-disable-line max-len + } + + if ( norm === 'frobenius' ) { + return frobeniusNorm( M, N, A, strideA1, strideA2, offsetA ); + } +} + + +// EXPORTS // + +module.exports = dlange; diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/dlatrs.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/dlatrs.js new file mode 100644 index 000000000000..24edc341a31b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/dlatrs.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2025 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); +var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major-string' ); +var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var isDiagonalType = require( '@stdlib/blas/base/assert/is-diagonal-type' ); +var isTransposeOperation = require( '@stdlib/blas/base/assert/is-transpose-operation' ); +var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); +var max = require( '@stdlib/math/base/special/max' ); +var format = require( '@stdlib/string/format' ); +var base = require( './base.js' ); + + +// MAIN // + +/** +* Solves a triangular system of equations with the scale factor set to prevent overflow. +* +* @param {string} order - storage layout +* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {string} trans - specifies whether `A` should be transposed or not transposed +* @param {string} diag - specifies whether `A` has a unit diagonal +* @param {string} normin - specifies whether `CNORM` has been set or not +* @param {NonNegativeInteger} N - number of rows/columns in `A` +* @param {Float64Array} A - input matrix +* @param {PositiveInteger} LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`) +* @param {Float64Array} X - input vector, specifies the right hand side vector of the equation +* @param {Float64Array} CNORM - used to store the column norms +* @throws {TypeError} first argument must be a valid order +* @throws {TypeError} second argument must be a valid matrix triangle +* @throws {TypeError} third argument must be a valid transpose opeartion +* @throws {TypeError} fourth argument must be a valid diagonal type +* @throws {TypeError} fifth argument must be either yes or no +* @throws {RangeError} eighth argument must be greater than or equal to max(1,N) +* @returns {number} scaling factor +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] +* var X = new Float64Array( [ 5.0, 10.0, 20,0 ] ); +* var CNORM = new Float64Array( 3 ); +* +* var scale = dlatrs( 'row-major', 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, X, CNORM ); +* // returns 1.0 +* // X => [ 5.0, 0.0, 5.0 ] +* // CNORM => [ 0.0, 1.0, 3.0 ] +*/ +function dlatrs( order, uplo, trans, diag, normin, N, A, LDA, X, CNORM ) { + var sa1; + var sa2; + + if ( !isLayout( order ) ) { + throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); + } + if ( !isMatrixTriangle( uplo ) ) { + throw new TypeError( format( 'invalid argument. Second argument must be a valid side. Value: `%s`.', uplo ) ); + } + if ( !isTransposeOperation( trans ) ) { + throw new TypeError( format( 'invalid argument. Third argument must be a valid transpose operation. Value: `%s`.', trans ) ); + } + if ( !isDiagonalType( diag ) ) { + throw new TypeError( format( 'invalid argument. Fourth argument must be a valid diagonal type. Value: `%s`.', diag ) ); + } + if ( isRowMajor( order ) && LDA < max( 1, N ) ) { + throw new RangeError( format( 'invalid argument. Sixth argument must be greater than or equal to max(1,%d). Value: `%d`.', N, LDA ) ); + } + if ( normin !== 'yes' && normin !== 'no' ) { + throw new TypeError( format( 'invalid argument. Fifth argument must be either yes or no. Value: `%s`.', normin ) ); + } + if ( isColumnMajor( order ) ) { + sa1 = 1; + sa2 = LDA; + } else { // order === 'row-major' + sa1 = LDA; + sa2 = 1; + } + return base( uplo, trans, diag, normin, N, A, sa1, sa2, 0, X, 1, 0, CNORM, 1, 0 ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dlatrs; diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/index.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/index.js new file mode 100644 index 000000000000..14249ecf9e44 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/index.js @@ -0,0 +1,61 @@ +/** +* @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 triangular system of equations with the scale factor set to prevent overflow. +* +* @module @stdlib/lapack/base/dlatrs +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dlatrs = require( '@stdlib/lapack/base/dlatrs' ); +* +* var A = new Float64Array( [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] +* var X = new Float64Array( [ 5.0, 10.0, 20,0 ] ); +* var CNORM = new Float64Array( 3 ); +* +* var scale = dlatrs( 'row-major', 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, X, CNORM ); +* // returns 1.0 +* // X => [ 5.0, 0.0, 5.0 ] +* // CNORM => [ 0.0, 1.0, 3.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var dlatrs; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + dlatrs = main; +} else { + dlatrs = tmp; +} + + +// EXPORTS // + +module.exports = dlatrs; diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/main.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/main.js new file mode 100644 index 000000000000..74831584ee44 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/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 dlatrs = require( './dlatrs.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( dlatrs, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dlatrs; diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/ndarray.js new file mode 100644 index 000000000000..c12823880a6f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/lib/ndarray.js @@ -0,0 +1,89 @@ +/** +* @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'; + +/* eslint-disable max-len, max-params */ + +// MODULES // + +var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var isDiagonalType = require( '@stdlib/blas/base/assert/is-diagonal-type' ); +var isTransposeOperation = require( '@stdlib/blas/base/assert/is-transpose-operation' ); +var format = require( '@stdlib/string/format' ); +var base = require( './base.js' ); + + +// MAIN // + +/** +* Solves a triangular system of equations with the scale factor set to prevent overflow using alternative indexing semantics. +* +* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {string} trans - specifies whether `A` should be transposed or not transposed +* @param {string} diag - specifies whether `A` has a unit diagonal +* @param {string} normin - specifies whether `CNORM` has been set or not +* @param {NonNegativeInteger} N - number of rows/columns in `A` +* @param {Float64Array} A - input matrix +* @param {integer} strideA1 - stride of the first dimension of `A` +* @param {integer} strideA2 - stride of the second dimension of `A` +* @param {NonNegativeInteger} offsetA - starting index for `A` +* @param {Float64Array} X - input vector, specifies the right hand side vector of the equation +* @param {integer} strideX - stride length for `X` +* @param {NonNegativeInteger} offsetX - starting index for `X` +* @param {Float64Array} CNORM - used to store the column norms +* @param {integer} strideCNORM - stride length for `CNORM` +* @param {NonNegativeInteger} offsetCNORM - starting index for `CNORM` +* @throws {TypeError} first argument must be a valid matrix triangle +* @throws {TypeError} second argument must be a valid transpose opeartion +* @throws {TypeError} third argument must be a valid diagonal type +* @throws {TypeError} fourth argument must be either yes or no +* @returns {number} scaling factor +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var A = new Float64Array( [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ] ); // => [ [ 2.0, 1.0, -1.0 ], [ 0.0, 3.0, 2.0 ], [ 0.0, 0.0, 4.0 ] ] +* var X = new Float64Array( [ 5.0, 10.0, 20,0 ] ); +* var CNORM = new Float64Array( 3 ); +* +* var scale = dlatrs( 'upper', 'no-transpose', 'non-unit', 'no', 3, A, 3, 1, 0, X, 1, 0, CNORM, 1, 0 ); +* // returns 1.0 +* // X => [ 5.0, 0.0, 5.0 ] +* // CNORM => [ 0.0, 1.0, 3.0 ] +*/ +function dlatrs( uplo, trans, diag, normin, N, A, strideA1, strideA2, offsetA, X, strideX, offsetX, CNORM, strideCNORM, offsetCNORM ) { + if ( !isMatrixTriangle( uplo ) ) { + throw new TypeError( format( 'invalid argument. First argument must be a valid side. Value: `%s`.', uplo ) ); + } + if ( !isTransposeOperation( trans ) ) { + throw new TypeError( format( 'invalid argument. Second argument must be a valid transpose operation. Value: `%s`.', trans ) ); + } + if ( !isDiagonalType( diag ) ) { + throw new TypeError( format( 'invalid argument. Third argument must be a valid diagonal type. Value: `%s`.', diag ) ); + } + if ( normin !== 'yes' && normin !== 'no' ) { + throw new TypeError( format( 'invalid argument. Fourth argument must be either yes or no. Value: `%s`.', normin ) ); + } + return base( uplo, trans, diag, normin, N, A, strideA1, strideA2, offsetA, X, strideX, offsetX, CNORM, strideCNORM, offsetCNORM ); +} + + +// EXPORTS // + +module.exports = dlatrs; diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/package.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/package.json new file mode 100644 index 000000000000..e02cc149a934 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/lapack/base/dlatrs", + "version": "0.0.0", + "description": "LAPACK routine to solve a triangular system of equations with the scale factor set to prevent overflow.", + "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", + "dlatrs", + "interchange", + "triangular", + "exchange", + "permute", + "permutedims", + "linear", + "algebra", + "subroutines", + "array", + "ndarray", + "float64", + "double", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_off_diagonal_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_off_diagonal_col_major.json new file mode 100644 index 000000000000..e2fdbb39b912 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_off_diagonal_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 0.0, 0.0, 1e292, 1.0, 0.0, 1e292, 1e292, 1.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 1e292, 1e292 ], + [ 0.0, 1.0, 1e292 ], + [ 0.0, 0.0, 1.0 ] + ], + + "X": [ 1.0, 1.0, 1.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 5.0000000000000001E+291, -5.0000000000000000E-001, 4.9999999999999997E-293 ], + "expectedCNORM": [ 0.0, 1e292, 2e292 ], + "scale": 4.9999999999999997E-293 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_off_diagonal_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_off_diagonal_row_major.json new file mode 100644 index 000000000000..2a7176e471f4 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_off_diagonal_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 1e292, 1e292, 0.0, 1.0, 1e292, 0.0, 0.0, 1.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 1e292, 1e292 ], + [ 0.0, 1.0, 1e292 ], + [ 0.0, 0.0, 1.0 ] + ], + + "X": [ 1.0, 1.0, 1.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 5.0000000000000001E+291, -5.0000000000000000E-001, 4.9999999999999997E-293 ], + "expectedCNORM": [ 0.0, 1e292, 2e292 ], + "scale": 4.9999999999999997E-293 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/large_off_diagonal_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/large_off_diagonal_col_major.json new file mode 100644 index 000000000000..9e3570d3e5ee --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/large_off_diagonal_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 1e+292, + 9999, + 1, + 9999, + 0, + 9999, + 1e+292, + 9999, + 1e+292, + 9999, + 1, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1, + 1e+292, + 1e+292 + ], + [ + 0, + 1, + 1e+292 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 5e+291, + 9999, + -0.5, + 9999, + 4.9999999999999997e-293, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 1e+292, + 9999, + 2e+292, + 9999 + ], + "scale": 4.9999999999999997e-293 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/large_off_diagonal_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/large_off_diagonal_row_major.json new file mode 100644 index 000000000000..2072114342f7 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/large_off_diagonal_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 1e+292, + 9999, + 1e+292, + 9999, + 0, + 9999, + 1, + 9999, + 1e+292, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1, + 1e+292, + 1e+292 + ], + [ + 0, + 1, + 1e+292 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 5e+291, + 9999, + -0.5, + 9999, + 4.9999999999999997e-293, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 1e+292, + 9999, + 2e+292, + 9999 + ], + "scale": 4.9999999999999997e-293 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..b442d29c3581 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_lower_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2, + 9999, + 1, + 9999, + -1, + 9999, + 0, + 9999, + 3, + 9999, + 2, + 9999, + 0, + 9999, + 0, + 9999, + 4, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 5, + 9999, + 10, + 9999, + 20, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 2.5, + 9999, + 2.5, + 9999, + 4.375, + 9999 + ], + "expectedCNORM": [ + 2, + 9999, + 2, + 9999, + 0, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..60165810a9ce --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_lower_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999, + 3, + 9999, + 0, + 9999, + -1, + 9999, + 2, + 9999, + 4, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 5, + 9999, + 10, + 9999, + 20, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 2.5, + 9999, + 2.5, + 9999, + 4.375, + 9999 + ], + "expectedCNORM": [ + 2, + 9999, + 2, + 9999, + 0, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..13edf87a8de0 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_upper_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999, + 3, + 9999, + 0, + 9999, + -1, + 9999, + 2, + 9999, + 4, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 0, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 5, + 9999, + 10, + 9999, + 20, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 5, + 9999, + 0, + 9999, + 5, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 1, + 9999, + 3, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..f12f9511c331 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_no_trans_upper_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2, + 9999, + 1, + 9999, + -1, + 9999, + 0, + 9999, + 3, + 9999, + 2, + 9999, + 0, + 9999, + 0, + 9999, + 4, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 0, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 5, + 9999, + 10, + 9999, + 20, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 5, + 9999, + 0, + 9999, + 5, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 1, + 9999, + 3, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..eba815a965ec --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_lower_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2, + 9999, + 1, + 9999, + -1, + 9999, + 0, + 9999, + 3, + 9999, + 2, + 9999, + 0, + 9999, + 0, + 9999, + 4, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 2, + 9999, + 5, + 9999, + 4, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "expectedCNORM": [ + 2, + 9999, + 2, + 9999, + 0, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..c1e6f5364a16 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_lower_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999, + 3, + 9999, + 0, + 9999, + -1, + 9999, + 2, + 9999, + 4, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 2, + 9999, + 5, + 9999, + 4, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "expectedCNORM": [ + 2, + 9999, + 2, + 9999, + 0, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..a605ffb41b4f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_upper_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2, + 9999, + 1, + 9999, + 0, + 9999, + 1, + 9999, + 3, + 9999, + 0, + 9999, + -1, + 9999, + 2, + 9999, + 4, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 1, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 2, + 9999, + 5, + 9999, + 4, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1.3333333333333333, + 9999, + 0.5833333333333334, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 1, + 9999, + 3, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..e733cdb0f364 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/non_unit_trans_upper_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2, + 9999, + 1, + 9999, + -1, + 9999, + 0, + 9999, + 3, + 9999, + 2, + 9999, + 0, + 9999, + 0, + 9999, + 4, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 1, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 2, + 9999, + 5, + 9999, + 4, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1.3333333333333333, + 9999, + 0.5833333333333334, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 1, + 9999, + 3, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..e74d3f8ff86f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_lower_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 2, + 9999, + 3, + 9999, + 0, + 9999, + 0.1, + 9999, + 4, + 9999, + 0, + 9999, + 0, + 9999, + 0.01, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 0.1, + 0 + ], + [ + 3, + 4, + 0.01 + ] + ], + "X": [ + 1e+308, + 9999, + 1e+308, + 9999, + 1e+308, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 0.5, + 9999, + -5, + 9999, + 1900, + 9999 + ], + "expectedCNORM": [ + 5, + 9999, + 4, + 9999, + 0, + 9999 + ], + "scale": 5e-309 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..63cba1980349 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_lower_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 2, + 9999, + 0.1, + 9999, + 0, + 9999, + 3, + 9999, + 4, + 9999, + 0.01, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 0.1, + 0 + ], + [ + 3, + 4, + 0.01 + ] + ], + "X": [ + 1e+308, + 9999, + 1e+308, + 9999, + 1e+308, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 0.5, + 9999, + -5, + 9999, + 1900, + 9999 + ], + "expectedCNORM": [ + 5, + 9999, + 4, + 9999, + 0, + 9999 + ], + "scale": 5e-309 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..483978bfebe4 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_upper_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-10, + 9999, + 0, + 9999, + 0, + 9999, + 2, + 9999, + 1e-20, + 9999, + 0, + 9999, + 3, + 9999, + 4, + 9999, + 1e-30, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1e-10, + 2, + 3 + ], + [ + 0, + 1e-20, + 4 + ], + [ + 0, + 0, + 1e-30 + ] + ], + "X": [ + 1e+300, + 9999, + 2e+300, + 9999, + 3e+300, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 7.999999999999998e+60, + 9999, + -3.9999999999999995e+50, + 9999, + 9.999999999999999e+29, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 2, + 9999, + 7, + 9999 + ], + "scale": 3.333333333333333e-301 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..3e5297b4654f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_no_trans_upper_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-10, + 9999, + 2, + 9999, + 3, + 9999, + 0, + 9999, + 1e-20, + 9999, + 4, + 9999, + 0, + 9999, + 0, + 9999, + 1e-30, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1e-10, + 2, + 3 + ], + [ + 0, + 1e-20, + 4 + ], + [ + 0, + 0, + 1e-30 + ] + ], + "X": [ + 1e+300, + 9999, + 2e+300, + 9999, + 3e+300, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 7.999999999999998e+60, + 9999, + -3.9999999999999995e+50, + 9999, + 9.999999999999999e+29, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 2, + 9999, + 7, + 9999 + ], + "scale": 3.333333333333333e-301 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..9e96fa972d91 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_lower_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-100, + 9999, + 1, + 9999, + 2, + 9999, + 0, + 9999, + 1e-120, + 9999, + 3, + 9999, + 0, + 9999, + 0, + 9999, + 1e-140, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1e-100, + 0, + 0 + ], + [ + 1, + 1e-120, + 0 + ], + [ + 2, + 3, + 1e-140 + ] + ], + "X": [ + 1e+100, + 9999, + 2e+100, + 9999, + 3e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1e+220, + 9999, + -1e+120, + 9999, + 0.3333333333333333, + 9999 + ], + "expectedCNORM": [ + 3, + 9999, + 3, + 9999, + 0, + 9999 + ], + "scale": 1.1111111111111112e-241 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..9c6163d6f338 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_lower_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-100, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999, + 1e-120, + 9999, + 0, + 9999, + 2, + 9999, + 3, + 9999, + 1e-140, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1e-100, + 0, + 0 + ], + [ + 1, + 1e-120, + 0 + ], + [ + 2, + 3, + 1e-140 + ] + ], + "X": [ + 1e+100, + 9999, + 2e+100, + 9999, + 3e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1e+220, + 9999, + -1e+120, + 9999, + 0.3333333333333333, + 9999 + ], + "expectedCNORM": [ + 3, + 9999, + 3, + 9999, + 0, + 9999 + ], + "scale": 1.1111111111111112e-241 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..be36fb426e17 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_upper_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-100, + 9999, + 0, + 9999, + 0, + 9999, + 5, + 9999, + 1e-110, + 9999, + 0, + 9999, + 7, + 9999, + 8, + 9999, + 1e-120, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1e-100, + 5, + 7 + ], + [ + 0, + 1e-110, + 8 + ], + [ + 0, + 0, + 1e-120 + ] + ], + "X": [ + 1e+100, + 9999, + 2e+100, + 9999, + 3e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 0.2, + 9999, + -1e+110, + 9999, + 8e+230, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 5, + 9999, + 15, + 9999 + ], + "scale": 2.0000000000000003e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..691bdd491b91 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_non_unit_trans_upper_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-100, + 9999, + 5, + 9999, + 7, + 9999, + 0, + 9999, + 1e-110, + 9999, + 8, + 9999, + 0, + 9999, + 0, + 9999, + 1e-120, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1e-100, + 5, + 7 + ], + [ + 0, + 1e-110, + 8 + ], + [ + 0, + 0, + 1e-120 + ] + ], + "X": [ + 1e+100, + 9999, + 2e+100, + 9999, + 3e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 0.2, + 9999, + -1e+110, + 9999, + 8e+230, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 5, + 9999, + 15, + 9999 + ], + "scale": 2.0000000000000003e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..24685dc02e4b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_lower_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 1e+100, + 9999, + 2e+100, + 9999, + 0, + 9999, + 1, + 9999, + 3e+100, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 1e+100, + 1, + 0 + ], + [ + 2e+100, + 3e+100, + 1 + ] + ], + "X": [ + 1e+100, + 9999, + 2e+100, + 9999, + 3e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 5e-101, + 9999, + -0.5, + 9999, + 1.5e+100, + 9999 + ], + "expectedCNORM": [ + 3.0000000000000002e+100, + 9999, + 3e+100, + 9999, + 0, + 9999 + ], + "scale": 5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..03c39cb1fcb8 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_lower_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 1e+100, + 9999, + 1, + 9999, + 0, + 9999, + 2e+100, + 9999, + 3e+100, + 9999, + 1, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 1e+100, + 1, + 0 + ], + [ + 2e+100, + 3e+100, + 1 + ] + ], + "X": [ + 1e+100, + 9999, + 2e+100, + 9999, + 3e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 5e-101, + 9999, + -0.5, + 9999, + 1.5e+100, + 9999 + ], + "expectedCNORM": [ + 3.0000000000000002e+100, + 9999, + 3e+100, + 9999, + 0, + 9999 + ], + "scale": 5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..a25e3849c251 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_upper_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 1e+100, + 9999, + 1, + 9999, + 0, + 9999, + 2e+100, + 9999, + 3e+100, + 9999, + 1, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1, + 1e+100, + 2e+100 + ], + [ + 0, + 1, + 3e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 3e+100, + 9999, + 2e+100, + 9999, + 1e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 5e+99, + 9999, + -0.5, + 9999, + 1.6666666666666668e-101, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 1e+100, + 9999, + 5e+100, + 9999 + ], + "scale": 1.6666666666666668e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..3ea655628369 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_no_trans_upper_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 1e+100, + 9999, + 2e+100, + 9999, + 0, + 9999, + 1, + 9999, + 3e+100, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1, + 1e+100, + 2e+100 + ], + [ + 0, + 1, + 3e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 3e+100, + 9999, + 2e+100, + 9999, + 1e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 5e+99, + 9999, + -0.5, + 9999, + 1.6666666666666668e-101, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 1e+100, + 9999, + 5e+100, + 9999 + ], + "scale": 1.6666666666666668e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..d2d62550fc71 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_lower_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 4e+100, + 9999, + 7e+100, + 9999, + 0, + 9999, + 1, + 9999, + 8e+100, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4e+100, + 1, + 0 + ], + [ + 7e+100, + 8e+100, + 1 + ] + ], + "X": [ + 1e+100, + 9999, + 2e+100, + 9999, + 3e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 2e+100, + 9999, + -0.5, + 9999, + 6.25e-102, + 9999 + ], + "expectedCNORM": [ + 1.1e+101, + 9999, + 8e+100, + 9999, + 0, + 9999 + ], + "scale": 2.0833333333333334e-202 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..83913261fdd0 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_lower_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 4e+100, + 9999, + 1, + 9999, + 0, + 9999, + 7e+100, + 9999, + 8e+100, + 9999, + 1, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4e+100, + 1, + 0 + ], + [ + 7e+100, + 8e+100, + 1 + ] + ], + "X": [ + 1e+100, + 9999, + 2e+100, + 9999, + 3e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 2e+100, + 9999, + -0.5, + 9999, + 6.25e-102, + 9999 + ], + "expectedCNORM": [ + 1.1e+101, + 9999, + 8e+100, + 9999, + 0, + 9999 + ], + "scale": 2.0833333333333334e-202 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..98a3539e4907 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_upper_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 2e+100, + 9999, + 1, + 9999, + 0, + 9999, + 3e+100, + 9999, + 5e+100, + 9999, + 1, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1, + 2e+100, + 3e+100 + ], + [ + 0, + 1, + 5e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1e+100, + 9999, + 2e+100, + 9999, + 3e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 2.5e-101, + 9999, + -0.5, + 9999, + 2.5e+100, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 2e+100, + 9999, + 8e+100, + 9999 + ], + "scale": 2.5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..4714baf4dce3 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/scaled_unit_trans_upper_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 2e+100, + 9999, + 3e+100, + 9999, + 0, + 9999, + 1, + 9999, + 5e+100, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1, + 2e+100, + 3e+100 + ], + [ + 0, + 1, + 5e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1e+100, + 9999, + 2e+100, + 9999, + 3e+100, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 2.5e-101, + 9999, + -0.5, + 9999, + 2.5e+100, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 2e+100, + 9999, + 8e+100, + 9999 + ], + "scale": 2.5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..541ee0c4e1ad --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_lower_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 2, + 9999, + 3, + 9999, + 0, + 9999, + 1, + 9999, + -1, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 1, + 0 + ], + [ + 3, + -1, + 1 + ] + ], + "X": [ + 1, + 9999, + 3, + 9999, + 3, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "expectedCNORM": [ + 5, + 9999, + 1, + 9999, + 0, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..b0554db5f3dc --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_lower_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 2, + 9999, + 1, + 9999, + 0, + 9999, + 3, + 9999, + -1, + 9999, + 1, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 1, + 0 + ], + [ + 3, + -1, + 1 + ] + ], + "X": [ + 1, + 9999, + 3, + 9999, + 3, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "expectedCNORM": [ + 5, + 9999, + 1, + 9999, + 0, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..36228fefaf14 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_upper_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 2, + 9999, + 1, + 9999, + 0, + 9999, + -1, + 9999, + 3, + 9999, + 1, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1, + 2, + -1 + ], + [ + 0, + 1, + 3 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 2, + 9999, + 4, + 9999, + 1, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 2, + 9999, + 4, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..05e9dafcf23c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_no_trans_upper_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 2, + 9999, + -1, + 9999, + 0, + 9999, + 1, + 9999, + 3, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1, + 2, + -1 + ], + [ + 0, + 1, + 3 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 2, + 9999, + 4, + 9999, + 1, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 2, + 9999, + 4, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_lower_col_major.json new file mode 100644 index 000000000000..7453f51b6987 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_lower_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 4, + 9999, + 2, + 9999, + 0, + 9999, + 1, + 9999, + -1, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4, + 1, + 0 + ], + [ + 2, + -1, + 1 + ] + ], + "X": [ + 7, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "expectedCNORM": [ + 6, + 9999, + 1, + 9999, + 0, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_lower_row_major.json new file mode 100644 index 000000000000..50e3a4bdfa24 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_lower_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 4, + 9999, + 1, + 9999, + 0, + 9999, + 2, + 9999, + -1, + 9999, + 1, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4, + 1, + 0 + ], + [ + 2, + -1, + 1 + ] + ], + "X": [ + 7, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "expectedCNORM": [ + 6, + 9999, + 1, + 9999, + 0, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_upper_col_major.json new file mode 100644 index 000000000000..d6192311a465 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_upper_col_major.json @@ -0,0 +1,86 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 0, + 9999, + 0, + 9999, + 2, + 9999, + 1, + 9999, + 0, + 9999, + 3, + 9999, + 4, + 9999, + 1, + 9999 + ], + "strideA1": 2, + "strideA2": 6, + "offsetA": 0, + "A_mat": [ + [ + 1, + 2, + 3 + ], + [ + 0, + 1, + 4 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 9999, + 3, + 9999, + 8, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 2, + 9999, + 7, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_upper_row_major.json new file mode 100644 index 000000000000..9543cfbf103b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/large_strides/unit_trans_upper_row_major.json @@ -0,0 +1,86 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 9999, + 2, + 9999, + 3, + 9999, + 0, + 9999, + 1, + 9999, + 4, + 9999, + 0, + 9999, + 0, + 9999, + 1, + 9999 + ], + "strideA1": 6, + "strideA2": 2, + "offsetA": 0, + "A_mat": [ + [ + 1, + 2, + 3 + ], + [ + 0, + 1, + 4 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 9999, + 3, + 9999, + 8, + 9999 + ], + "strideX": 2, + "offsetX": 0, + "CNORM": [ + 0, + 9999, + 0, + 9999, + 0, + 9999 + ], + "strideCNORM": 2, + "offsetCNORM": 0, + "expectedX": [ + 1, + 9999, + 1, + 9999, + 1, + 9999 + ], + "expectedCNORM": [ + 0, + 9999, + 2, + 9999, + 7, + 9999 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/large_off_diagonal_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/large_off_diagonal_col_major.json new file mode 100644 index 000000000000..08dc9dcf566d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/large_off_diagonal_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e+292, + 1e+292, + 1, + 1e+292, + 1, + 0, + 1, + 0, + 0 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1, + 1e+292, + 1e+292 + ], + [ + 0, + 1, + 1e+292 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 1, + 1 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 5e+291, + -0.5, + 4.9999999999999997e-293 + ], + "expectedCNORM": [ + 0, + 1e+292, + 2e+292 + ], + "scale": 4.9999999999999997e-293 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/large_off_diagonal_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/large_off_diagonal_row_major.json new file mode 100644 index 000000000000..56e529094c2d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/large_off_diagonal_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1, + 0, + 1, + 1e+292, + 1, + 1e+292, + 1e+292 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1, + 1e+292, + 1e+292 + ], + [ + 0, + 1, + 1e+292 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 1, + 1 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 5e+291, + -0.5, + 4.9999999999999997e-293 + ], + "expectedCNORM": [ + 0, + 1e+292, + 2e+292 + ], + "scale": 4.9999999999999997e-293 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..84f5c3eeaa10 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_lower_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 4, + 0, + 3, + 2, + 2, + 1, + -1 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 5, + 10, + 20 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 2.5, + 2.5, + 4.375 + ], + "expectedCNORM": [ + 2, + 2, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..4dfc6ccd6dd3 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_lower_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + -1, + 2, + 4, + 1, + 3, + 0, + 2, + 0, + 0 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 5, + 10, + 20 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 2.5, + 2.5, + 4.375 + ], + "expectedCNORM": [ + 2, + 2, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..6c53c42a827e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_upper_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + -1, + 2, + 4, + 1, + 3, + 0, + 2, + 0, + 0 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 0, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 5, + 10, + 20 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 5, + 0, + 5 + ], + "expectedCNORM": [ + 0, + 1, + 3 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..828648d59bae --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_no_trans_upper_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 4, + 0, + 3, + 2, + 2, + 1, + -1 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 0, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 5, + 10, + 20 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 5, + 0, + 5 + ], + "expectedCNORM": [ + 0, + 1, + 3 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..81777534c002 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_lower_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 4, + 0, + 3, + 2, + 2, + 1, + -1 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 2, + 5, + 4 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 2, + 2, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..4572d4f65036 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_lower_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + -1, + 2, + 4, + 1, + 3, + 0, + 2, + 0, + 0 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 2, + 5, + 4 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 2, + 2, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..6d27f3b6fb28 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_upper_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + -1, + 2, + 4, + 1, + 3, + 0, + 2, + 1, + 0 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 1, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 2, + 5, + 4 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1.3333333333333333, + 0.5833333333333334 + ], + "expectedCNORM": [ + 0, + 1, + 3 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..c1cb4b871b35 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/non_unit_trans_upper_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 4, + 0, + 3, + 2, + 2, + 1, + -1 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 1, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 2, + 5, + 4 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1.3333333333333333, + 0.5833333333333334 + ], + "expectedCNORM": [ + 0, + 1, + 3 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..e321af4334b2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_lower_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 0.01, + 0, + 0.1, + 4, + 1, + 2, + 3 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 0.1, + 0 + ], + [ + 3, + 4, + 0.01 + ] + ], + "X": [ + 1e+308, + 1e+308, + 1e+308 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 0.5, + -5, + 1900 + ], + "expectedCNORM": [ + 5, + 4, + 0 + ], + "scale": 5e-309 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..992af4fa9984 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_lower_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 3, + 4, + 0.01, + 2, + 0.1, + 0, + 1, + 0, + 0 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 0.1, + 0 + ], + [ + 3, + 4, + 0.01 + ] + ], + "X": [ + 1e+308, + 1e+308, + 1e+308 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 0.5, + -5, + 1900 + ], + "expectedCNORM": [ + 5, + 4, + 0 + ], + "scale": 5e-309 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..38dbf686c527 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_upper_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 3, + 4, + 1e-30, + 2, + 1e-20, + 0, + 1e-10, + 0, + 0 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1e-10, + 2, + 3 + ], + [ + 0, + 1e-20, + 4 + ], + [ + 0, + 0, + 1e-30 + ] + ], + "X": [ + 1e+300, + 2e+300, + 3e+300 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 7.999999999999998e+60, + -3.9999999999999995e+50, + 9.999999999999999e+29 + ], + "expectedCNORM": [ + 0, + 2, + 7 + ], + "scale": 3.333333333333333e-301 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..4402520445e2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_no_trans_upper_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1e-30, + 0, + 1e-20, + 4, + 1e-10, + 2, + 3 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1e-10, + 2, + 3 + ], + [ + 0, + 1e-20, + 4 + ], + [ + 0, + 0, + 1e-30 + ] + ], + "X": [ + 1e+300, + 2e+300, + 3e+300 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 7.999999999999998e+60, + -3.9999999999999995e+50, + 9.999999999999999e+29 + ], + "expectedCNORM": [ + 0, + 2, + 7 + ], + "scale": 3.333333333333333e-301 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..6cbe987de18a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_lower_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1e-140, + 0, + 1e-120, + 3, + 1e-100, + 1, + 2 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1e-100, + 0, + 0 + ], + [ + 1, + 1e-120, + 0 + ], + [ + 2, + 3, + 1e-140 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1e+220, + -1e+120, + 0.3333333333333333 + ], + "expectedCNORM": [ + 3, + 3, + 0 + ], + "scale": 1.1111111111111112e-241 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..c80a8f9be0fa --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_lower_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2, + 3, + 1e-140, + 1, + 1e-120, + 0, + 1e-100, + 0, + 0 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1e-100, + 0, + 0 + ], + [ + 1, + 1e-120, + 0 + ], + [ + 2, + 3, + 1e-140 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1e+220, + -1e+120, + 0.3333333333333333 + ], + "expectedCNORM": [ + 3, + 3, + 0 + ], + "scale": 1.1111111111111112e-241 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..fd7363724782 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_upper_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 7, + 8, + 1e-120, + 5, + 1e-110, + 0, + 1e-100, + 0, + 0 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1e-100, + 5, + 7 + ], + [ + 0, + 1e-110, + 8 + ], + [ + 0, + 0, + 1e-120 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 0.2, + -1e+110, + 8e+230 + ], + "expectedCNORM": [ + 0, + 5, + 15 + ], + "scale": 2.0000000000000003e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..bee9e164184d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_non_unit_trans_upper_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1e-120, + 0, + 1e-110, + 8, + 1e-100, + 5, + 7 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1e-100, + 5, + 7 + ], + [ + 0, + 1e-110, + 8 + ], + [ + 0, + 0, + 1e-120 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 0.2, + -1e+110, + 8e+230 + ], + "expectedCNORM": [ + 0, + 5, + 15 + ], + "scale": 2.0000000000000003e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..6067d0c54dce --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_lower_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1, + 0, + 1, + 3e+100, + 1, + 1e+100, + 2e+100 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 1e+100, + 1, + 0 + ], + [ + 2e+100, + 3e+100, + 1 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 5e-101, + -0.5, + 1.5e+100 + ], + "expectedCNORM": [ + 3.0000000000000002e+100, + 3e+100, + 0 + ], + "scale": 5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..a8dfc865144a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_lower_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2e+100, + 3e+100, + 1, + 1e+100, + 1, + 0, + 1, + 0, + 0 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 1e+100, + 1, + 0 + ], + [ + 2e+100, + 3e+100, + 1 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 5e-101, + -0.5, + 1.5e+100 + ], + "expectedCNORM": [ + 3.0000000000000002e+100, + 3e+100, + 0 + ], + "scale": 5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..4c9708b4a2e4 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_upper_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2e+100, + 3e+100, + 1, + 1e+100, + 1, + 0, + 1, + 0, + 0 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1, + 1e+100, + 2e+100 + ], + [ + 0, + 1, + 3e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 5e+99, + -0.5, + 1.6666666666666668e-101 + ], + "expectedCNORM": [ + 0, + 1e+100, + 5e+100 + ], + "scale": 1.6666666666666668e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..10ecd4350731 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_no_trans_upper_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1, + 0, + 1, + 3e+100, + 1, + 1e+100, + 2e+100 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1, + 1e+100, + 2e+100 + ], + [ + 0, + 1, + 3e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 5e+99, + -0.5, + 1.6666666666666668e-101 + ], + "expectedCNORM": [ + 0, + 1e+100, + 5e+100 + ], + "scale": 1.6666666666666668e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..88ff29e28376 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_lower_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1, + 0, + 1, + 8e+100, + 1, + 4e+100, + 7e+100 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4e+100, + 1, + 0 + ], + [ + 7e+100, + 8e+100, + 1 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 2e+100, + -0.5, + 6.25e-102 + ], + "expectedCNORM": [ + 1.1e+101, + 8e+100, + 0 + ], + "scale": 2.0833333333333334e-202 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..e9204bbaded1 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_lower_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 7e+100, + 8e+100, + 1, + 4e+100, + 1, + 0, + 1, + 0, + 0 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4e+100, + 1, + 0 + ], + [ + 7e+100, + 8e+100, + 1 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 2e+100, + -0.5, + 6.25e-102 + ], + "expectedCNORM": [ + 1.1e+101, + 8e+100, + 0 + ], + "scale": 2.0833333333333334e-202 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..8eb8d4d335f4 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_upper_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 3e+100, + 5e+100, + 1, + 2e+100, + 1, + 0, + 1, + 0, + 0 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1, + 2e+100, + 3e+100 + ], + [ + 0, + 1, + 5e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 2.5e-101, + -0.5, + 2.5e+100 + ], + "expectedCNORM": [ + 0, + 2e+100, + 8e+100 + ], + "scale": 2.5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..f611a1fc291d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/scaled_unit_trans_upper_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1, + 0, + 1, + 5e+100, + 1, + 2e+100, + 3e+100 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1, + 2e+100, + 3e+100 + ], + [ + 0, + 1, + 5e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 2.5e-101, + -0.5, + 2.5e+100 + ], + "expectedCNORM": [ + 0, + 2e+100, + 8e+100 + ], + "scale": 2.5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..4b874b9db01f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_lower_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1, + 0, + 1, + -1, + 1, + 2, + 3 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 1, + 0 + ], + [ + 3, + -1, + 1 + ] + ], + "X": [ + 1, + 3, + 3 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 5, + 1, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..5d0fd9090d91 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_lower_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 3, + -1, + 1, + 2, + 1, + 0, + 1, + 0, + 0 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 1, + 0 + ], + [ + 3, + -1, + 1 + ] + ], + "X": [ + 1, + 3, + 3 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 5, + 1, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..751dc2b51fa4 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_upper_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + -1, + 3, + 1, + 2, + 1, + 0, + 1, + 0, + 0 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1, + 2, + -1 + ], + [ + 0, + 1, + 3 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 2, + 4, + 1 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 0, + 2, + 4 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..c7033204975d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_no_trans_upper_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1, + 0, + 1, + 3, + 1, + 2, + -1 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1, + 2, + -1 + ], + [ + 0, + 1, + 3 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 2, + 4, + 1 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 0, + 2, + 4 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_lower_col_major.json new file mode 100644 index 000000000000..b93faf0cfbed --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_lower_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1, + 0, + 1, + -1, + 1, + 4, + 2 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4, + 1, + 0 + ], + [ + 2, + -1, + 1 + ] + ], + "X": [ + 7, + 0, + 1 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 6, + 1, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_lower_row_major.json new file mode 100644 index 000000000000..ac41de0f0e52 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_lower_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 2, + -1, + 1, + 4, + 1, + 0, + 1, + 0, + 0 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4, + 1, + 0 + ], + [ + 2, + -1, + 1 + ] + ], + "X": [ + 7, + 0, + 1 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 6, + 1, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_upper_col_major.json new file mode 100644 index 000000000000..e8f0ed4614a4 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_upper_col_major.json @@ -0,0 +1,65 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 3, + 4, + 1, + 2, + 1, + 0, + 1, + 0, + 0 + ], + "strideA1": 1, + "strideA2": -3, + "offsetA": 6, + "A_mat": [ + [ + 1, + 2, + 3 + ], + [ + 0, + 1, + 4 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 3, + 8 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 0, + 2, + 7 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_upper_row_major.json new file mode 100644 index 000000000000..650daecd6a0e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/mixed_strides/unit_trans_upper_row_major.json @@ -0,0 +1,65 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0, + 0, + 1, + 0, + 1, + 4, + 1, + 2, + 3 + ], + "strideA1": -3, + "strideA2": 1, + "offsetA": 6, + "A_mat": [ + [ + 1, + 2, + 3 + ], + [ + 0, + 1, + 4 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 3, + 8 + ], + "strideX": 1, + "offsetX": 0, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 0, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 0, + 2, + 7 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/large_off_diagonal_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/large_off_diagonal_col_major.json new file mode 100644 index 000000000000..396a5720c5ce --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/large_off_diagonal_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 1e+292, + 1e+292, + 0, + 1, + 1e+292, + 0, + 0, + 1 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1, + 1e+292, + 1e+292 + ], + [ + 0, + 1, + 1e+292 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 1, + 1 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 4.9999999999999997e-293, + -0.5, + 5e+291 + ], + "expectedCNORM": [ + 2e+292, + 1e+292, + 0 + ], + "scale": 4.9999999999999997e-293, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/large_off_diagonal_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/large_off_diagonal_row_major.json new file mode 100644 index 000000000000..5459e0286808 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/large_off_diagonal_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 0, + 0, + 1e+292, + 1, + 0, + 1e+292, + 1e+292, + 1 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1, + 1e+292, + 1e+292 + ], + [ + 0, + 1, + 1e+292 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 1, + 1 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 4.9999999999999997e-293, + -0.5, + 5e+291 + ], + "expectedCNORM": [ + 2e+292, + 1e+292, + 0 + ], + "scale": 4.9999999999999997e-293, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..e5e78138f630 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_lower_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 4, + 0, + 0, + 2, + 3, + 0, + -1, + 1, + 2 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 20, + 10, + 5 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 4.375, + 2.5, + 2.5 + ], + "expectedCNORM": [ + 0, + 2, + 2 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..891460710e65 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_lower_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 4, + 2, + -1, + 0, + 3, + 1, + 0, + 0, + 2 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 20, + 10, + 5 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 4.375, + 2.5, + 2.5 + ], + "expectedCNORM": [ + 0, + 2, + 2 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..2fd73bf79d4c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_upper_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 4, + 2, + -1, + 0, + 3, + 1, + 0, + 0, + 2 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 0, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 20, + 10, + 5 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 5, + 0, + 5 + ], + "expectedCNORM": [ + 3, + 1, + 0 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..6c32c0ee2755 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_no_trans_upper_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 4, + 0, + 0, + 2, + 3, + 0, + -1, + 1, + 2 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 0, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 20, + 10, + 5 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 5, + 0, + 5 + ], + "expectedCNORM": [ + 3, + 1, + 0 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..87da47af7c20 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_lower_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 4, + 0, + 0, + 2, + 3, + 0, + -1, + 1, + 2 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 4, + 5, + 2 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 0, + 2, + 2 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..d1e864c38588 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_lower_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 4, + 2, + -1, + 0, + 3, + 1, + 0, + 0, + 2 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 4, + 5, + 2 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 0, + 2, + 2 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..865ce1869de6 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_upper_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 4, + 2, + -1, + 0, + 3, + 1, + 0, + 1, + 2 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 1, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 4, + 5, + 2 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 0.5833333333333334, + 1.3333333333333333, + 1 + ], + "expectedCNORM": [ + 3, + 1, + 0 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..29cdb72547cd --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/non_unit_trans_upper_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 4, + 0, + 0, + 2, + 3, + 0, + -1, + 1, + 2 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 1, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 4, + 5, + 2 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 0.5833333333333334, + 1.3333333333333333, + 1 + ], + "expectedCNORM": [ + 3, + 1, + 0 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..6bf0e68ac7a5 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_lower_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0.01, + 0, + 0, + 4, + 0.1, + 0, + 3, + 2, + 1 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 0.1, + 0 + ], + [ + 3, + 4, + 0.01 + ] + ], + "X": [ + 1e+308, + 1e+308, + 1e+308 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1900, + -5, + 0.5 + ], + "expectedCNORM": [ + 0, + 4, + 5 + ], + "scale": 5e-309, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..559de217c66e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_lower_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 0.01, + 4, + 3, + 0, + 0.1, + 2, + 0, + 0, + 1 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 0.1, + 0 + ], + [ + 3, + 4, + 0.01 + ] + ], + "X": [ + 1e+308, + 1e+308, + 1e+308 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1900, + -5, + 0.5 + ], + "expectedCNORM": [ + 0, + 4, + 5 + ], + "scale": 5e-309, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..a03b22481b24 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_upper_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-30, + 4, + 3, + 0, + 1e-20, + 2, + 0, + 0, + 1e-10 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1e-10, + 2, + 3 + ], + [ + 0, + 1e-20, + 4 + ], + [ + 0, + 0, + 1e-30 + ] + ], + "X": [ + 3e+300, + 2e+300, + 1e+300 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 9.999999999999999e+29, + -3.9999999999999995e+50, + 7.999999999999998e+60 + ], + "expectedCNORM": [ + 7, + 2, + 0 + ], + "scale": 3.333333333333333e-301, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..fd7ba4056f28 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_no_trans_upper_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-30, + 0, + 0, + 4, + 1e-20, + 0, + 3, + 2, + 1e-10 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1e-10, + 2, + 3 + ], + [ + 0, + 1e-20, + 4 + ], + [ + 0, + 0, + 1e-30 + ] + ], + "X": [ + 3e+300, + 2e+300, + 1e+300 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 9.999999999999999e+29, + -3.9999999999999995e+50, + 7.999999999999998e+60 + ], + "expectedCNORM": [ + 7, + 2, + 0 + ], + "scale": 3.333333333333333e-301, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..e17bc0b6d366 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_lower_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-140, + 0, + 0, + 3, + 1e-120, + 0, + 2, + 1, + 1e-100 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1e-100, + 0, + 0 + ], + [ + 1, + 1e-120, + 0 + ], + [ + 2, + 3, + 1e-140 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 0.3333333333333333, + -1e+120, + 1e+220 + ], + "expectedCNORM": [ + 0, + 3, + 3 + ], + "scale": 1.1111111111111112e-241, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..93385bc69187 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_lower_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-140, + 3, + 2, + 0, + 1e-120, + 1, + 0, + 0, + 1e-100 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1e-100, + 0, + 0 + ], + [ + 1, + 1e-120, + 0 + ], + [ + 2, + 3, + 1e-140 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 0.3333333333333333, + -1e+120, + 1e+220 + ], + "expectedCNORM": [ + 0, + 3, + 3 + ], + "scale": 1.1111111111111112e-241, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..4a51d0940add --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_upper_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-120, + 8, + 7, + 0, + 1e-110, + 5, + 0, + 0, + 1e-100 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1e-100, + 5, + 7 + ], + [ + 0, + 1e-110, + 8 + ], + [ + 0, + 0, + 1e-120 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 8e+230, + -1e+110, + 0.2 + ], + "expectedCNORM": [ + 15, + 5, + 0 + ], + "scale": 2.0000000000000003e-201, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..d095c339b914 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_non_unit_trans_upper_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1e-120, + 0, + 0, + 8, + 1e-110, + 0, + 7, + 5, + 1e-100 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1e-100, + 5, + 7 + ], + [ + 0, + 1e-110, + 8 + ], + [ + 0, + 0, + 1e-120 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 8e+230, + -1e+110, + 0.2 + ], + "expectedCNORM": [ + 15, + 5, + 0 + ], + "scale": 2.0000000000000003e-201, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..c91f763b95b9 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_lower_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 0, + 0, + 3e+100, + 1, + 0, + 2e+100, + 1e+100, + 1 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 1e+100, + 1, + 0 + ], + [ + 2e+100, + 3e+100, + 1 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1.5e+100, + -0.5, + 5e-101 + ], + "expectedCNORM": [ + 0, + 3e+100, + 3.0000000000000002e+100 + ], + "scale": 5e-201, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..5652c94ce8ef --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_lower_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 3e+100, + 2e+100, + 0, + 1, + 1e+100, + 0, + 0, + 1 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 1e+100, + 1, + 0 + ], + [ + 2e+100, + 3e+100, + 1 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1.5e+100, + -0.5, + 5e-101 + ], + "expectedCNORM": [ + 0, + 3e+100, + 3.0000000000000002e+100 + ], + "scale": 5e-201, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..d96b8c82e4ea --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_upper_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 3e+100, + 2e+100, + 0, + 1, + 1e+100, + 0, + 0, + 1 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1, + 1e+100, + 2e+100 + ], + [ + 0, + 1, + 3e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1.6666666666666668e-101, + -0.5, + 5e+99 + ], + "expectedCNORM": [ + 5e+100, + 1e+100, + 0 + ], + "scale": 1.6666666666666668e-201, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..79263d579201 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_no_trans_upper_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 0, + 0, + 3e+100, + 1, + 0, + 2e+100, + 1e+100, + 1 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1, + 1e+100, + 2e+100 + ], + [ + 0, + 1, + 3e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1.6666666666666668e-101, + -0.5, + 5e+99 + ], + "expectedCNORM": [ + 5e+100, + 1e+100, + 0 + ], + "scale": 1.6666666666666668e-201, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..af9e94eb8a48 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_lower_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 0, + 0, + 8e+100, + 1, + 0, + 7e+100, + 4e+100, + 1 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4e+100, + 1, + 0 + ], + [ + 7e+100, + 8e+100, + 1 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 6.25e-102, + -0.5, + 2e+100 + ], + "expectedCNORM": [ + 0, + 8e+100, + 1.1e+101 + ], + "scale": 2.0833333333333334e-202, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..a7d879ca6dbd --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_lower_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 8e+100, + 7e+100, + 0, + 1, + 4e+100, + 0, + 0, + 1 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4e+100, + 1, + 0 + ], + [ + 7e+100, + 8e+100, + 1 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 6.25e-102, + -0.5, + 2e+100 + ], + "expectedCNORM": [ + 0, + 8e+100, + 1.1e+101 + ], + "scale": 2.0833333333333334e-202, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..114f47db36ff --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_upper_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 5e+100, + 3e+100, + 0, + 1, + 2e+100, + 0, + 0, + 1 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1, + 2e+100, + 3e+100 + ], + [ + 0, + 1, + 5e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 2.5e+100, + -0.5, + 2.5e-101 + ], + "expectedCNORM": [ + 8e+100, + 2e+100, + 0 + ], + "scale": 2.5e-201, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..b1c5feedc16d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/scaled_unit_trans_upper_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 0, + 0, + 5e+100, + 1, + 0, + 3e+100, + 2e+100, + 1 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1, + 2e+100, + 3e+100 + ], + [ + 0, + 1, + 5e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 2.5e+100, + -0.5, + 2.5e-101 + ], + "expectedCNORM": [ + 8e+100, + 2e+100, + 0 + ], + "scale": 2.5e-201, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..b6f48f353483 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_lower_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 0, + 0, + -1, + 1, + 0, + 3, + 2, + 1 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 1, + 0 + ], + [ + 3, + -1, + 1 + ] + ], + "X": [ + 3, + 3, + 1 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 0, + 1, + 5 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..23b2e1f0033e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_lower_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + -1, + 3, + 0, + 1, + 2, + 0, + 0, + 1 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 1, + 0 + ], + [ + 3, + -1, + 1 + ] + ], + "X": [ + 3, + 3, + 1 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 0, + 1, + 5 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..342423403ff9 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_upper_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 3, + -1, + 0, + 1, + 2, + 0, + 0, + 1 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1, + 2, + -1 + ], + [ + 0, + 1, + 3 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 4, + 2 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 4, + 2, + 0 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..da76554da8bc --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_no_trans_upper_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 0, + 0, + 3, + 1, + 0, + -1, + 2, + 1 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1, + 2, + -1 + ], + [ + 0, + 1, + 3 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 1, + 4, + 2 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 4, + 2, + 0 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_lower_col_major.json new file mode 100644 index 000000000000..a7120725fcd8 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_lower_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 0, + 0, + -1, + 1, + 0, + 2, + 4, + 1 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4, + 1, + 0 + ], + [ + 2, + -1, + 1 + ] + ], + "X": [ + 1, + 0, + 7 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 0, + 1, + 6 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_lower_row_major.json new file mode 100644 index 000000000000..c4d132cc0865 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_lower_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + -1, + 2, + 0, + 1, + 4, + 0, + 0, + 1 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4, + 1, + 0 + ], + [ + 2, + -1, + 1 + ] + ], + "X": [ + 1, + 0, + 7 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 0, + 1, + 6 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_upper_col_major.json new file mode 100644 index 000000000000..220579719b63 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_upper_col_major.json @@ -0,0 +1,67 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 4, + 3, + 0, + 1, + 2, + 0, + 0, + 1 + ], + "strideA1": -1, + "strideA2": -3, + "offsetA": 8, + "A_mat": [ + [ + 1, + 2, + 3 + ], + [ + 0, + 1, + 4 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 8, + 3, + 1 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 7, + 2, + 0 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_upper_row_major.json new file mode 100644 index 000000000000..f8726a35103e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/negative_strides/unit_trans_upper_row_major.json @@ -0,0 +1,67 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 1, + 0, + 0, + 4, + 1, + 0, + 3, + 2, + 1 + ], + "strideA1": -3, + "strideA2": -1, + "offsetA": 8, + "A_mat": [ + [ + 1, + 2, + 3 + ], + [ + 0, + 1, + 4 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 8, + 3, + 1 + ], + "strideX": -1, + "offsetX": 2, + "CNORM": [ + 0, + 0, + 0 + ], + "strideCNORM": -1, + "offsetCNORM": 2, + "expectedX": [ + 1, + 1, + 1 + ], + "expectedCNORM": [ + 7, + 2, + 0 + ], + "scale": 1, + "offsetExpectedX": 2, + "offsetExpectedCNORM": 2 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..85c8e576db6e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_lower_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 2.0, 0.0, 0.0 ], + [ 1.0, 3.0, 0.0 ], + [ -1.0, 2.0, 4.0 ] + ], + + "X": [ 5.0, 10.0, 20.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 2.5, 2.5, 4.375 ], + "expectedCNORM": [ 2.0, 2.0, 0.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..270fe94e0316 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_lower_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 2.0, 0.0, 0.0, 1.0, 3.0, 0.0, -1.0, 2.0, 4.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 2.0, 0.0, 0.0 ], + [ 1.0, 3.0, 0.0 ], + [ -1.0, 2.0, 4.0 ] + ], + + "X": [ 5.0, 10.0, 20.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 2.5, 2.5, 4.375 ], + "expectedCNORM": [ 2.0, 2.0, 0.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..2d483b7363f7 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_upper_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 2.0, 0.0, 0.0, 1.0, 3.0, 0.0, -1.0, 2.0, 4.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 2.0, 1.0, -1.0 ], + [ 0.0, 3.0, 2.0 ], + [ 0.0, 0.0, 4.0 ] + ], + + "X": [ 5.0, 10.0, 20.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 5.0, 0.0, 5.0 ], + "expectedCNORM": [ 0.0, 1.0, 3.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..a442288a57c8 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_no_trans_upper_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 2.0, 1.0, -1.0 ], + [ 0.0, 3.0, 2.0 ], + [ 0.0, 0.0, 4.0 ] + ], + + "X": [ 5.0, 10.0, 20.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 5.0, 0.0, 5.0 ], + "expectedCNORM": [ 0.0, 1.0, 3.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..4c855990bb17 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_lower_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 2.0, 0.0, 0.0 ], + [ 1.0, 3.0, 0.0 ], + [ -1.0, 2.0, 4.0 ] + ], + + "X": [ 2.0, 5.0, 4.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.0, 1.0 ], + "expectedCNORM": [ 2.0, 2.0, 0.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..0271c89738d2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_lower_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 2.0, 0.0, 0.0, 1.0, 3.0, 0.0, -1.0, 2.0, 4.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 2.0, 0.0, 0.0 ], + [ 1.0, 3.0, 0.0 ], + [ -1.0, 2.0, 4.0 ] + ], + + "X": [ 2.0, 5.0, 4.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.0, 1.0 ], + "expectedCNORM": [ 2.0, 2.0, 0.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..3ef3961c2378 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_upper_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 2.0, 1.0, 0.0, 1.0, 3.0, 0.0, -1.0, 2.0, 4.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 2.0, 1.0, -1.0 ], + [ 1.0, 3.0, 2.0 ], + [ 0.0, 0.0, 4.0 ] + ], + + "X": [ 2.0, 5.0, 4.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.3333333333333333, 0.58333333333333337 ], + "expectedCNORM": [ 0.0, 1.0, 3.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..340edb41e14c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/non_unit_trans_upper_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 2.0, 1.0, -1.0, 0.0, 3.0, 2.0, 0.0, 0.0, 4.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 2.0, 1.0, -1.0 ], + [ 1.0, 3.0, 2.0 ], + [ 0.0, 0.0, 4.0 ] + ], + + "X": [ 2.0, 5.0, 4.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.3333333333333333, 0.58333333333333337 ], + "expectedCNORM": [ 0.0, 1.0, 3.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/large_off_diagonal_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/large_off_diagonal_col_major.json new file mode 100644 index 000000000000..346e0cf11fa5 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/large_off_diagonal_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 0, + 0, + 1e+292, + 1, + 0, + 1e+292, + 1e+292, + 1 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1, + 1e+292, + 1e+292 + ], + [ + 0, + 1, + 1e+292 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 9999, + 1, + 1, + 1 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 5e+291, + -0.5, + 4.9999999999999997e-293 + ], + "expectedCNORM": [ + 9999, + 0, + 1e+292, + 2e+292 + ], + "scale": 4.9999999999999997e-293 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/large_off_diagonal_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/large_off_diagonal_row_major.json new file mode 100644 index 000000000000..b5283f552ab0 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/large_off_diagonal_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 1e+292, + 1e+292, + 0, + 1, + 1e+292, + 0, + 0, + 1 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1, + 1e+292, + 1e+292 + ], + [ + 0, + 1, + 1e+292 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 9999, + 1, + 1, + 1 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 5e+291, + -0.5, + 4.9999999999999997e-293 + ], + "expectedCNORM": [ + 9999, + 0, + 1e+292, + 2e+292 + ], + "scale": 4.9999999999999997e-293 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..b7d6619eea1d --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_lower_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 2, + 1, + -1, + 0, + 3, + 2, + 0, + 0, + 4 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 9999, + 5, + 10, + 20 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 2.5, + 2.5, + 4.375 + ], + "expectedCNORM": [ + 9999, + 2, + 2, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..bd03cee33e61 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_lower_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 2, + 0, + 0, + 1, + 3, + 0, + -1, + 2, + 4 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 9999, + 5, + 10, + 20 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 2.5, + 2.5, + 4.375 + ], + "expectedCNORM": [ + 9999, + 2, + 2, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..9b088717cdf6 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_upper_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 2, + 0, + 0, + 1, + 3, + 0, + -1, + 2, + 4 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 0, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 9999, + 5, + 10, + 20 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 5, + 0, + 5 + ], + "expectedCNORM": [ + 9999, + 0, + 1, + 3 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..96d43cf58dd5 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_no_trans_upper_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 2, + 1, + -1, + 0, + 3, + 2, + 0, + 0, + 4 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 0, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 9999, + 5, + 10, + 20 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 5, + 0, + 5 + ], + "expectedCNORM": [ + 9999, + 0, + 1, + 3 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..db79aa7d957b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_lower_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 2, + 1, + -1, + 0, + 3, + 2, + 0, + 0, + 4 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 9999, + 2, + 5, + 4 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1, + 1 + ], + "expectedCNORM": [ + 9999, + 2, + 2, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..59b64f34e006 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_lower_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 2, + 0, + 0, + 1, + 3, + 0, + -1, + 2, + 4 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 2, + 0, + 0 + ], + [ + 1, + 3, + 0 + ], + [ + -1, + 2, + 4 + ] + ], + "X": [ + 9999, + 2, + 5, + 4 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1, + 1 + ], + "expectedCNORM": [ + 9999, + 2, + 2, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..25d919971657 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_upper_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 2, + 1, + 0, + 1, + 3, + 0, + -1, + 2, + 4 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 1, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 9999, + 2, + 5, + 4 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1.3333333333333333, + 0.5833333333333334 + ], + "expectedCNORM": [ + 9999, + 0, + 1, + 3 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..0ff9a5bc711f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/non_unit_trans_upper_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 2, + 1, + -1, + 0, + 3, + 2, + 0, + 0, + 4 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 2, + 1, + -1 + ], + [ + 1, + 3, + 2 + ], + [ + 0, + 0, + 4 + ] + ], + "X": [ + 9999, + 2, + 5, + 4 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1.3333333333333333, + 0.5833333333333334 + ], + "expectedCNORM": [ + 9999, + 0, + 1, + 3 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..886832c8a027 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_lower_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 2, + 3, + 0, + 0.1, + 4, + 0, + 0, + 0.01 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 0.1, + 0 + ], + [ + 3, + 4, + 0.01 + ] + ], + "X": [ + 9999, + 1e+308, + 1e+308, + 1e+308 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 0.5, + -5, + 1900 + ], + "expectedCNORM": [ + 9999, + 5, + 4, + 0 + ], + "scale": 5e-309 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..493b5a7e7b64 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_lower_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 0, + 0, + 2, + 0.1, + 0, + 3, + 4, + 0.01 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 0.1, + 0 + ], + [ + 3, + 4, + 0.01 + ] + ], + "X": [ + 9999, + 1e+308, + 1e+308, + 1e+308 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 0.5, + -5, + 1900 + ], + "expectedCNORM": [ + 9999, + 5, + 4, + 0 + ], + "scale": 5e-309 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..5985fde241b0 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_upper_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1e-10, + 0, + 0, + 2, + 1e-20, + 0, + 3, + 4, + 1e-30 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1e-10, + 2, + 3 + ], + [ + 0, + 1e-20, + 4 + ], + [ + 0, + 0, + 1e-30 + ] + ], + "X": [ + 9999, + 1e+300, + 2e+300, + 3e+300 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 7.999999999999998e+60, + -3.9999999999999995e+50, + 9.999999999999999e+29 + ], + "expectedCNORM": [ + 9999, + 0, + 2, + 7 + ], + "scale": 3.333333333333333e-301 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..e1ee9a1f091a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_no_trans_upper_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1e-10, + 2, + 3, + 0, + 1e-20, + 4, + 0, + 0, + 1e-30 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1e-10, + 2, + 3 + ], + [ + 0, + 1e-20, + 4 + ], + [ + 0, + 0, + 1e-30 + ] + ], + "X": [ + 9999, + 1e+300, + 2e+300, + 3e+300 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 7.999999999999998e+60, + -3.9999999999999995e+50, + 9.999999999999999e+29 + ], + "expectedCNORM": [ + 9999, + 0, + 2, + 7 + ], + "scale": 3.333333333333333e-301 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..caf6a81ea981 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_lower_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1e-100, + 1, + 2, + 0, + 1e-120, + 3, + 0, + 0, + 1e-140 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1e-100, + 0, + 0 + ], + [ + 1, + 1e-120, + 0 + ], + [ + 2, + 3, + 1e-140 + ] + ], + "X": [ + 9999, + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1e+220, + -1e+120, + 0.3333333333333333 + ], + "expectedCNORM": [ + 9999, + 3, + 3, + 0 + ], + "scale": 1.1111111111111112e-241 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..890cc33b0082 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_lower_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1e-100, + 0, + 0, + 1, + 1e-120, + 0, + 2, + 3, + 1e-140 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1e-100, + 0, + 0 + ], + [ + 1, + 1e-120, + 0 + ], + [ + 2, + 3, + 1e-140 + ] + ], + "X": [ + 9999, + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1e+220, + -1e+120, + 0.3333333333333333 + ], + "expectedCNORM": [ + 9999, + 3, + 3, + 0 + ], + "scale": 1.1111111111111112e-241 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..b001f2153a2c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_upper_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1e-100, + 0, + 0, + 5, + 1e-110, + 0, + 7, + 8, + 1e-120 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1e-100, + 5, + 7 + ], + [ + 0, + 1e-110, + 8 + ], + [ + 0, + 0, + 1e-120 + ] + ], + "X": [ + 9999, + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 0.2, + -1e+110, + 8e+230 + ], + "expectedCNORM": [ + 9999, + 0, + 5, + 15 + ], + "scale": 2.0000000000000003e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..e393cb6b34fe --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_non_unit_trans_upper_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1e-100, + 5, + 7, + 0, + 1e-110, + 8, + 0, + 0, + 1e-120 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1e-100, + 5, + 7 + ], + [ + 0, + 1e-110, + 8 + ], + [ + 0, + 0, + 1e-120 + ] + ], + "X": [ + 9999, + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 0.2, + -1e+110, + 8e+230 + ], + "expectedCNORM": [ + 9999, + 0, + 5, + 15 + ], + "scale": 2.0000000000000003e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..dc19d85c263b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_lower_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 1e+100, + 2e+100, + 0, + 1, + 3e+100, + 0, + 0, + 1 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 1e+100, + 1, + 0 + ], + [ + 2e+100, + 3e+100, + 1 + ] + ], + "X": [ + 9999, + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 5e-101, + -0.5, + 1.5e+100 + ], + "expectedCNORM": [ + 9999, + 3.0000000000000002e+100, + 3e+100, + 0 + ], + "scale": 5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..74622fa19f73 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_lower_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 0, + 0, + 1e+100, + 1, + 0, + 2e+100, + 3e+100, + 1 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 1e+100, + 1, + 0 + ], + [ + 2e+100, + 3e+100, + 1 + ] + ], + "X": [ + 9999, + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 5e-101, + -0.5, + 1.5e+100 + ], + "expectedCNORM": [ + 9999, + 3.0000000000000002e+100, + 3e+100, + 0 + ], + "scale": 5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..1e7e8571a22e --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_upper_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 0, + 0, + 1e+100, + 1, + 0, + 2e+100, + 3e+100, + 1 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1, + 1e+100, + 2e+100 + ], + [ + 0, + 1, + 3e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 9999, + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 5e+99, + -0.5, + 1.6666666666666668e-101 + ], + "expectedCNORM": [ + 9999, + 0, + 1e+100, + 5e+100 + ], + "scale": 1.6666666666666668e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..530214b5d3e6 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_no_trans_upper_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 1e+100, + 2e+100, + 0, + 1, + 3e+100, + 0, + 0, + 1 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1, + 1e+100, + 2e+100 + ], + [ + 0, + 1, + 3e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 9999, + 3e+100, + 2e+100, + 1e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 5e+99, + -0.5, + 1.6666666666666668e-101 + ], + "expectedCNORM": [ + 9999, + 0, + 1e+100, + 5e+100 + ], + "scale": 1.6666666666666668e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..3957675d20e9 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_lower_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 4e+100, + 7e+100, + 0, + 1, + 8e+100, + 0, + 0, + 1 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4e+100, + 1, + 0 + ], + [ + 7e+100, + 8e+100, + 1 + ] + ], + "X": [ + 9999, + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 2e+100, + -0.5, + 6.25e-102 + ], + "expectedCNORM": [ + 9999, + 1.1e+101, + 8e+100, + 0 + ], + "scale": 2.0833333333333334e-202 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..327727281444 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_lower_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 0, + 0, + 4e+100, + 1, + 0, + 7e+100, + 8e+100, + 1 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4e+100, + 1, + 0 + ], + [ + 7e+100, + 8e+100, + 1 + ] + ], + "X": [ + 9999, + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 2e+100, + -0.5, + 6.25e-102 + ], + "expectedCNORM": [ + 9999, + 1.1e+101, + 8e+100, + 0 + ], + "scale": 2.0833333333333334e-202 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..cf73b85990d2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_upper_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 0, + 0, + 2e+100, + 1, + 0, + 3e+100, + 5e+100, + 1 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1, + 2e+100, + 3e+100 + ], + [ + 0, + 1, + 5e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 9999, + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 2.5e-101, + -0.5, + 2.5e+100 + ], + "expectedCNORM": [ + 9999, + 0, + 2e+100, + 8e+100 + ], + "scale": 2.5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..ca905724a678 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/scaled_unit_trans_upper_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 2e+100, + 3e+100, + 0, + 1, + 5e+100, + 0, + 0, + 1 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1, + 2e+100, + 3e+100 + ], + [ + 0, + 1, + 5e+100 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 9999, + 1e+100, + 2e+100, + 3e+100 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 2.5e-101, + -0.5, + 2.5e+100 + ], + "expectedCNORM": [ + 9999, + 0, + 2e+100, + 8e+100 + ], + "scale": 2.5e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..567c60d9ddaa --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_lower_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 2, + 3, + 0, + 1, + -1, + 0, + 0, + 1 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 1, + 0 + ], + [ + 3, + -1, + 1 + ] + ], + "X": [ + 9999, + 1, + 3, + 3 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1, + 1 + ], + "expectedCNORM": [ + 9999, + 5, + 1, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..7b7be33e6a63 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_lower_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 0, + 0, + 2, + 1, + 0, + 3, + -1, + 1 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 2, + 1, + 0 + ], + [ + 3, + -1, + 1 + ] + ], + "X": [ + 9999, + 1, + 3, + 3 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1, + 1 + ], + "expectedCNORM": [ + 9999, + 5, + 1, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..d1acd1f777f0 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_upper_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 0, + 0, + 2, + 1, + 0, + -1, + 3, + 1 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1, + 2, + -1 + ], + [ + 0, + 1, + 3 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 9999, + 2, + 4, + 1 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1, + 1 + ], + "expectedCNORM": [ + 9999, + 0, + 2, + 4 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..a3400e4a895a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_no_trans_upper_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 2, + -1, + 0, + 1, + 3, + 0, + 0, + 1 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1, + 2, + -1 + ], + [ + 0, + 1, + 3 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 9999, + 2, + 4, + 1 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1, + 1 + ], + "expectedCNORM": [ + 9999, + 0, + 2, + 4 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_lower_col_major.json new file mode 100644 index 000000000000..0e4857defbdb --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_lower_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 4, + 2, + 0, + 1, + -1, + 0, + 0, + 1 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4, + 1, + 0 + ], + [ + 2, + -1, + 1 + ] + ], + "X": [ + 9999, + 7, + 0, + 1 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1, + 1 + ], + "expectedCNORM": [ + 9999, + 6, + 1, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_lower_row_major.json new file mode 100644 index 000000000000..177308df8980 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_lower_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 0, + 0, + 4, + 1, + 0, + 2, + -1, + 1 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1, + 0, + 0 + ], + [ + 4, + 1, + 0 + ], + [ + 2, + -1, + 1 + ] + ], + "X": [ + 9999, + 7, + 0, + 1 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1, + 1 + ], + "expectedCNORM": [ + 9999, + 6, + 1, + 0 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_upper_col_major.json new file mode 100644 index 000000000000..7e85effdf432 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_upper_col_major.json @@ -0,0 +1,70 @@ +{ + "order": "column-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 0, + 0, + 2, + 1, + 0, + 3, + 4, + 1 + ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 1, + "A_mat": [ + [ + 1, + 2, + 3 + ], + [ + 0, + 1, + 4 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 9999, + 1, + 3, + 8 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1, + 1 + ], + "expectedCNORM": [ + 9999, + 0, + 2, + 7 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_upper_row_major.json new file mode 100644 index 000000000000..fb05b7da173c --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/offsets/unit_trans_upper_row_major.json @@ -0,0 +1,70 @@ +{ + "order": "row-major", + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + "N": 3, + "LDA": 3, + "A": [ + 9999, + 1, + 2, + 3, + 0, + 1, + 4, + 0, + 0, + 1 + ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 1, + "A_mat": [ + [ + 1, + 2, + 3 + ], + [ + 0, + 1, + 4 + ], + [ + 0, + 0, + 1 + ] + ], + "X": [ + 9999, + 1, + 3, + 8 + ], + "strideX": 1, + "offsetX": 1, + "CNORM": [ + 9999, + 0, + 0, + 0 + ], + "strideCNORM": 1, + "offsetCNORM": 1, + "expectedX": [ + 9999, + 1, + 1, + 1 + ], + "expectedCNORM": [ + 9999, + 0, + 2, + 7 + ], + "scale": 1 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..02890bb6cb1a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_lower_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 2.0, 3.0, 0.0, 0.1, 4.0, 0.0, 0.0, 0.01 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 2.0, 0.1, 0.0 ], + [ 3.0, 4.0, 0.01 ] + ], + + "X": [ 1.0e308, 1.0e308, 1.0e308 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 0.5, -5.0, 1900.0 ], + "expectedCNORM": [ 5.0, 4.0, 0.0 ], + "scale": 4.9999999999999995e-309 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..e62bea8b7272 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_lower_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "lower", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 0.0, 0.0, 2.0, 0.1, 0.0, 3.0, 4.0, 0.01 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 2.0, 0.1, 0.0 ], + [ 3.0, 4.0, 0.01 ] + ], + + "X": [ 1.0e308, 1.0e308, 1.0e308 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 0.5, -5.0, 1900.0 ], + "expectedCNORM": [ 5.0, 4.0, 0.0 ], + "scale": 4.9999999999999995e-309 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..2d54382803c8 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_upper_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0e-10, 0.0, 0.0, 2.0, 1.0e-20, 0.0, 3.0, 4.0, 1.0e-30 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0e-10, 2.0, 3.0 ], + [ 0.0, 1.0e-20, 4.0 ], + [ 0.0, 0.0, 1.0e-30 ] + ], + + "X": [ 1.0e300, 2.0e300, 3.0e300 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 7.9999999999999982e+060, -3.9999999999999995E+050, 9.9999999999999988E+029 ], + "expectedCNORM": [ 0.0, 2.0, 7.0 ], + "scale": 3.3333333333333330E-301 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..4795f1555414 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_no_trans_upper_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "upper", + "trans": "no-transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0e-10, 2.0, 3.0, 0.0, 1.0e-20, 4.0, 0.0, 0.0, 1.0e-30 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0e-10, 2.0, 3.0 ], + [ 0.0, 1.0e-20, 4.0 ], + [ 0.0, 0.0, 1.0e-30 ] + ], + + "X": [ 1.0e300, 2.0e300, 3.0e300 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 7.9999999999999982e+060, -3.9999999999999995E+050, 9.9999999999999988E+029 ], + "expectedCNORM": [ 0.0, 2.0, 7.0 ], + "scale": 3.3333333333333330E-301 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..cfe74034bfb8 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_lower_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0e-100, 1.0, 2.0, 0.0, 1.0e-120, 3.0, 0.0, 0.0, 1.0e-140 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0e-100, 0.0, 0.0 ], + [ 1.0, 1.0e-120, 0.0 ], + [ 2.0, 3.0, 1.0e-140 ] + ], + + "X": [ 1e100, 2e100, 3e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 9.99999999999999996E+219, -9.99999999999999980E+119, 3.33333333333333315E-001 ], + "expectedCNORM": [ 3.0, 3.0, 0.0 ], + "scale": 1.1111111111111112E-241 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..f1293abf6bca --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_lower_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "lower", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0e-100, 0.0, 0.0, 1.0, 1.0e-120, 0.0, 2.0, 3.0, 1.0e-140 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0e-100, 0.0, 0.0 ], + [ 1.0, 1.0e-120, 0.0 ], + [ 2.0, 3.0, 1.0e-140 ] + ], + + "X": [ 1e100, 2e100, 3e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 9.99999999999999996E+219, -9.99999999999999980E+119, 3.33333333333333315E-001 ], + "expectedCNORM": [ 3.0, 3.0, 0.0 ], + "scale": 1.1111111111111112E-241 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..58a983678ad5 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_upper_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0e-100, 0.0, 0.0, 5.0, 1.0e-110, 0.0, 7.0, 8.0, 1.0e-120 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0e-100, 5.0, 7.0 ], + [ 0.0, 1.0e-110, 8.0 ], + [ 0.0, 0.0, 1.0e-120 ] + ], + + "X": [ 1e100, 2e100, 3e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 2.00000000000000011102E-001, -1.00000000000000002357E+110, 8.00000000000000079653E+230 ], + "expectedCNORM": [ 0.0, 5.0, 15.0 ], + "scale": 2.0000000000000003e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..1e3c2bd7debd --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_non_unit_trans_upper_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "upper", + "trans": "transpose", + "diag": "non-unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0e-100, 5.0, 7.0, 0.0, 1.0e-110, 8.0, 0.0, 0.0, 1.0e-120 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0e-100, 5.0, 7.0 ], + [ 0.0, 1.0e-110, 8.0 ], + [ 0.0, 0.0, 1.0e-120 ] + ], + + "X": [ 1e100, 2e100, 3e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 2.00000000000000011102E-001, -1.00000000000000002357E+110, 8.00000000000000079653E+230 ], + "expectedCNORM": [ 0.0, 5.0, 15.0 ], + "scale": 2.0000000000000003e-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..2a02cd71bbf8 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_lower_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 1e100, 2e100, 0.0, 1.0, 3e100, 0.0, 0.0, 1.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 1e100, 1.0, 0.0 ], + [ 2e100, 3e100, 1.0 ] + ], + + "X": [ 1e100, 2e100, 3e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 5.00000000000000009996E-101, -5.00000000000000000000E-001, 1.49999999999999992672E+100 ], + "expectedCNORM": [ 3.00000000000000024198E+100, 3e100, 0.0 ], + "scale": 4.9999999999999999E-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..3e9bfe4eaadc --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_lower_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 0.0, 0.0, 1e100, 1.0, 0.0, 2e100, 3e100, 1.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 1e100, 1.0, 0.0 ], + [ 2e100, 3e100, 1.0 ] + ], + + "X": [ 1e100, 2e100, 3e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 5.00000000000000009996E-101, -5.00000000000000000000E-001, 1.49999999999999992672E+100 ], + "expectedCNORM": [ 3.00000000000000024198E+100, 3e100, 0.0 ], + "scale": 4.9999999999999999E-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..547f5e24e0b2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_upper_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 0.0, 0.0, 1e100, 1.0, 0.0, 2e100, 3e100, 1.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 1e100, 2e100 ], + [ 0.0, 1.0, 3e100 ], + [ 0.0, 0.0, 1.0 ] + ], + + "X": [ 3e100, 2e100, 1e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 5.00000000000000007951E+099, -5.00000000000000000000E-001, 1.66666666666666680573E-101 ], + "expectedCNORM": [ 0.0, 1.00000000000000001590E+100, 4.99999999999999988525E+100 ], + "scale": 1.6666666666666668E-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..c2e5b6b9b54f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_no_trans_upper_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 1e100, 2e100, 0.0, 1.0, 3e100, 0.0, 0.0, 1.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 1e100, 2e100 ], + [ 0.0, 1.0, 3e100 ], + [ 0.0, 0.0, 1.0 ] + ], + + "X": [ 3e100, 2e100, 1e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 5.00000000000000007951E+099, -5.00000000000000000000E-001, 1.66666666666666680573E-101 ], + "expectedCNORM": [ 0.0, 1.00000000000000001590E+100, 4.99999999999999988525E+100 ], + "scale": 1.6666666666666668E-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_lower_col_major.json new file mode 100644 index 000000000000..4c01934f7899 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_lower_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 4e100, 7e100, 0.0, 1.0, 8e100, 0.0, 0.0, 1.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 4e100, 1.0, 0.0 ], + [ 7e100, 8e100, 1.0 ] + ], + + "X": [ 1e100, 2e100, 3e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 2.00000000000000003181E+100, -5.00000000000000000000E-001, 6.25000000000000012495E-102 ], + "expectedCNORM": [ 1.10000000000000003692E+101, 8.00000000000000012722E+100, 0.00000000000000000000E+000 ], + "scale": 2.0833333333333334E-202 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_lower_row_major.json new file mode 100644 index 000000000000..2a75109cd4da --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_lower_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 0.0, 0.0, 4e100, 1.0, 0.0, 7e100, 8e100, 1.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 4e100, 1.0, 0.0 ], + [ 7e100, 8e100, 1.0 ] + ], + + "X": [ 1e100, 2e100, 3e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 2.00000000000000003181E+100, -5.00000000000000000000E-001, 6.25000000000000012495E-102 ], + "expectedCNORM": [ 1.10000000000000003692E+101, 8.00000000000000012722E+100, 0.00000000000000000000E+000 ], + "scale": 2.0833333333333334E-202 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_upper_col_major.json new file mode 100644 index 000000000000..be22e7a1fd39 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_upper_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 0.0, 0.0, 2e100, 1.0, 0.0, 3e100, 5e100, 1.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 2e100, 3e100 ], + [ 0.0, 1.0, 5e100 ], + [ 0.0, 0.0, 1.0 ] + ], + + "X": [ 1e100, 2e100, 3e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 2.50000000000000004998E-101, -5.00000000000000000000E-001, 2.49999999999999994262E+100 ], + "expectedCNORM": [ 0.0, 2.00000000000000003181E+100, 8.00000000000000012722E+100 ], + "scale": 2.5000000000000000E-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_upper_row_major.json new file mode 100644 index 000000000000..ae92331e949f --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/scaled_unit_trans_upper_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 2e100, 3e100, 0.0, 1.0, 5e100, 0.0, 0.0, 1.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 2e100, 3e100 ], + [ 0.0, 1.0, 5e100 ], + [ 0.0, 0.0, 1.0 ] + ], + + "X": [ 1e100, 2e100, 3e100 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 2.50000000000000004998E-101, -5.00000000000000000000E-001, 2.49999999999999994262E+100 ], + "expectedCNORM": [ 0.0, 2.00000000000000003181E+100, 8.00000000000000012722E+100 ], + "scale": 2.5000000000000000E-201 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_lower_col_major.json new file mode 100644 index 000000000000..167ce59f9435 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_lower_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 2.0, 3.0, 0.0, 1.0, -1.0, 0.0, 0.0, 1.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 2.0, 1.0, 0.0 ], + [ 3.0, -1.0, 1.0 ] + ], + + "X": [ 1.0, 3.0, 3.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.0, 1.0 ], + "expectedCNORM": [ 5.0, 1.0, 0.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_lower_row_major.json new file mode 100644 index 000000000000..8518ca33fef2 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_lower_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "lower", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 0.0, 0.0, 2.0, 1.0, 0.0, 3.0, -1.0, 1.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 2.0, 1.0, 0.0 ], + [ 3.0, -1.0, 1.0 ] + ], + + "X": [ 1.0, 3.0, 3.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.0, 1.0 ], + "expectedCNORM": [ 5.0, 1.0, 0.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_upper_col_major.json new file mode 100644 index 000000000000..89f8741de1c0 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_upper_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 0.0, 0.0, 2.0, 1.0, 0.0, -1.0, 3.0, 1.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 2.0, -1.0 ], + [ 0.0, 1.0, 3.0 ], + [ 0.0, 0.0, 1.0 ] + ], + + "X": [ 2.0, 4.0, 1.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.0, 1.0 ], + "expectedCNORM": [ 0.0, 2.0, 4.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_upper_row_major.json new file mode 100644 index 000000000000..4b73fcf04eed --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_no_trans_upper_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "upper", + "trans": "no-transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 2.0, -1.0, 0.0, 1.0, 3.0, 0.0, 0.0, 1.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 2.0, -1.0 ], + [ 0.0, 1.0, 3.0 ], + [ 0.0, 0.0, 1.0 ] + ], + + "X": [ 2.0, 4.0, 1.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.0, 1.0 ], + "expectedCNORM": [ 0.0, 2.0, 4.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_lower_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_lower_col_major.json new file mode 100644 index 000000000000..cd06bd588160 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_lower_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 4.0, 2.0, 0.0, 1.0, -1.0, 0.0, 0.0, 1.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 4.0, 1.0, 0.0 ], + [ 2.0, -1.0, 1.0 ] + ], + + "X": [ 7.0, 0.0, 1.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.0, 1.0 ], + "expectedCNORM": [ 6.0, 1.0, 0.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_lower_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_lower_row_major.json new file mode 100644 index 000000000000..2ae89ee1228a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_lower_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "lower", + "trans": "transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 0.0, 0.0, 4.0, 1.0, 0.0, 2.0, -1.0, 1.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 0.0, 0.0 ], + [ 4.0, 1.0, 0.0 ], + [ 2.0, -1.0, 1.0 ] + ], + + "X": [ 7.0, 0.0, 1.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.0, 1.0 ], + "expectedCNORM": [ 6.0, 1.0, 0.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_upper_col_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_upper_col_major.json new file mode 100644 index 000000000000..b8879864b700 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_upper_col_major.json @@ -0,0 +1,34 @@ +{ + "order": "column-major", + + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 0.0, 0.0, 2.0, 1.0, 0.0, 3.0, 4.0, 1.0 ], + "strideA1": 1, + "strideA2": 3, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 2.0, 3.0 ], + [ 0.0, 1.0, 4.0 ], + [ 0.0, 0.0, 1.0 ] + ], + + "X": [ 1.0, 3.0, 8.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.0, 1.0 ], + "expectedCNORM": [ 0.0, 2.0, 7.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_upper_row_major.json b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_upper_row_major.json new file mode 100644 index 000000000000..f4a2325b203b --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/fixtures/unit_trans_upper_row_major.json @@ -0,0 +1,34 @@ +{ + "order": "row-major", + + "uplo": "upper", + "trans": "transpose", + "diag": "unit", + "normin": "no", + + "N": 3, + "LDA": 3, + + "A": [ 1.0, 2.0, 3.0, 0.0, 1.0, 4.0, 0.0, 0.0, 1.0 ], + "strideA1": 3, + "strideA2": 1, + "offsetA": 0, + + "A_mat": [ + [ 1.0, 2.0, 3.0 ], + [ 0.0, 1.0, 4.0 ], + [ 0.0, 0.0, 1.0 ] + ], + + "X": [ 1.0, 3.0, 8.0 ], + "strideX": 1, + "offsetX": 0, + + "CNORM": [ 0.0, 0.0, 0.0 ], + "strideCNORM": 1, + "offsetCNORM": 0, + + "expectedX": [ 1.0, 1.0, 1.0 ], + "expectedCNORM": [ 0.0, 2.0, 7.0 ], + "scale": 1.0 +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/test.dlatrs.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/test.dlatrs.js new file mode 100644 index 000000000000..e6dd76b1e165 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/test.dlatrs.js @@ -0,0 +1,1274 @@ +/** +* @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 Float64Array = require( '@stdlib/array/float64' ); +var dlatrs = require( './../lib/dlatrs.js' ); + + +// FIXTURES // + +var NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/non_unit_no_trans_upper_row_major.json' ); +var NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/non_unit_no_trans_upper_col_major.json' ); +var NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/non_unit_no_trans_lower_row_major.json' ); +var NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/non_unit_no_trans_lower_col_major.json' ); + +var NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/non_unit_trans_lower_row_major.json' ); +var NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/non_unit_trans_lower_col_major.json' ); +var NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/non_unit_trans_upper_row_major.json' ); +var NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/non_unit_trans_upper_col_major.json' ); + +var UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/unit_no_trans_lower_row_major.json' ); +var UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/unit_no_trans_lower_col_major.json' ); +var UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/unit_no_trans_upper_row_major.json' ); +var UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/unit_no_trans_upper_col_major.json' ); + +var UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/unit_trans_lower_row_major.json' ); +var UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/unit_trans_lower_col_major.json' ); +var UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/unit_trans_upper_row_major.json' ); +var UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/unit_trans_upper_col_major.json' ); + +var SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/scaled_non_unit_no_trans_lower_row_major.json' ); +var SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/scaled_non_unit_no_trans_lower_col_major.json' ); +var SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/scaled_non_unit_no_trans_upper_row_major.json' ); +var SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/scaled_non_unit_no_trans_upper_col_major.json' ); + +var SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/scaled_non_unit_trans_lower_row_major.json' ); +var SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/scaled_non_unit_trans_lower_col_major.json' ); +var SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/scaled_non_unit_trans_upper_row_major.json' ); +var SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/scaled_non_unit_trans_upper_col_major.json' ); + +var SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/scaled_unit_no_trans_lower_row_major.json' ); +var SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/scaled_unit_no_trans_lower_col_major.json' ); +var SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/scaled_unit_no_trans_upper_row_major.json' ); +var SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/scaled_unit_no_trans_upper_col_major.json' ); + +var SCALED_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/scaled_unit_trans_lower_row_major.json' ); +var SCALED_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/scaled_unit_trans_lower_col_major.json' ); +var SCALED_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/scaled_unit_trans_upper_row_major.json' ); +var SCALED_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/scaled_unit_trans_upper_col_major.json' ); + +var LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR = require( './fixtures/large_off_diagonal_row_major.json' ); +var LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR = require( './fixtures/large_off_diagonal_col_major.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dlatrs, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 10', function test( t ) { + t.strictEqual( dlatrs.length, 10, 'returns expected value' ); + t.end(); +}); + +tape( 'the function throws an error if provided a first argument which is not a valid order', function test( t ) { + var values; + var CNORM; + var data; + var A; + var X; + var i; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + X = new Float64Array( data.X ); + CNORM = new Float64Array( data.CNORM ); + + 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() { + dlatrs( value, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + }; + } +}); + +tape( 'the function throws an error if provided a second argument which is not a valid matrix triangle', function test( t ) { + var values; + var CNORM; + var data; + var A; + var X; + var i; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + X = new Float64Array( data.X ); + CNORM = new Float64Array( data.CNORM ); + + 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() { + dlatrs( data.order, value, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + }; + } +}); + +tape( 'the function throws an error if provided a third argument which is not a valid transpose operation', function test( t ) { + var values; + var CNORM; + var data; + var A; + var X; + var i; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + X = new Float64Array( data.X ); + CNORM = new Float64Array( data.CNORM ); + + 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() { + dlatrs( data.order, data.uplo, value, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + }; + } +}); + +tape( 'the function throws an error if provided a fourth argument which is not a valid diagonal type', function test( t ) { + var values; + var CNORM; + var data; + var A; + var X; + var i; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + X = new Float64Array( data.X ); + CNORM = new Float64Array( data.CNORM ); + + 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() { + dlatrs( data.order, data.uplo, data.trans, value, data.normin, data.N, A, data.LDA, X, CNORM ); + }; + } +}); + +tape( 'the function throws an error if provided a fifth argument which is not yes or no', function test( t ) { + var values; + var CNORM; + var data; + var A; + var X; + var i; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + X = new Float64Array( data.X ); + CNORM = new Float64Array( data.CNORM ); + + 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() { + dlatrs( data.order, data.uplo, data.trans, data.diag, value, data.N, A, data.LDA, X, CNORM ); + }; + } +}); + +tape( 'the function throws an error if provided the seventh argument is not a valid LDA value', function test( t ) { + var values; + var CNORM; + var data; + var A; + var X; + var i; + + data = NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + X = new Float64Array( data.X ); + CNORM = new Float64Array( data.CNORM ); + + 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() { + dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, value, X, CNORM ); + }; + } +}); + +tape( 'the function returns the arrays unchanged for N = 0', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.CNORM ); + expectedX = new Float64Array( data.X ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, 0, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (row-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (column-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.order, data.uplo, data.trans, data.diag, data.normin, data.N, A, data.LDA, X, CNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/test.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/test.js new file mode 100644 index 000000000000..fe1f198c0c31 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/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 dlatrs = 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 dlatrs, '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 dlatrs.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 dlatrs = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dlatrs, 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 dlatrs; + var main; + + main = require( './../lib/dlatrs.js' ); + + dlatrs = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dlatrs, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/lapack/base/dlatrs/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/test.ndarray.js new file mode 100644 index 000000000000..3b1c1411a863 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlatrs/test/test.ndarray.js @@ -0,0 +1,5044 @@ +/** +* @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 Float64Array = require( '@stdlib/array/float64' ); +var dlatrs = require( './../lib/ndarray.js' ); + + +// FIXTURES // + +var NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/non_unit_no_trans_upper_row_major.json' ); +var NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/non_unit_no_trans_upper_col_major.json' ); +var NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/non_unit_no_trans_lower_row_major.json' ); +var NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/non_unit_no_trans_lower_col_major.json' ); + +var NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/non_unit_trans_lower_row_major.json' ); +var NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/non_unit_trans_lower_col_major.json' ); +var NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/non_unit_trans_upper_row_major.json' ); +var NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/non_unit_trans_upper_col_major.json' ); + +var UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/unit_no_trans_lower_row_major.json' ); +var UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/unit_no_trans_lower_col_major.json' ); +var UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/unit_no_trans_upper_row_major.json' ); +var UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/unit_no_trans_upper_col_major.json' ); + +var UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/unit_trans_lower_row_major.json' ); +var UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/unit_trans_lower_col_major.json' ); +var UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/unit_trans_upper_row_major.json' ); +var UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/unit_trans_upper_col_major.json' ); + +var SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/scaled_non_unit_no_trans_lower_row_major.json' ); +var SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/scaled_non_unit_no_trans_lower_col_major.json' ); +var SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/scaled_non_unit_no_trans_upper_row_major.json' ); +var SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/scaled_non_unit_no_trans_upper_col_major.json' ); + +var SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/scaled_non_unit_trans_lower_row_major.json' ); +var SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/scaled_non_unit_trans_lower_col_major.json' ); +var SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/scaled_non_unit_trans_upper_row_major.json' ); +var SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/scaled_non_unit_trans_upper_col_major.json' ); + +var SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/scaled_unit_no_trans_lower_row_major.json' ); +var SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/scaled_unit_no_trans_lower_col_major.json' ); +var SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/scaled_unit_no_trans_upper_row_major.json' ); +var SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/scaled_unit_no_trans_upper_col_major.json' ); + +var SCALED_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/scaled_unit_trans_lower_row_major.json' ); +var SCALED_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/scaled_unit_trans_lower_col_major.json' ); +var SCALED_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/scaled_unit_trans_upper_row_major.json' ); +var SCALED_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/scaled_unit_trans_upper_col_major.json' ); + +var LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR = require( './fixtures/large_off_diagonal_row_major.json' ); +var LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR = require( './fixtures/large_off_diagonal_col_major.json' ); + +var OFFSET_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/offsets/non_unit_no_trans_upper_row_major.json' ); +var OFFSET_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/offsets/non_unit_no_trans_upper_col_major.json' ); +var OFFSET_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/offsets/non_unit_no_trans_lower_row_major.json' ); +var OFFSET_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/offsets/non_unit_no_trans_lower_col_major.json' ); + +var OFFSET_NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/offsets/non_unit_trans_lower_row_major.json' ); +var OFFSET_NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/offsets/non_unit_trans_lower_col_major.json' ); +var OFFSET_NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/offsets/non_unit_trans_upper_row_major.json' ); +var OFFSET_NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/offsets/non_unit_trans_upper_col_major.json' ); + +var OFFSET_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/offsets/unit_no_trans_lower_row_major.json' ); +var OFFSET_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/offsets/unit_no_trans_lower_col_major.json' ); +var OFFSET_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/offsets/unit_no_trans_upper_row_major.json' ); +var OFFSET_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/offsets/unit_no_trans_upper_col_major.json' ); + +var OFFSET_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/offsets/unit_trans_lower_row_major.json' ); +var OFFSET_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/offsets/unit_trans_lower_col_major.json' ); +var OFFSET_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/offsets/unit_trans_upper_row_major.json' ); +var OFFSET_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/offsets/unit_trans_upper_col_major.json' ); + +var OFFSET_SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/offsets/scaled_non_unit_no_trans_lower_row_major.json' ); +var OFFSET_SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/offsets/scaled_non_unit_no_trans_lower_col_major.json' ); +var OFFSET_SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/offsets/scaled_non_unit_no_trans_upper_row_major.json' ); +var OFFSET_SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/offsets/scaled_non_unit_no_trans_upper_col_major.json' ); + +var OFFSET_SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/offsets/scaled_non_unit_trans_lower_row_major.json' ); +var OFFSET_SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/offsets/scaled_non_unit_trans_lower_col_major.json' ); +var OFFSET_SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/offsets/scaled_non_unit_trans_upper_row_major.json' ); +var OFFSET_SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/offsets/scaled_non_unit_trans_upper_col_major.json' ); + +var OFFSET_SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/offsets/scaled_unit_no_trans_lower_row_major.json' ); +var OFFSET_SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/offsets/scaled_unit_no_trans_lower_col_major.json' ); +var OFFSET_SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/offsets/scaled_unit_no_trans_upper_row_major.json' ); +var OFFSET_SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/offsets/scaled_unit_no_trans_upper_col_major.json' ); + +var OFFSET_SCALED_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/offsets/scaled_unit_trans_lower_row_major.json' ); +var OFFSET_SCALED_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/offsets/scaled_unit_trans_lower_col_major.json' ); +var OFFSET_SCALED_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/offsets/scaled_unit_trans_upper_row_major.json' ); +var OFFSET_SCALED_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/offsets/scaled_unit_trans_upper_col_major.json' ); + +var OFFSET_LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR = require( './fixtures/offsets/large_off_diagonal_row_major.json' ); +var OFFSET_LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR = require( './fixtures/offsets/large_off_diagonal_col_major.json' ); + +var LARGE_STRIDES_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/large_strides/non_unit_no_trans_upper_row_major.json' ); +var LARGE_STRIDES_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/large_strides/non_unit_no_trans_upper_col_major.json' ); +var LARGE_STRIDES_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/large_strides/non_unit_no_trans_lower_row_major.json' ); +var LARGE_STRIDES_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/large_strides/non_unit_no_trans_lower_col_major.json' ); + +var LARGE_STRIDES_NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/large_strides/non_unit_trans_lower_row_major.json' ); +var LARGE_STRIDES_NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/large_strides/non_unit_trans_lower_col_major.json' ); +var LARGE_STRIDES_NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/large_strides/non_unit_trans_upper_row_major.json' ); +var LARGE_STRIDES_NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/large_strides/non_unit_trans_upper_col_major.json' ); + +var LARGE_STRIDES_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/large_strides/unit_no_trans_lower_row_major.json' ); +var LARGE_STRIDES_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/large_strides/unit_no_trans_lower_col_major.json' ); +var LARGE_STRIDES_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/large_strides/unit_no_trans_upper_row_major.json' ); +var LARGE_STRIDES_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/large_strides/unit_no_trans_upper_col_major.json' ); + +var LARGE_STRIDES_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/large_strides/unit_trans_lower_row_major.json' ); +var LARGE_STRIDES_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/large_strides/unit_trans_lower_col_major.json' ); +var LARGE_STRIDES_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/large_strides/unit_trans_upper_row_major.json' ); +var LARGE_STRIDES_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/large_strides/unit_trans_upper_col_major.json' ); + +var LARGE_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/large_strides/scaled_non_unit_no_trans_lower_row_major.json' ); +var LARGE_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/large_strides/scaled_non_unit_no_trans_lower_col_major.json' ); +var LARGE_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/large_strides/scaled_non_unit_no_trans_upper_row_major.json' ); +var LARGE_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/large_strides/scaled_non_unit_no_trans_upper_col_major.json' ); + +var LARGE_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/large_strides/scaled_non_unit_trans_lower_row_major.json' ); +var LARGE_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/large_strides/scaled_non_unit_trans_lower_col_major.json' ); +var LARGE_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/large_strides/scaled_non_unit_trans_upper_row_major.json' ); +var LARGE_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/large_strides/scaled_non_unit_trans_upper_col_major.json' ); + +var LARGE_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/large_strides/scaled_unit_no_trans_lower_row_major.json' ); +var LARGE_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/large_strides/scaled_unit_no_trans_lower_col_major.json' ); +var LARGE_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/large_strides/scaled_unit_no_trans_upper_row_major.json' ); +var LARGE_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/large_strides/scaled_unit_no_trans_upper_col_major.json' ); + +var LARGE_STRIDES_SCALED_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/large_strides/scaled_unit_trans_lower_row_major.json' ); +var LARGE_STRIDES_SCALED_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/large_strides/scaled_unit_trans_lower_col_major.json' ); +var LARGE_STRIDES_SCALED_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/large_strides/scaled_unit_trans_upper_row_major.json' ); +var LARGE_STRIDES_SCALED_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/large_strides/scaled_unit_trans_upper_col_major.json' ); + +var LARGE_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR = require( './fixtures/large_strides/large_off_diagonal_row_major.json' ); +var LARGE_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR = require( './fixtures/large_strides/large_off_diagonal_col_major.json' ); + +var NEGATIVE_STRIDES_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/negative_strides/non_unit_no_trans_upper_row_major.json' ); +var NEGATIVE_STRIDES_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/negative_strides/non_unit_no_trans_upper_col_major.json' ); +var NEGATIVE_STRIDES_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/negative_strides/non_unit_no_trans_lower_row_major.json' ); +var NEGATIVE_STRIDES_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/negative_strides/non_unit_no_trans_lower_col_major.json' ); + +var NEGATIVE_STRIDES_NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/negative_strides/non_unit_trans_lower_row_major.json' ); +var NEGATIVE_STRIDES_NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/negative_strides/non_unit_trans_lower_col_major.json' ); +var NEGATIVE_STRIDES_NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/negative_strides/non_unit_trans_upper_row_major.json' ); +var NEGATIVE_STRIDES_NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/negative_strides/non_unit_trans_upper_col_major.json' ); + +var NEGATIVE_STRIDES_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/negative_strides/unit_no_trans_lower_row_major.json' ); +var NEGATIVE_STRIDES_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/negative_strides/unit_no_trans_lower_col_major.json' ); +var NEGATIVE_STRIDES_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/negative_strides/unit_no_trans_upper_row_major.json' ); +var NEGATIVE_STRIDES_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/negative_strides/unit_no_trans_upper_col_major.json' ); + +var NEGATIVE_STRIDES_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/negative_strides/unit_trans_lower_row_major.json' ); +var NEGATIVE_STRIDES_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/negative_strides/unit_trans_lower_col_major.json' ); +var NEGATIVE_STRIDES_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/negative_strides/unit_trans_upper_row_major.json' ); +var NEGATIVE_STRIDES_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/negative_strides/unit_trans_upper_col_major.json' ); + +var NEGATIVE_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/negative_strides/scaled_non_unit_no_trans_lower_row_major.json' ); +var NEGATIVE_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/negative_strides/scaled_non_unit_no_trans_lower_col_major.json' ); +var NEGATIVE_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/negative_strides/scaled_non_unit_no_trans_upper_row_major.json' ); +var NEGATIVE_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/negative_strides/scaled_non_unit_no_trans_upper_col_major.json' ); + +var NEGATIVE_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/negative_strides/scaled_non_unit_trans_lower_row_major.json' ); +var NEGATIVE_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/negative_strides/scaled_non_unit_trans_lower_col_major.json' ); +var NEGATIVE_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/negative_strides/scaled_non_unit_trans_upper_row_major.json' ); +var NEGATIVE_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/negative_strides/scaled_non_unit_trans_upper_col_major.json' ); + +var NEGATIVE_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/negative_strides/scaled_unit_no_trans_lower_row_major.json' ); +var NEGATIVE_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/negative_strides/scaled_unit_no_trans_lower_col_major.json' ); +var NEGATIVE_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/negative_strides/scaled_unit_no_trans_upper_row_major.json' ); +var NEGATIVE_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/negative_strides/scaled_unit_no_trans_upper_col_major.json' ); + +var NEGATIVE_STRIDES_SCALED_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/negative_strides/scaled_unit_trans_lower_row_major.json' ); +var NEGATIVE_STRIDES_SCALED_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/negative_strides/scaled_unit_trans_lower_col_major.json' ); +var NEGATIVE_STRIDES_SCALED_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/negative_strides/scaled_unit_trans_upper_row_major.json' ); +var NEGATIVE_STRIDES_SCALED_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/negative_strides/scaled_unit_trans_upper_col_major.json' ); + +var NEGATIVE_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR = require( './fixtures/negative_strides/large_off_diagonal_row_major.json' ); +var NEGATIVE_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR = require( './fixtures/negative_strides/large_off_diagonal_col_major.json' ); + +var MIXED_STRIDES_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/mixed_strides/non_unit_no_trans_upper_row_major.json' ); +var MIXED_STRIDES_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/mixed_strides/non_unit_no_trans_upper_col_major.json' ); +var MIXED_STRIDES_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/mixed_strides/non_unit_no_trans_lower_row_major.json' ); +var MIXED_STRIDES_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/mixed_strides/non_unit_no_trans_lower_col_major.json' ); + +var MIXED_STRIDES_NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/mixed_strides/non_unit_trans_lower_row_major.json' ); +var MIXED_STRIDES_NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/mixed_strides/non_unit_trans_lower_col_major.json' ); +var MIXED_STRIDES_NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/mixed_strides/non_unit_trans_upper_row_major.json' ); +var MIXED_STRIDES_NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/mixed_strides/non_unit_trans_upper_col_major.json' ); + +var MIXED_STRIDES_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/mixed_strides/unit_no_trans_lower_row_major.json' ); +var MIXED_STRIDES_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/mixed_strides/unit_no_trans_lower_col_major.json' ); +var MIXED_STRIDES_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/mixed_strides/unit_no_trans_upper_row_major.json' ); +var MIXED_STRIDES_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/mixed_strides/unit_no_trans_upper_col_major.json' ); + +var MIXED_STRIDES_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/mixed_strides/unit_trans_lower_row_major.json' ); +var MIXED_STRIDES_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/mixed_strides/unit_trans_lower_col_major.json' ); +var MIXED_STRIDES_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/mixed_strides/unit_trans_upper_row_major.json' ); +var MIXED_STRIDES_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/mixed_strides/unit_trans_upper_col_major.json' ); + +var MIXED_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/mixed_strides/scaled_non_unit_no_trans_lower_row_major.json' ); +var MIXED_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/mixed_strides/scaled_non_unit_no_trans_lower_col_major.json' ); +var MIXED_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/mixed_strides/scaled_non_unit_no_trans_upper_row_major.json' ); +var MIXED_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/mixed_strides/scaled_non_unit_no_trans_upper_col_major.json' ); + +var MIXED_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/mixed_strides/scaled_non_unit_trans_lower_row_major.json' ); +var MIXED_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/mixed_strides/scaled_non_unit_trans_lower_col_major.json' ); +var MIXED_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/mixed_strides/scaled_non_unit_trans_upper_row_major.json' ); +var MIXED_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/mixed_strides/scaled_non_unit_trans_upper_col_major.json' ); + +var MIXED_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR = require( './fixtures/mixed_strides/scaled_unit_no_trans_lower_row_major.json' ); +var MIXED_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR = require( './fixtures/mixed_strides/scaled_unit_no_trans_lower_col_major.json' ); +var MIXED_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR = require( './fixtures/mixed_strides/scaled_unit_no_trans_upper_row_major.json' ); +var MIXED_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR = require( './fixtures/mixed_strides/scaled_unit_no_trans_upper_col_major.json' ); + +var MIXED_STRIDES_SCALED_UNIT_TRANS_LOWER_ROW_MAJOR = require( './fixtures/mixed_strides/scaled_unit_trans_lower_row_major.json' ); +var MIXED_STRIDES_SCALED_UNIT_TRANS_LOWER_COL_MAJOR = require( './fixtures/mixed_strides/scaled_unit_trans_lower_col_major.json' ); +var MIXED_STRIDES_SCALED_UNIT_TRANS_UPPER_ROW_MAJOR = require( './fixtures/mixed_strides/scaled_unit_trans_upper_row_major.json' ); +var MIXED_STRIDES_SCALED_UNIT_TRANS_UPPER_COL_MAJOR = require( './fixtures/mixed_strides/scaled_unit_trans_upper_col_major.json' ); + +var MIXED_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR = require( './fixtures/mixed_strides/large_off_diagonal_row_major.json' ); +var MIXED_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR = require( './fixtures/mixed_strides/large_off_diagonal_col_major.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dlatrs, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 15', function test( t ) { + t.strictEqual( dlatrs.length, 15, 'returns expected value' ); + t.end(); +}); + +tape( 'the function throws an error if provided the first argument which is not a valid matrix triangle', function test( t ) { + var values; + var CNORM; + var data; + var A; + var X; + var i; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + X = new Float64Array( data.X ); + CNORM = new Float64Array( data.CNORM ); + + 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() { + dlatrs( value, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + }; + } +}); + +tape( 'the function throws an error if provided a second argument which is not a valid transpose operation', function test( t ) { + var values; + var CNORM; + var data; + var A; + var X; + var i; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + X = new Float64Array( data.X ); + CNORM = new Float64Array( data.CNORM ); + + 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() { + dlatrs( data.uplo, value, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + }; + } +}); + +tape( 'the function throws an error if provided a third argument which is not a valid diagonal type', function test( t ) { + var values; + var CNORM; + var data; + var A; + var X; + var i; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + X = new Float64Array( data.X ); + CNORM = new Float64Array( data.CNORM ); + + 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() { + dlatrs( data.uplo, data.trans, value, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + }; + } +}); + +tape( 'the function throws an error if provided a fourth argument which is not yes or no', function test( t ) { + var values; + var CNORM; + var data; + var A; + var X; + var i; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + X = new Float64Array( data.X ); + CNORM = new Float64Array( data.CNORM ); + + 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() { + dlatrs( data.uplo, data.trans, data.diag, value, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + }; + } +}); + +tape( 'the function returns the arrays unchanged for N = 0', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.CNORM ); + expectedX = new Float64Array( data.X ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, 0, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = SCALED_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (row-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (column-major) (upper triangular) (no-transpose) (non-unit)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_SCALED_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (row-major) (upper triangular) (no-transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (column-major) (upper triangular) (no-transpose) (non-unit) (offsets)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = OFFSET_LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_SCALED_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (row-major) (upper triangular) (no-transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (column-major) (upper triangular) (no-transpose) (non-unit) (negative strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = NEGATIVE_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_SCALED_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (row-major) (upper triangular) (no-transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (column-major) (upper triangular) (no-transpose) (non-unit) (large strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = LARGE_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (no-transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (no-transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (no-transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (no-transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (lower triangular) (transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (lower triangular) (transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (row-major) (upper triangular) (transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for normal values (column-major) (upper triangular) (transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_NON_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_NON_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_NON_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_NON_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (no-transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (no-transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_UNIT_NO_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (no-transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (no-transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_UNIT_NO_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (lower triangular) (transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_UNIT_TRANS_LOWER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (lower triangular) (transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_UNIT_TRANS_LOWER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (row-major) (upper triangular) (transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_UNIT_TRANS_UPPER_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large values (column-major) (upper triangular) (transpose) (unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_SCALED_UNIT_TRANS_UPPER_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (row-major) (upper triangular) (no-transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_ROW_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns expected output for large off diagonal elements (column-major) (upper triangular) (no-transpose) (non-unit) (mixed strides)', function test( t ) { + var expectedCNORM; + var expectedX; + var scale; + var CNORM; + var data; + var A; + var X; + + data = MIXED_STRIDES_LARGE_OFF_DIAGONAL_ELEMENTS_COL_MAJOR; + + A = new Float64Array( data.A ); + CNORM = new Float64Array( data.CNORM ); + X = new Float64Array( data.X ); + + expectedCNORM = new Float64Array( data.expectedCNORM ); + expectedX = new Float64Array( data.expectedX ); + + scale = dlatrs( data.uplo, data.trans, data.diag, data.normin, data.N, A, data.strideA1, data.strideA2, data.offsetA, X, data.strideX, data.offsetX, CNORM, data.strideCNORM, data.offsetCNORM ); + + t.strictEqual( scale, data.scale, 'returns expected value' ); + t.deepEqual( X, expectedX, 'returns expected value' ); + t.deepEqual( CNORM, expectedCNORM, 'returns expected value' ); + + t.end(); +});