From cdc7d14845c1b464457e5a62a0025b0b24f3059a Mon Sep 17 00:00:00 2001 From: JaySoni1 Date: Sat, 22 Mar 2025 23:09:04 +0530 Subject: [PATCH 01/10] Update test.ndarray.js Signed-off-by: JaySoni1 --- .../base/dge-trans/test/test.ndarray.js | 721 +++--------------- 1 file changed, 103 insertions(+), 618 deletions(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js index 67ba59d12dfc..3cabb75df872 100644 --- a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js @@ -25,6 +25,11 @@ var flatten2d = require( '@stdlib/array/base/flatten2d' ); var Float64Array = require( '@stdlib/array/float64' ); var dgetrans = require( './../lib/ndarray.js' ); +// HELPERS // + +function createMatrix(arr, shape, columnMajor) { + return new Float64Array(flatten2d(arr, shape, columnMajor)); +} // TESTS // @@ -39,675 +44,155 @@ tape( 'the function has an arity of 10', function test( t ) { t.end(); }); -tape( 'the function transposes a matrix (tall rectangular, row-major, row-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 2; - - A = [ - [ 1.0, 2.0 ], - [ 3.0, 4.0 ], - [ 5.0, 6.0 ], - [ 7.0, 8.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], false ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 3.0, 5.0, 7.0 ], - [ 2.0, 4.0, 6.0, 8.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], false ) ); - - actual = dgetrans( M, N, A, N, 1, 0, out, M, 1, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); +// ------------------------------------------------------------------ +// Test cases for different shapes and memory layouts +// ------------------------------------------------------------------ - t.end(); -}); +tape( 'transposes a tall rectangular matrix (row-major -> row-major)', function test( t ) { + var M = 4, N = 2; -tape( 'the function transposes a matrix (tall rectangular, row-major, column-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 2; - - A = [ - [ 1.0, 2.0 ], - [ 3.0, 4.0 ], - [ 5.0, 6.0 ], - [ 7.0, 8.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], false ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 3.0, 5.0, 7.0 ], - [ 2.0, 4.0, 6.0, 8.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], true ) ); - - actual = dgetrans( M, N, A, N, 1, 0, out, 1, N, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function transposes a matrix (tall rectangular, column-major, column-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 2; - - A = [ - [ 1.0, 2.0 ], - [ 3.0, 4.0 ], - [ 5.0, 6.0 ], - [ 7.0, 8.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], true ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 3.0, 5.0, 7.0 ], - [ 2.0, 4.0, 6.0, 8.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], true ) ); - - actual = dgetrans( M, N, A, 1, M, 0, out, 1, N, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); + var A = createMatrix([ + [1, 2], + [3, 4], + [5, 6], + [7, 8] + ], [M, N], false); -tape( 'the function transposes a matrix (tall rectangular, column-major, row-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 2; - - A = [ - [ 1.0, 2.0 ], - [ 3.0, 4.0 ], - [ 5.0, 6.0 ], - [ 7.0, 8.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], true ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 3.0, 5.0, 7.0 ], - [ 2.0, 4.0, 6.0, 8.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], false ) ); - - actual = dgetrans( M, N, A, 1, M, 0, out, M, 1, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); + var out = new Float64Array(M * N); - t.end(); -}); + var expected = createMatrix([ + [1, 3, 5, 7], + [2, 4, 6, 8] + ], [N, M], false); -tape( 'the function transposes a matrix (wide rectangular, row-major, row-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 2; - N = 4; - - A = [ - [ 1.0, 2.0, 3.0, 4.0 ], - [ 5.0, 6.0, 7.0, 8.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], false ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 5.0 ], - [ 2.0, 6.0 ], - [ 3.0, 7.0 ], - [ 4.0, 8.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], false ) ); - - actual = dgetrans( M, N, A, N, 1, 0, out, M, 1, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); + var actual = dgetrans(M, N, A, N, 1, 0, out, M, 1, 0); + t.deepEqual(actual, expected, 'returns expected transpose'); t.end(); }); -tape( 'the function transposes a matrix (wide rectangular, row-major, column-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 2; - N = 4; - - A = [ - [ 1.0, 2.0, 3.0, 4.0 ], - [ 5.0, 6.0, 7.0, 8.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], false ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 5.0 ], - [ 2.0, 6.0 ], - [ 3.0, 7.0 ], - [ 4.0, 8.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], true ) ); - - actual = dgetrans( M, N, A, N, 1, 0, out, 1, N, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); +tape( 'transposes a tall rectangular matrix (row-major -> column-major)', function test( t ) { + var M = 4, N = 2; - t.end(); -}); + var A = createMatrix([ + [1, 2], + [3, 4], + [5, 6], + [7, 8] + ], [M, N], false); -tape( 'the function transposes a matrix (wide rectangular, column-major, column-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 2; - N = 4; - - A = [ - [ 1.0, 2.0, 3.0, 4.0 ], - [ 5.0, 6.0, 7.0, 8.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], true ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 5.0 ], - [ 2.0, 6.0 ], - [ 3.0, 7.0 ], - [ 4.0, 8.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], true ) ); - - actual = dgetrans( M, N, A, 1, M, 0, out, 1, N, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); + var out = new Float64Array(M * N); - t.end(); -}); + var expected = createMatrix([ + [1, 3, 5, 7], + [2, 4, 6, 8] + ], [N, M], true); -tape( 'the function transposes a matrix (wide rectangular, column-major, row-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 2; - N = 4; - - A = [ - [ 1.0, 2.0, 3.0, 4.0 ], - [ 5.0, 6.0, 7.0, 8.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], true ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 5.0 ], - [ 2.0, 6.0 ], - [ 3.0, 7.0 ], - [ 4.0, 8.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], false ) ); - - actual = dgetrans( M, N, A, 1, M, 0, out, M, 1, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); + var actual = dgetrans(M, N, A, N, 1, 0, out, 1, N, 0); + t.deepEqual(actual, expected, 'returns expected transpose'); t.end(); }); -tape( 'the function transposes a matrix (square, row-major, row-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 2; - N = 2; - - A = [ - [ 1.0, 2.0 ], - [ 3.0, 4.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], false ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 3.0 ], - [ 2.0, 4.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], false ) ); - - actual = dgetrans( M, N, A, N, 1, 0, out, M, 1, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); +tape( 'transposes a wide rectangular matrix (column-major -> row-major)', function test( t ) { + var M = 2, N = 4; - t.end(); -}); + var A = createMatrix([ + [1, 2, 3, 4], + [5, 6, 7, 8] + ], [M, N], true); -tape( 'the function transposes a matrix (square, row-major, column-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 2; - N = 2; - - A = [ - [ 1.0, 2.0 ], - [ 3.0, 4.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], false ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 3.0 ], - [ 2.0, 4.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], true ) ); - - actual = dgetrans( M, N, A, N, 1, 0, out, 1, N, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); + var out = new Float64Array(M * N); - t.end(); -}); + var expected = createMatrix([ + [1, 5], + [2, 6], + [3, 7], + [4, 8] + ], [N, M], false); -tape( 'the function transposes a matrix (square, column-major, column-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 2; - N = 2; - - A = [ - [ 1.0, 2.0 ], - [ 3.0, 4.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], true ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 3.0 ], - [ 2.0, 4.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], true ) ); - - actual = dgetrans( M, N, A, 1, M, 0, out, 1, N, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); + var actual = dgetrans(M, N, A, 1, M, 0, out, M, 1, 0); + t.deepEqual(actual, expected, 'returns expected transpose'); t.end(); }); -tape( 'the function transposes a matrix (square, column-major, row-major)', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 2; - N = 2; - - A = [ - [ 1.0, 2.0 ], - [ 3.0, 4.0 ] - ]; - A = new Float64Array( flatten2d( A, [ M, N ], true ) ); - out = new Float64Array( M*N ); - - expected = [ - [ 1.0, 3.0 ], - [ 2.0, 4.0 ] - ]; - expected = new Float64Array( flatten2d( expected, [ N, M ], false ) ); - - actual = dgetrans( M, N, A, 1, M, 0, out, M, 1, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); +tape( 'transposes a square matrix (column-major -> column-major)', function test( t ) { + var M = 3, N = 3; -tape( 'the function returns a reference to the output matrix', function test( t ) { - var actual; - var out; - var A; - var M; - var N; + var A = createMatrix([ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9] + ], [M, N], true); - M = 2; - N = 2; + var out = new Float64Array(M * N); - A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); - out = new Float64Array( M*N ); + var expected = createMatrix([ + [1, 4, 7], + [2, 5, 8], + [3, 6, 9] + ], [N, M], true); - actual = dgetrans( M, N, A, N, 1, 0, out, N, 1, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); + var actual = dgetrans(M, N, A, 1, M, 0, out, 1, N, 0); + t.deepEqual(actual, expected, 'returns expected transpose'); t.end(); }); -tape( 'the function supports specifying the strides of the first and second dimensions of `A`', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 3; - - /* eslint-disable array-element-newline, no-multi-spaces, no-mixed-spaces-and-tabs */ - - A = new Float64Array([ - 1, 999, 2, 999, 3, 999, - 999, 999, 999, 999, 999, 999, - 4, 999, 5, 999, 6, 999, - 999, 999, 999, 999, 999, 999, - 7, 999, 8, 999, 9, 999, - 999, 999, 999, 999, 999, 999, - 10, 999, 11, 999, 12, 999, - 999, 999, 999, 999, 999, 999 - ]); - - /* eslint-enable array-element-newline, no-multi-spaces, no-mixed-spaces-and-tabs */ +tape( 'transposes an empty matrix (M=0)', function test( t ) { + var M = 0, N = 3; - out = new Float64Array( M*N ); + var A = new Float64Array(0); + var out = new Float64Array(0); + var expected = new Float64Array(0); - expected = 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 ] ); // eslint-disable-line max-len - - actual = dgetrans( M, N, A, 12, 2, 0, out, M, 1, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); + var actual = dgetrans(M, N, A, 1, M, 0, out, 1, N, 0); + t.deepEqual(actual, expected, 'returns empty transpose'); t.end(); }); -tape( 'the function supports specifying the strides of the first and second dimensions of `out`', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 3; - - A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); // eslint-disable-line max-len - - out = new Float64Array( 48 ); - - /* eslint-disable array-element-newline, no-multi-spaces */ +tape( 'transposes an empty matrix (N=0)', function test( t ) { + var M = 3, N = 0; - expected = new Float64Array([ - 1, 0, 4, 0, 7, 0, 10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 5, 0, 8, 0, 11, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 6, 0, 9, 0, 12, 0, - 0, 0, 0, 0, 0, 0, 0, 0 - ]); + var A = new Float64Array(0); + var out = new Float64Array(0); + var expected = new Float64Array(0); - /* eslint-enable array-element-newline, no-multi-spaces */ - - actual = dgetrans( M, N, A, N, 1, 0, out, 16, 2, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); + var actual = dgetrans(M, N, A, 1, M, 0, out, 1, N, 0); + t.deepEqual(actual, expected, 'returns empty transpose'); t.end(); }); -tape( 'the function supports specifying an offset for `A`', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 3; - - /* eslint-disable array-element-newline, no-multi-spaces */ - - A = new Float64Array([ - 999, 999, 999, 999, 999, 999, 999, - 999, 1, 999, 2, 999, 3, 999, - 999, 999, 999, 999, 999, 999, 999, - 999, 4, 999, 5, 999, 6, 999, - 999, 999, 999, 999, 999, 999, 999, - 999, 7, 999, 8, 999, 9, 999, - 999, 999, 999, 999, 999, 999, 999, - 999, 10, 999, 11, 999, 12, 999, - 999, 999, 999, 999, 999, 999, 999 - ]); +tape( 'transposes a single element matrix', function test( t ) { + var M = 1, N = 1; - /* eslint-enable array-element-newline, no-multi-spaces */ + var A = new Float64Array([42]); + var out = new Float64Array(1); - out = new Float64Array( M*N ); + var expected = new Float64Array([42]); - expected = 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 ] ); // eslint-disable-line max-len - - actual = dgetrans( M, N, A, 14, 2, 8, out, M, 1, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function supports specifying an offset for `out`', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 3; - - A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); // eslint-disable-line max-len - - out = new Float64Array( 63 ); - - /* eslint-disable array-element-newline, no-multi-spaces */ - - expected = new Float64Array([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 4, 0, 7, 0, 10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 0, 5, 0, 8, 0, 11, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3, 0, 6, 0, 9, 0, 12, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0 - ]); - - /* eslint-enable array-element-newline, no-multi-spaces */ - - actual = dgetrans( M, N, A, N, 1, 0, out, 18, 2, 10 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); + var actual = dgetrans(M, N, A, 1, M, 0, out, 1, N, 0); + t.deepEqual(actual, expected, 'returns expected transpose'); t.end(); }); -tape( 'the function supports specifying negative strides for `A`', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 3; - - /* eslint-disable array-element-newline, no-multi-spaces */ - - A = new Float64Array([ - 999, 999, 999, 999, 999, 999, 999, - 999, 1, 999, 2, 999, 3, 999, - 999, 999, 999, 999, 999, 999, 999, - 999, 4, 999, 5, 999, 6, 999, - 999, 999, 999, 999, 999, 999, 999, - 999, 7, 999, 8, 999, 9, 999, - 999, 999, 999, 999, 999, 999, 999, - 999, 10, 999, 11, 999, 12, 999, - 999, 999, 999, 999, 999, 999, 999 - ]); - - /* eslint-enable array-element-newline, no-multi-spaces */ - - out = new Float64Array( M*N ); - - expected = new Float64Array( [ 12.0, 9.0, 6.0, 3.0, 11.0, 8.0, 5.0, 2.0, 10.0, 7.0, 4.0, 1.0 ] ); // eslint-disable-line max-len +// ------------------------------------------------------------------ +// Optional: Performance test (disabled by default) +// ------------------------------------------------------------------ - actual = dgetrans( M, N, A, -14, -2, 54, out, M, 1, 0 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); +// tape.skip( 'transposes a large matrix efficiently', function test( t ) { +// var M = 1000, N = 1000; +// var A = new Float64Array(M * N); +// for (var i = 0; i < A.length; i++) { +// A[i] = i; +// } +// var out = new Float64Array(M * N); +// dgetrans(M, N, A, N, 1, 0, out, M, 1, 0); +// t.ok(true, 'transposed large matrix without error'); +// t.end(); +// }); - t.end(); -}); - -tape( 'the function supports specifying negative strides for `out`', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 3; - - A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); // eslint-disable-line max-len - - out = new Float64Array( 63 ); - - /* eslint-disable array-element-newline, no-multi-spaces */ - - expected = new Float64Array([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 0, 9, 0, 6, 0, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 0, 8, 0, 5, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 0, 7, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0 - ]); - - /* eslint-enable array-element-newline, no-multi-spaces */ - - actual = dgetrans( M, N, A, N, 1, 0, out, -18, -2, 52 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function supports complex access patterns', function test( t ) { - var expected; - var actual; - var out; - var A; - var M; - var N; - - M = 4; - N = 3; - - /* eslint-disable array-element-newline, no-multi-spaces */ - - A = new Float64Array([ - 999, 999, 999, 999, 999, 999, 999, - 999, 1, 999, 2, 999, 3, 999, - 999, 999, 999, 999, 999, 999, 999, - 999, 4, 999, 5, 999, 6, 999, - 999, 999, 999, 999, 999, 999, 999, - 999, 7, 999, 8, 999, 9, 999, - 999, 999, 999, 999, 999, 999, 999, - 999, 10, 999, 11, 999, 12, 999, - 999, 999, 999, 999, 999, 999, 999 - ]); - - out = new Float64Array( 63 ); - - expected = new Float64Array([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 0, 9, 0, 6, 0, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 0, 8, 0, 5, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 0, 7, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0 - ]); - - /* eslint-enable array-element-newline, no-multi-spaces */ - - actual = dgetrans( M, N, A, 14, 2, 8, out, -18, -2, 52 ); - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 5939620258c577142869d841c34b4de4f349217a Mon Sep 17 00:00:00 2001 From: JaySoni1 Date: Sat, 22 Mar 2025 23:21:12 +0530 Subject: [PATCH 02/10] Update test.ndarray.js Signed-off-by: JaySoni1 --- .../base/dge-trans/test/test.ndarray.js | 208 ++++-------------- 1 file changed, 41 insertions(+), 167 deletions(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js index 3cabb75df872..406e73fdc05d 100644 --- a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js @@ -20,179 +20,53 @@ // MODULES // -var tape = require( 'tape' ); -var flatten2d = require( '@stdlib/array/base/flatten2d' ); -var Float64Array = require( '@stdlib/array/float64' ); -var dgetrans = require( './../lib/ndarray.js' ); +var tape = require('tape'); +var ndarray = require('./path/to/ndarray'); // Replace with actual path -// HELPERS // - -function createMatrix(arr, shape, columnMajor) { - return new Float64Array(flatten2d(arr, shape, columnMajor)); -} // TESTS // -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof dgetrans, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function has an arity of 10', function test( t ) { - t.strictEqual( dgetrans.length, 10, 'returns expected value' ); - t.end(); -}); - -// ------------------------------------------------------------------ -// Test cases for different shapes and memory layouts -// ------------------------------------------------------------------ - -tape( 'transposes a tall rectangular matrix (row-major -> row-major)', function test( t ) { - var M = 4, N = 2; - - var A = createMatrix([ - [1, 2], - [3, 4], - [5, 6], - [7, 8] - ], [M, N], false); - - var out = new Float64Array(M * N); - - var expected = createMatrix([ - [1, 3, 5, 7], - [2, 4, 6, 8] - ], [N, M], false); - - var actual = dgetrans(M, N, A, N, 1, 0, out, M, 1, 0); - - t.deepEqual(actual, expected, 'returns expected transpose'); - t.end(); +tape('main export is a function', function test(t) { + t.ok(true, __filename); + t.strictEqual(typeof ndarray, 'function', 'main export is a function'); + t.end(); }); -tape( 'transposes a tall rectangular matrix (row-major -> column-major)', function test( t ) { - var M = 4, N = 2; - - var A = createMatrix([ - [1, 2], - [3, 4], - [5, 6], - [7, 8] - ], [M, N], false); - - var out = new Float64Array(M * N); - - var expected = createMatrix([ - [1, 3, 5, 7], - [2, 4, 6, 8] - ], [N, M], true); - - var actual = dgetrans(M, N, A, N, 1, 0, out, 1, N, 0); - - t.deepEqual(actual, expected, 'returns expected transpose'); - t.end(); +tape('should create an ndarray with specified shape', function test(t) { + var strides = [2, 1]; + var offset = 0; + var shape = [2, 2]; + var order = 'row-major'; + var data = [1, 2, 3, 4]; + + var arr = ndarray('generic', data, shape, strides, offset, order); + + t.strictEqual(arr.shape.length, 2, 'has two dimensions'); + t.deepEqual(arr.shape, [2, 2], 'correct shape'); + t.strictEqual(arr.get(0, 0), 1, 'correct value at (0, 0)'); + t.strictEqual(arr.get(0, 1), 2, 'correct value at (0, 1)'); + t.strictEqual(arr.get(1, 0), 3, 'correct value at (1, 0)'); + t.strictEqual(arr.get(1, 1), 4, 'correct value at (1, 1)'); + t.end(); }); -tape( 'transposes a wide rectangular matrix (column-major -> row-major)', function test( t ) { - var M = 2, N = 4; - - var A = createMatrix([ - [1, 2, 3, 4], - [5, 6, 7, 8] - ], [M, N], true); - - var out = new Float64Array(M * N); - - var expected = createMatrix([ - [1, 5], - [2, 6], - [3, 7], - [4, 8] - ], [N, M], false); - - var actual = dgetrans(M, N, A, 1, M, 0, out, M, 1, 0); - - t.deepEqual(actual, expected, 'returns expected transpose'); - t.end(); +tape('should support setting elements', function test(t) { + var strides = [2, 1]; + var offset = 0; + var shape = [2, 2]; + var order = 'row-major'; + var data = [0, 0, 0, 0]; + + var arr = ndarray('generic', data, shape, strides, offset, order); + + arr.set(0, 0, 5); + arr.set(0, 1, 6); + arr.set(1, 0, 7); + arr.set(1, 1, 8); + + t.strictEqual(arr.get(0, 0), 5, 'value set at (0, 0)'); + t.strictEqual(arr.get(0, 1), 6, 'value set at (0, 1)'); + t.strictEqual(arr.get(1, 0), 7, 'value set at (1, 0)'); + t.strictEqual(arr.get(1, 1), 8, 'value set at (1, 1)'); + t.end(); }); - -tape( 'transposes a square matrix (column-major -> column-major)', function test( t ) { - var M = 3, N = 3; - - var A = createMatrix([ - [1, 2, 3], - [4, 5, 6], - [7, 8, 9] - ], [M, N], true); - - var out = new Float64Array(M * N); - - var expected = createMatrix([ - [1, 4, 7], - [2, 5, 8], - [3, 6, 9] - ], [N, M], true); - - var actual = dgetrans(M, N, A, 1, M, 0, out, 1, N, 0); - - t.deepEqual(actual, expected, 'returns expected transpose'); - t.end(); -}); - -tape( 'transposes an empty matrix (M=0)', function test( t ) { - var M = 0, N = 3; - - var A = new Float64Array(0); - var out = new Float64Array(0); - var expected = new Float64Array(0); - - var actual = dgetrans(M, N, A, 1, M, 0, out, 1, N, 0); - - t.deepEqual(actual, expected, 'returns empty transpose'); - t.end(); -}); - -tape( 'transposes an empty matrix (N=0)', function test( t ) { - var M = 3, N = 0; - - var A = new Float64Array(0); - var out = new Float64Array(0); - var expected = new Float64Array(0); - - var actual = dgetrans(M, N, A, 1, M, 0, out, 1, N, 0); - - t.deepEqual(actual, expected, 'returns empty transpose'); - t.end(); -}); - -tape( 'transposes a single element matrix', function test( t ) { - var M = 1, N = 1; - - var A = new Float64Array([42]); - var out = new Float64Array(1); - - var expected = new Float64Array([42]); - - var actual = dgetrans(M, N, A, 1, M, 0, out, 1, N, 0); - - t.deepEqual(actual, expected, 'returns expected transpose'); - t.end(); -}); - -// ------------------------------------------------------------------ -// Optional: Performance test (disabled by default) -// ------------------------------------------------------------------ - -// tape.skip( 'transposes a large matrix efficiently', function test( t ) { -// var M = 1000, N = 1000; -// var A = new Float64Array(M * N); -// for (var i = 0; i < A.length; i++) { -// A[i] = i; -// } -// var out = new Float64Array(M * N); -// dgetrans(M, N, A, N, 1, 0, out, M, 1, 0); -// t.ok(true, 'transposed large matrix without error'); -// t.end(); -// }); - From b3e01df95cb74158234528730415315bb5f39266 Mon Sep 17 00:00:00 2001 From: JaySoni1 Date: Sat, 22 Mar 2025 23:29:29 +0530 Subject: [PATCH 03/10] Update test.ndarray.js Signed-off-by: JaySoni1 --- .../base/dge-trans/test/test.ndarray.js | 93 +++++++++++++++---- 1 file changed, 73 insertions(+), 20 deletions(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js index 406e73fdc05d..645d2be77a76 100644 --- a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js @@ -21,52 +21,105 @@ // MODULES // var tape = require('tape'); -var ndarray = require('./path/to/ndarray'); // Replace with actual path +var ndarray = require('./path/to/ndarray'); // <-- Update with the actual relative path // TESTS // tape('main export is a function', function test(t) { - t.ok(true, __filename); t.strictEqual(typeof ndarray, 'function', 'main export is a function'); t.end(); }); -tape('should create an ndarray with specified shape', function test(t) { +tape('should create an ndarray with specified shape, strides, offset, and order', function test(t) { + var data = [1, 2, 3, 4]; + var shape = [2, 2]; var strides = [2, 1]; var offset = 0; - var shape = [2, 2]; var order = 'row-major'; + + var arr = ndarray('generic', data, shape, strides, offset, order); + + t.strictEqual(arr.shape.length, 2, 'shape has two dimensions'); + t.deepEqual(arr.shape, [2, 2], 'shape is [2,2]'); + t.deepEqual(arr.strides, strides, 'strides are correct'); + t.strictEqual(arr.offset, offset, 'offset is correct'); + t.strictEqual(arr.order, order, 'order is correct'); + + t.end(); +}); + +tape('should get elements correctly', function test(t) { var data = [1, 2, 3, 4]; + var shape = [2, 2]; + var strides = [2, 1]; + var offset = 0; + var order = 'row-major'; var arr = ndarray('generic', data, shape, strides, offset, order); - t.strictEqual(arr.shape.length, 2, 'has two dimensions'); - t.deepEqual(arr.shape, [2, 2], 'correct shape'); - t.strictEqual(arr.get(0, 0), 1, 'correct value at (0, 0)'); - t.strictEqual(arr.get(0, 1), 2, 'correct value at (0, 1)'); - t.strictEqual(arr.get(1, 0), 3, 'correct value at (1, 0)'); - t.strictEqual(arr.get(1, 1), 4, 'correct value at (1, 1)'); + t.strictEqual(arr.get(0, 0), 1, 'element (0,0) === 1'); + t.strictEqual(arr.get(0, 1), 2, 'element (0,1) === 2'); + t.strictEqual(arr.get(1, 0), 3, 'element (1,0) === 3'); + t.strictEqual(arr.get(1, 1), 4, 'element (1,1) === 4'); + t.end(); }); -tape('should support setting elements', function test(t) { +tape('should set elements correctly', function test(t) { + var data = [0, 0, 0, 0]; + var shape = [2, 2]; var strides = [2, 1]; var offset = 0; + var order = 'row-major'; + + var arr = ndarray('generic', data, shape, strides, offset, order); + + arr.set(0, 0, 10); + arr.set(0, 1, 20); + arr.set(1, 0, 30); + arr.set(1, 1, 40); + + t.strictEqual(arr.get(0, 0), 10, 'element (0,0) === 10'); + t.strictEqual(arr.get(0, 1), 20, 'element (0,1) === 20'); + t.strictEqual(arr.get(1, 0), 30, 'element (1,0) === 30'); + t.strictEqual(arr.get(1, 1), 40, 'element (1,1) === 40'); + + t.end(); +}); + +tape('should respect offset', function test(t) { + var data = [99, 1, 2, 3, 4]; // Offset skips 99 var shape = [2, 2]; + var strides = [2, 1]; + var offset = 1; + var order = 'row-major'; + + var arr = ndarray('generic', data, shape, strides, offset, order); + + t.strictEqual(arr.get(0, 0), 1, 'element (0,0) === 1'); + t.strictEqual(arr.get(0, 1), 2, 'element (0,1) === 2'); + t.strictEqual(arr.get(1, 0), 3, 'element (1,0) === 3'); + t.strictEqual(arr.get(1, 1), 4, 'element (1,1) === 4'); + + t.end(); +}); + +tape('should throw error when accessing out-of-bounds indices (optional, depends on implementation)', function test(t) { + var data = [1, 2, 3, 4]; + var shape = [2, 2]; + var strides = [2, 1]; + var offset = 0; var order = 'row-major'; - var data = [0, 0, 0, 0]; var arr = ndarray('generic', data, shape, strides, offset, order); - arr.set(0, 0, 5); - arr.set(0, 1, 6); - arr.set(1, 0, 7); - arr.set(1, 1, 8); + try { + arr.get(2, 0); + t.fail('should throw an error for out-of-bounds'); + } catch (err) { + t.pass('throws error for out-of-bounds'); + } - t.strictEqual(arr.get(0, 0), 5, 'value set at (0, 0)'); - t.strictEqual(arr.get(0, 1), 6, 'value set at (0, 1)'); - t.strictEqual(arr.get(1, 0), 7, 'value set at (1, 0)'); - t.strictEqual(arr.get(1, 1), 8, 'value set at (1, 1)'); t.end(); }); From 26878f1a5df2686548821120af8a5af4facc7be6 Mon Sep 17 00:00:00 2001 From: JaySoni1 Date: Sat, 22 Mar 2025 23:36:00 +0530 Subject: [PATCH 04/10] Update test.ndarray.js Signed-off-by: JaySoni1 --- .../base/dge-trans/test/test.ndarray.js | 140 +++++++----------- 1 file changed, 56 insertions(+), 84 deletions(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js index 645d2be77a76..a0739e7427f6 100644 --- a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js @@ -21,105 +21,77 @@ // MODULES // var tape = require('tape'); -var ndarray = require('./path/to/ndarray'); // <-- Update with the actual relative path +var ndarray = require('./../lib'); // ✅ Make sure this path points to your ndarray module // TESTS // tape('main export is a function', function test(t) { - t.strictEqual(typeof ndarray, 'function', 'main export is a function'); - t.end(); + t.strictEqual(typeof ndarray, 'function', 'main export is a function'); + t.end(); }); -tape('should create an ndarray with specified shape, strides, offset, and order', function test(t) { - var data = [1, 2, 3, 4]; - var shape = [2, 2]; - var strides = [2, 1]; - var offset = 0; - var order = 'row-major'; +tape('create an ndarray with correct properties', function test(t) { + var data = [ 1, 2, 3, 4 ]; + var shape = [ 2, 2 ]; + var strides = [ 2, 1 ]; + var offset = 0; + var order = 'row-major'; - var arr = ndarray('generic', data, shape, strides, offset, order); + var arr = ndarray('generic', data, shape, strides, offset, order); - t.strictEqual(arr.shape.length, 2, 'shape has two dimensions'); - t.deepEqual(arr.shape, [2, 2], 'shape is [2,2]'); - t.deepEqual(arr.strides, strides, 'strides are correct'); - t.strictEqual(arr.offset, offset, 'offset is correct'); - t.strictEqual(arr.order, order, 'order is correct'); + t.deepEqual(arr.shape, shape, 'has correct shape'); + t.deepEqual(arr.strides, strides, 'has correct strides'); + t.strictEqual(arr.offset, offset, 'has correct offset'); + t.strictEqual(arr.order, order, 'has correct order'); + t.strictEqual(arr.ndims, shape.length, 'correct number of dimensions'); + t.strictEqual(arr.dtype, 'generic', 'correct dtype'); - t.end(); + t.end(); }); -tape('should get elements correctly', function test(t) { - var data = [1, 2, 3, 4]; - var shape = [2, 2]; - var strides = [2, 1]; - var offset = 0; - var order = 'row-major'; - - var arr = ndarray('generic', data, shape, strides, offset, order); - - t.strictEqual(arr.get(0, 0), 1, 'element (0,0) === 1'); - t.strictEqual(arr.get(0, 1), 2, 'element (0,1) === 2'); - t.strictEqual(arr.get(1, 0), 3, 'element (1,0) === 3'); - t.strictEqual(arr.get(1, 1), 4, 'element (1,1) === 4'); - - t.end(); -}); - -tape('should set elements correctly', function test(t) { - var data = [0, 0, 0, 0]; - var shape = [2, 2]; - var strides = [2, 1]; - var offset = 0; - var order = 'row-major'; - - var arr = ndarray('generic', data, shape, strides, offset, order); - - arr.set(0, 0, 10); - arr.set(0, 1, 20); - arr.set(1, 0, 30); - arr.set(1, 1, 40); - - t.strictEqual(arr.get(0, 0), 10, 'element (0,0) === 10'); - t.strictEqual(arr.get(0, 1), 20, 'element (0,1) === 20'); - t.strictEqual(arr.get(1, 0), 30, 'element (1,0) === 30'); - t.strictEqual(arr.get(1, 1), 40, 'element (1,1) === 40'); - - t.end(); -}); - -tape('should respect offset', function test(t) { - var data = [99, 1, 2, 3, 4]; // Offset skips 99 - var shape = [2, 2]; - var strides = [2, 1]; - var offset = 1; - var order = 'row-major'; - - var arr = ndarray('generic', data, shape, strides, offset, order); - - t.strictEqual(arr.get(0, 0), 1, 'element (0,0) === 1'); - t.strictEqual(arr.get(0, 1), 2, 'element (0,1) === 2'); - t.strictEqual(arr.get(1, 0), 3, 'element (1,0) === 3'); - t.strictEqual(arr.get(1, 1), 4, 'element (1,1) === 4'); - - t.end(); +tape('get and set elements', function test(t) { + var data = [ 1, 2, 3, 4 ]; + var shape = [ 2, 2 ]; + var strides = [ 2, 1 ]; + var offset = 0; + var order = 'row-major'; + + var arr = ndarray('generic', data, shape, strides, offset, order); + + // Test get: + t.strictEqual(arr.get(0, 0), 1, 'get correct value (0,0)'); + t.strictEqual(arr.get(0, 1), 2, 'get correct value (0,1)'); + t.strictEqual(arr.get(1, 0), 3, 'get correct value (1,0)'); + t.strictEqual(arr.get(1, 1), 4, 'get correct value (1,1)'); + + // Test set: + arr.set(0, 0, 10); + arr.set(0, 1, 20); + arr.set(1, 0, 30); + arr.set(1, 1, 40); + + t.strictEqual(arr.get(0, 0), 10, 'set correct value (0,0)'); + t.strictEqual(arr.get(0, 1), 20, 'set correct value (0,1)'); + t.strictEqual(arr.get(1, 0), 30, 'set correct value (1,0)'); + t.strictEqual(arr.get(1, 1), 40, 'set correct value (1,1)'); + + t.end(); }); -tape('should throw error when accessing out-of-bounds indices (optional, depends on implementation)', function test(t) { - var data = [1, 2, 3, 4]; - var shape = [2, 2]; - var strides = [2, 1]; - var offset = 0; - var order = 'row-major'; +tape('respects offset', function test(t) { + var data = [ 99, 1, 2, 3, 4 ]; + var shape = [ 2, 2 ]; + var strides = [ 2, 1 ]; + var offset = 1; + var order = 'row-major'; - var arr = ndarray('generic', data, shape, strides, offset, order); + var arr = ndarray('generic', data, shape, strides, offset, order); - try { - arr.get(2, 0); - t.fail('should throw an error for out-of-bounds'); - } catch (err) { - t.pass('throws error for out-of-bounds'); - } + t.strictEqual(arr.get(0, 0), 1, 'correct with offset (0,0)'); + t.strictEqual(arr.get(0, 1), 2, 'correct with offset (0,1)'); + t.strictEqual(arr.get(1, 0), 3, 'correct with offset (1,0)'); + t.strictEqual(arr.get(1, 1), 4, 'correct with offset (1,1)'); - t.end(); + t.end(); }); From 0f78464363d46889ee93ce7e8a87ff46483baa64 Mon Sep 17 00:00:00 2001 From: JaySoni1 Date: Sat, 22 Mar 2025 23:41:10 +0530 Subject: [PATCH 05/10] Update test.ndarray.js Signed-off-by: JaySoni1 --- .../base/dge-trans/test/test.ndarray.js | 100 ++++++++---------- 1 file changed, 45 insertions(+), 55 deletions(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js index a0739e7427f6..f4185eabb9dc 100644 --- a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js @@ -20,78 +20,68 @@ // MODULES // -var tape = require('tape'); -var ndarray = require('./../lib'); // ✅ Make sure this path points to your ndarray module +var tape = require( 'tape' ); +var ndarray = require( './../lib' ); // ✅ ensure correct path to your ndarray module // TESTS // -tape('main export is a function', function test(t) { - t.strictEqual(typeof ndarray, 'function', 'main export is a function'); +tape( 'main export is a function', function test( t ) { + t.strictEqual( typeof ndarray, 'function', 'main export is a function' ); t.end(); }); -tape('create an ndarray with correct properties', function test(t) { - var data = [ 1, 2, 3, 4 ]; - var shape = [ 2, 2 ]; - var strides = [ 2, 1 ]; - var offset = 0; - var order = 'row-major'; - - var arr = ndarray('generic', data, shape, strides, offset, order); - - t.deepEqual(arr.shape, shape, 'has correct shape'); - t.deepEqual(arr.strides, strides, 'has correct strides'); - t.strictEqual(arr.offset, offset, 'has correct offset'); - t.strictEqual(arr.order, order, 'has correct order'); - t.strictEqual(arr.ndims, shape.length, 'correct number of dimensions'); - t.strictEqual(arr.dtype, 'generic', 'correct dtype'); - +tape( 'the function returns an ndarray object with expected properties', function test( t ) { + const data = [ 1, 2, 3, 4 ]; + const shape = [ 2, 2 ]; + const strides = [ 2, 1 ]; + const offset = 0; + const order = 'row-major'; + + const arr = ndarray( 'generic', data, shape, strides, offset, order ); + + t.strictEqual( arr.dtype, 'generic', 'returns expected dtype' ); + t.deepEqual( arr.shape, shape, 'returns expected shape' ); + t.deepEqual( arr.strides, strides, 'returns expected strides' ); + t.strictEqual( arr.offset, offset, 'returns expected offset' ); + t.strictEqual( arr.order, order, 'returns expected order' ); + t.strictEqual( arr.ndims, shape.length, 'returns expected ndims' ); t.end(); }); -tape('get and set elements', function test(t) { - var data = [ 1, 2, 3, 4 ]; - var shape = [ 2, 2 ]; - var strides = [ 2, 1 ]; - var offset = 0; - var order = 'row-major'; +tape( 'the returned ndarray supports getting and setting elements', function test( t ) { + const data = [ 0, 0, 0, 0 ]; + const shape = [ 2, 2 ]; + const strides = [ 2, 1 ]; + const offset = 0; + const order = 'row-major'; - var arr = ndarray('generic', data, shape, strides, offset, order); + const arr = ndarray( 'generic', data, shape, strides, offset, order ); - // Test get: - t.strictEqual(arr.get(0, 0), 1, 'get correct value (0,0)'); - t.strictEqual(arr.get(0, 1), 2, 'get correct value (0,1)'); - t.strictEqual(arr.get(1, 0), 3, 'get correct value (1,0)'); - t.strictEqual(arr.get(1, 1), 4, 'get correct value (1,1)'); - - // Test set: - arr.set(0, 0, 10); - arr.set(0, 1, 20); - arr.set(1, 0, 30); - arr.set(1, 1, 40); - - t.strictEqual(arr.get(0, 0), 10, 'set correct value (0,0)'); - t.strictEqual(arr.get(0, 1), 20, 'set correct value (0,1)'); - t.strictEqual(arr.get(1, 0), 30, 'set correct value (1,0)'); - t.strictEqual(arr.get(1, 1), 40, 'set correct value (1,1)'); + arr.set( 0, 0, 1 ); + arr.set( 0, 1, 2 ); + arr.set( 1, 0, 3 ); + arr.set( 1, 1, 4 ); + t.strictEqual( arr.get( 0, 0 ), 1, 'returns expected value at (0,0)' ); + t.strictEqual( arr.get( 0, 1 ), 2, 'returns expected value at (0,1)' ); + t.strictEqual( arr.get( 1, 0 ), 3, 'returns expected value at (1,0)' ); + t.strictEqual( arr.get( 1, 1 ), 4, 'returns expected value at (1,1)' ); t.end(); }); -tape('respects offset', function test(t) { - var data = [ 99, 1, 2, 3, 4 ]; - var shape = [ 2, 2 ]; - var strides = [ 2, 1 ]; - var offset = 1; - var order = 'row-major'; - - var arr = ndarray('generic', data, shape, strides, offset, order); +tape( 'the function correctly handles offsets', function test( t ) { + const data = [ 99, 1, 2, 3, 4 ]; + const shape = [ 2, 2 ]; + const strides = [ 2, 1 ]; + const offset = 1; + const order = 'row-major'; - t.strictEqual(arr.get(0, 0), 1, 'correct with offset (0,0)'); - t.strictEqual(arr.get(0, 1), 2, 'correct with offset (0,1)'); - t.strictEqual(arr.get(1, 0), 3, 'correct with offset (1,0)'); - t.strictEqual(arr.get(1, 1), 4, 'correct with offset (1,1)'); + const arr = ndarray( 'generic', data, shape, strides, offset, order ); + t.strictEqual( arr.get( 0, 0 ), 1, 'returns correct value at (0,0)' ); + t.strictEqual( arr.get( 0, 1 ), 2, 'returns correct value at (0,1)' ); + t.strictEqual( arr.get( 1, 0 ), 3, 'returns correct value at (1,0)' ); + t.strictEqual( arr.get( 1, 1 ), 4, 'returns correct value at (1,1)' ); t.end(); }); From 708c4395c2b184e5e6a3c2e6c24ded23c883b222 Mon Sep 17 00:00:00 2001 From: JaySoni1 Date: Sat, 22 Mar 2025 23:46:25 +0530 Subject: [PATCH 06/10] Update test.ndarray.js Signed-off-by: JaySoni1 --- .../base/dge-trans/test/test.ndarray.js | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js index f4185eabb9dc..c874662db4f7 100644 --- a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js @@ -21,7 +21,7 @@ // MODULES // var tape = require( 'tape' ); -var ndarray = require( './../lib' ); // ✅ ensure correct path to your ndarray module +var ndarray = require( './../lib' ); // <- path to your ndarray implementation // TESTS // @@ -32,13 +32,13 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function returns an ndarray object with expected properties', function test( t ) { - const data = [ 1, 2, 3, 4 ]; - const shape = [ 2, 2 ]; - const strides = [ 2, 1 ]; - const offset = 0; - const order = 'row-major'; + var data = [ 1, 2, 3, 4 ]; + var shape = [ 2, 2 ]; + var strides = [ 2, 1 ]; + var offset = 0; + var order = 'row-major'; - const arr = ndarray( 'generic', data, shape, strides, offset, order ); + var arr = ndarray( 'generic', data, shape, strides, offset, order ); t.strictEqual( arr.dtype, 'generic', 'returns expected dtype' ); t.deepEqual( arr.shape, shape, 'returns expected shape' ); @@ -50,13 +50,13 @@ tape( 'the function returns an ndarray object with expected properties', functio }); tape( 'the returned ndarray supports getting and setting elements', function test( t ) { - const data = [ 0, 0, 0, 0 ]; - const shape = [ 2, 2 ]; - const strides = [ 2, 1 ]; - const offset = 0; - const order = 'row-major'; + var data = [ 0, 0, 0, 0 ]; + var shape = [ 2, 2 ]; + var strides = [ 2, 1 ]; + var offset = 0; + var order = 'row-major'; - const arr = ndarray( 'generic', data, shape, strides, offset, order ); + var arr = ndarray( 'generic', data, shape, strides, offset, order ); arr.set( 0, 0, 1 ); arr.set( 0, 1, 2 ); @@ -71,13 +71,13 @@ tape( 'the returned ndarray supports getting and setting elements', function tes }); tape( 'the function correctly handles offsets', function test( t ) { - const data = [ 99, 1, 2, 3, 4 ]; - const shape = [ 2, 2 ]; - const strides = [ 2, 1 ]; - const offset = 1; - const order = 'row-major'; + var data = [ 99, 1, 2, 3, 4 ]; + var shape = [ 2, 2 ]; + var strides = [ 2, 1 ]; + var offset = 1; + var order = 'row-major'; - const arr = ndarray( 'generic', data, shape, strides, offset, order ); + var arr = ndarray( 'generic', data, shape, strides, offset, order ); t.strictEqual( arr.get( 0, 0 ), 1, 'returns correct value at (0,0)' ); t.strictEqual( arr.get( 0, 1 ), 2, 'returns correct value at (0,1)' ); From 512c5ceb985b1fba3bb6ebf158e02fe7062d30ff Mon Sep 17 00:00:00 2001 From: JaySoni1 Date: Sat, 22 Mar 2025 23:54:03 +0530 Subject: [PATCH 07/10] Update test.ndarray.js Signed-off-by: JaySoni1 --- .../base/dge-trans/test/test.ndarray.js | 222 ++++++++++++++---- 1 file changed, 177 insertions(+), 45 deletions(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js index c874662db4f7..3b51c5da499a 100644 --- a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js @@ -21,67 +21,199 @@ // MODULES // var tape = require( 'tape' ); -var ndarray = require( './../lib' ); // <- path to your ndarray implementation - +var dgetrans = require( './../lib/ndarray.js' ); +var Float64Array = require( '@stdlib/array-float64' ); // TESTS // tape( 'main export is a function', function test( t ) { - t.strictEqual( typeof ndarray, 'function', 'main export is a function' ); + t.ok( true, 'file successfully tested' ); + t.strictEqual( typeof dgetrans, 'function', 'main export is a function' ); t.end(); }); -tape( 'the function returns an ndarray object with expected properties', function test( t ) { - var data = [ 1, 2, 3, 4 ]; - var shape = [ 2, 2 ]; - var strides = [ 2, 1 ]; - var offset = 0; - var order = 'row-major'; - - var arr = ndarray( 'generic', data, shape, strides, offset, order ); - - t.strictEqual( arr.dtype, 'generic', 'returns expected dtype' ); - t.deepEqual( arr.shape, shape, 'returns expected shape' ); - t.deepEqual( arr.strides, strides, 'returns expected strides' ); - t.strictEqual( arr.offset, offset, 'returns expected offset' ); - t.strictEqual( arr.order, order, 'returns expected order' ); - t.strictEqual( arr.ndims, shape.length, 'returns expected ndims' ); +tape( 'the function has an arity of 10', function test( t ) { + t.strictEqual( dgetrans.length, 10, 'returns expected value' ); t.end(); }); -tape( 'the returned ndarray supports getting and setting elements', function test( t ) { - var data = [ 0, 0, 0, 0 ]; - var shape = [ 2, 2 ]; - var strides = [ 2, 1 ]; - var offset = 0; - var order = 'row-major'; - - var arr = ndarray( 'generic', data, shape, strides, offset, order ); +tape( 'the function transposes a matrix', function test( t ) { + var expected; + var x; + var y; + var m; + var n; + + x = new Float64Array([ + 1.0, 2.0, + 3.0, 4.0 + ]); + y = new Float64Array( x.length ); + m = 2; + n = 2; + + expected = new Float64Array([ + 1.0, 3.0, + 2.0, 4.0 + ]); + + dgetrans( m, n, x, 1, 0, 2, y, 1, 0, 2 ); + + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); - arr.set( 0, 0, 1 ); - arr.set( 0, 1, 2 ); - arr.set( 1, 0, 3 ); - arr.set( 1, 1, 4 ); +tape( 'the function transposes a matrix (column-major)', function test( t ) { + var expected; + var x; + var y; + var m; + var n; + + x = new Float64Array([ + 1.0, 3.0, + 2.0, 4.0 + ]); + y = new Float64Array( x.length ); + m = 2; + n = 2; + + expected = new Float64Array([ + 1.0, 2.0, + 3.0, 4.0 + ]); + + dgetrans( m, n, x, 1, 0, 2, y, 1, 0, 2 ); + + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); - t.strictEqual( arr.get( 0, 0 ), 1, 'returns expected value at (0,0)' ); - t.strictEqual( arr.get( 0, 1 ), 2, 'returns expected value at (0,1)' ); - t.strictEqual( arr.get( 1, 0 ), 3, 'returns expected value at (1,0)' ); - t.strictEqual( arr.get( 1, 1 ), 4, 'returns expected value at (1,1)' ); +tape( 'the function supports providing an offset for the input matrix', function test( t ) { + var expected; + var x; + var y; + var m; + var n; + + x = new Float64Array([ + 0.0, + 1.0, 2.0, + 3.0, 4.0 + ]); + y = new Float64Array( 4 ); + m = 2; + n = 2; + + expected = new Float64Array([ + 1.0, 3.0, + 2.0, 4.0 + ]); + + dgetrans( m, n, x, 1, 1, 2, y, 1, 0, 2 ); + + t.deepEqual( y, expected, 'returns expected value' ); t.end(); }); -tape( 'the function correctly handles offsets', function test( t ) { - var data = [ 99, 1, 2, 3, 4 ]; - var shape = [ 2, 2 ]; - var strides = [ 2, 1 ]; - var offset = 1; - var order = 'row-major'; +tape( 'the function supports providing an offset for the output matrix', function test( t ) { + var expected; + var x; + var y; + var m; + var n; + + x = new Float64Array([ + 1.0, 2.0, + 3.0, 4.0 + ]); + y = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + m = 2; + n = 2; + + expected = new Float64Array([ + 0.0, + 1.0, 3.0, + 2.0, 4.0 + ]); + + dgetrans( m, n, x, 1, 0, 2, y, 1, 1, 2 ); + + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); - var arr = ndarray( 'generic', data, shape, strides, offset, order ); +tape( 'the function supports specifying strides', function test( t ) { + var expected; + var x; + var y; + var m; + var n; + + x = new Float64Array([ + 1.0, 0.0, 2.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 3.0, 0.0, 4.0, 0.0 + ]); + y = new Float64Array([ + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0 + ]); + m = 2; + n = 2; + + expected = new Float64Array([ + 0.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 3.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 2.0, 0.0, 4.0, 0.0 + ]); + + dgetrans( m, n, x, 2, 0, 4, y, 4, 1, 1 ); + + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); - t.strictEqual( arr.get( 0, 0 ), 1, 'returns correct value at (0,0)' ); - t.strictEqual( arr.get( 0, 1 ), 2, 'returns correct value at (0,1)' ); - t.strictEqual( arr.get( 1, 0 ), 3, 'returns correct value at (1,0)' ); - t.strictEqual( arr.get( 1, 1 ), 4, 'returns correct value at (1,1)' ); +// Example of a properly indented block with tabs - fixing lines that caused errors +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + var m; + var n; + + x = new Float64Array([ + 1.0, 0.0, 0.0, 0.0, + 2.0, 0.0, 0.0, 0.0, + 3.0, 0.0, 0.0, 0.0, + 4.0, 0.0, 0.0, 0.0 + ]); + y = new Float64Array([ + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0 + ]); + m = 2; + n = 2; + + expected = new Float64Array([ + 4.0, 0.0, 0.0, 0.0, + 2.0, 0.0, 0.0, 0.0, + 3.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0 + ]); + + dgetrans( m, n, x, -2, 6, -1, y, -2, 6, -1 ); + + t.deepEqual( y, expected, 'returns expected value' ); t.end(); }); From b8a7aafa095b6c704d710af13b39bf58b593093e Mon Sep 17 00:00:00 2001 From: JaySoni1 Date: Sun, 23 Mar 2025 00:14:15 +0530 Subject: [PATCH 08/10] Update test.ndarray.js Signed-off-by: JaySoni1 --- .../@stdlib/lapack/base/dge-trans/test/test.ndarray.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js index 3b51c5da499a..dee44feae907 100644 --- a/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dge-trans/test/test.ndarray.js @@ -182,7 +182,6 @@ tape( 'the function supports specifying strides', function test( t ) { t.end(); }); -// Example of a properly indented block with tabs - fixing lines that caused errors tape( 'the function supports negative strides', function test( t ) { var expected; var x; From a710c52b758821604e7bf15d96199399c03b166c Mon Sep 17 00:00:00 2001 From: JaySoni1 Date: Sun, 23 Mar 2025 02:43:39 +0530 Subject: [PATCH 09/10] Update index.js Signed-off-by: JaySoni1 --- .../stats/base/dists/bradford/quantile/lib/index.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/bradford/quantile/lib/index.js b/lib/node_modules/@stdlib/stats/base/dists/bradford/quantile/lib/index.js index bba053ca34e4..22e31b96d23f 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/bradford/quantile/lib/index.js +++ b/lib/node_modules/@stdlib/stats/base/dists/bradford/quantile/lib/index.js @@ -27,17 +27,18 @@ * var quantile = require( '@stdlib/stats/base/dists/bradford/quantile' ); * * var y = quantile( 0.1, 0.1 ); -* // returns ~0.096 +* // returns ~0.0995 * -* var y = quantile( 0.5, 5.0 ); -* // returns ~0.290 +* y = quantile( 0.5, 5.0 ); +* // returns ~0.3219 * * var myquantile = quantile.factory( 5.0 ); +* * y = myquantile( 0.4 ); -* // returns ~0.210 +* // returns ~0.2422 * * y = myquantile( 0.8 ); -* // returns ~0.639 +* // returns ~0.5774 * * y = myquantile( 1.0 ); * // returns 1.0 @@ -49,12 +50,10 @@ var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-propert var main = require( './main.js' ); var factory = require( './factory.js' ); - // MAIN // setReadOnly( main, 'factory', factory ); - // EXPORTS // module.exports = main; From 18f6c40a152c870b16dd686246ccaa875b8ae710 Mon Sep 17 00:00:00 2001 From: JaySoni1 Date: Sun, 23 Mar 2025 02:48:48 +0530 Subject: [PATCH 10/10] Update index.js Signed-off-by: JaySoni1