diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_blocked_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_blocked_columnmajor.js index 5254f4af56b1..2c087acc452b 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_blocked_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_blocked_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/10d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_blocked_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_blocked_rowmajor.js index 6c74edc09512..77e9c7f68131 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_blocked_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_blocked_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/10d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_columnmajor.js index 8863899cc39b..a73513810569 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/10d.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_rowmajor.js index 174fb970fe62..c4a2729aa194 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.10d_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/10d.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.11d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.11d_columnmajor.js index 37e645fec898..cdfd43e44bfd 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.11d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.11d_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/nd.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.11d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.11d_rowmajor.js index 56c04b5afdb5..9a64a4858470 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.11d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.11d_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/nd.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.1d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.1d_columnmajor.js index 336faa724806..67b6de8f9f29 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.1d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.1d_columnmajor.js @@ -21,12 +21,12 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib' ); @@ -53,13 +53,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.1d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.1d_rowmajor.js index 83d883821da2..77c59b0ba583 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.1d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.1d_rowmajor.js @@ -21,12 +21,12 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib' ); @@ -53,13 +53,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_blocked_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_blocked_columnmajor.js index 1b38444dd474..d4b93b664586 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_blocked_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_blocked_columnmajor.js @@ -21,14 +21,14 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var floor = require( '@stdlib/math/base/special/floor' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/2d_blocked.js' ); @@ -55,13 +55,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_blocked_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_blocked_rowmajor.js index d19342a553e6..2a208393aa5f 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_blocked_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_blocked_rowmajor.js @@ -21,14 +21,14 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var floor = require( '@stdlib/math/base/special/floor' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/2d_blocked.js' ); @@ -55,13 +55,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_columnmajor.js index fd9e70189689..72bc6455359f 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_columnmajor.js @@ -21,14 +21,14 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var floor = require( '@stdlib/math/base/special/floor' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/2d.js' ); @@ -55,13 +55,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor.js index d010fed652aa..bbd1ce7fb1ff 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor.js @@ -21,14 +21,14 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var floor = require( '@stdlib/math/base/special/floor' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/2d.js' ); @@ -55,13 +55,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor_accessors.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor_accessors.js index 1acd3ac4e5cb..a6b73abec7c1 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor_accessors.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor_accessors.js @@ -21,14 +21,14 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var floor = require( '@stdlib/math/base/special/floor' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/2d_accessors.js' ); @@ -79,13 +79,9 @@ function set( buf, idx, value ) { function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor_accessors_complex.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor_accessors_complex.js index 9e97bc60ba3c..6303adf78c2d 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor_accessors_complex.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.2d_rowmajor_accessors_complex.js @@ -21,14 +21,14 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var floor = require( '@stdlib/math/base/special/floor' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var ctors = require( '@stdlib/array/typed-complex-ctors' ); var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; @@ -86,13 +86,9 @@ function createBenchmark( len, shape, xtype, ytype ) { var ybuf; var x; var y; - var i; - xbuf = filledarray( 0.0, len*2, abtype[ xtype ] ); + xbuf = filledarrayBy( len*2, abtype[ xtype ], discreteUniform( -100, 100 ) ); // eslint-disable-line max-len ybuf = filledarray( 0.0, len*2, abtype[ ytype ] ); - for ( i = 0; i < len*2; i++ ) { - xbuf[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': new ( ctors( xtype ) )( xbuf.buffer ), diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_blocked_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_blocked_columnmajor.js index 2d070ce935c8..3feb76647b09 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_blocked_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_blocked_columnmajor.js @@ -21,14 +21,14 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var cbrt = require( '@stdlib/math/base/special/cbrt' ); var floor = require( '@stdlib/math/base/special/floor' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/3d_blocked.js' ); @@ -55,13 +55,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_blocked_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_blocked_rowmajor.js index 22a40229989f..1ba87d0adfe5 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_blocked_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_blocked_rowmajor.js @@ -21,14 +21,14 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var cbrt = require( '@stdlib/math/base/special/cbrt' ); var floor = require( '@stdlib/math/base/special/floor' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/3d_blocked.js' ); @@ -55,13 +55,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_columnmajor.js index 3d91055d718e..083d2070a676 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_columnmajor.js @@ -21,14 +21,14 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var cbrt = require( '@stdlib/math/base/special/cbrt' ); var floor = require( '@stdlib/math/base/special/floor' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/3d.js' ); @@ -55,13 +55,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_rowmajor.js index 475a410c6fc6..959859136fa4 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.3d_rowmajor.js @@ -21,14 +21,14 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var cbrt = require( '@stdlib/math/base/special/cbrt' ); var floor = require( '@stdlib/math/base/special/floor' ); -var round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/3d.js' ); @@ -55,13 +55,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_blocked_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_blocked_columnmajor.js index 28a421893857..11d739c88c3d 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_blocked_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_blocked_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/4d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_blocked_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_blocked_rowmajor.js index 61d87ce84d85..a066c9a6e6f8 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_blocked_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_blocked_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/4d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_columnmajor.js index 803b6449dcf3..571e91a23adf 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/4d.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_rowmajor.js index 4177b6b08d06..2e6b9e6895d8 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.4d_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/4d.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_blocked_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_blocked_columnmajor.js index 536977cd2ad4..2f9a13f56318 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_blocked_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_blocked_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/5d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_blocked_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_blocked_rowmajor.js index 01b04389e4f3..2063552eedc1 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_blocked_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_blocked_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/5d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_columnmajor.js index 79c7e1fd5c8e..afedaadbf00a 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/5d.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_rowmajor.js index a9b435a3fac6..c10d4cb79423 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.5d_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/5d.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_blocked_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_blocked_columnmajor.js index 4eb971db0ac4..77421118d567 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_blocked_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_blocked_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/6d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_blocked_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_blocked_rowmajor.js index 9bc64c15eabe..70172df72fb9 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_blocked_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_blocked_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/6d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_columnmajor.js index 190c6457444f..bc4ef8036364 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/6d.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_rowmajor.js index 654d7235b6e9..3ed5ba90ebe0 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.6d_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/6d.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_blocked_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_blocked_columnmajor.js index 4c08a286eedb..05b1db6231f5 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_blocked_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_blocked_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/7d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_blocked_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_blocked_rowmajor.js index d6a35ead8542..7ec93e3eda21 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_blocked_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_blocked_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/7d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_columnmajor.js index 81f6e0f1458d..95d7cbe63497 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/7d.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_rowmajor.js index 91c55f64b0ab..8ab8bdbbef42 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.7d_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/7d.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_blocked_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_blocked_columnmajor.js index a3bb41e2cb41..7e42fe445235 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_blocked_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_blocked_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/8d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_blocked_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_blocked_rowmajor.js index f94c8317a3d9..5265aa1c80bb 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_blocked_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_blocked_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/8d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_columnmajor.js index 8ba63cd977e7..50ea907dd28d 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/8d.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_rowmajor.js index 45ee88156f09..238315da84aa 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.8d_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/8d.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_blocked_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_blocked_columnmajor.js index 988a4b40aaef..d4f5819e59be 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_blocked_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_blocked_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/9d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_blocked_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_blocked_rowmajor.js index f4ef14e480b2..9ac18d560bc9 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_blocked_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_blocked_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/9d_blocked.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_columnmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_columnmajor.js index 30a346bf8ab9..a4095c1dc47d 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_columnmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_columnmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/9d.js' ); @@ -54,13 +54,9 @@ var order = 'column-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_rowmajor.js b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_rowmajor.js index f1b361e1bb9c..b86617f06742 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_rowmajor.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/benchmark/benchmark.9d_rowmajor.js @@ -21,13 +21,13 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); 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 round = require( '@stdlib/math/base/special/round' ); var identity = require( '@stdlib/math/base/special/identity' ); var filledarray = require( '@stdlib/array/filled' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var pkg = require( './../package.json' ).name; var map = require( './../lib/9d.js' ); @@ -54,13 +54,9 @@ var order = 'row-major'; function createBenchmark( len, shape, xtype, ytype ) { var x; var y; - var i; - x = filledarray( 0.0, len, xtype ); + x = filledarrayBy( len, xtype, discreteUniform( -100, 100 ) ); y = filledarray( 0.0, len, ytype ); - for ( i = 0; i < len; i++ ) { - x[ i ] = round( ( randu()*200.0 ) - 100.0 ); - } x = { 'dtype': xtype, 'data': x, diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.0d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.0d.js new file mode 100644 index 000000000000..65ce59d318cf --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.0d.js @@ -0,0 +1,89 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 0-dimensional ndarray and assigns results to the elements in an output 0-dimensional ndarray', function test( t ) { + var expected; + var x; + var y; + + x = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + y = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + + map( [ x, y ], scale ); + + expected = new Float64Array( [ 10.0 ] ); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 0-dimensional ndarray and assigns results to the elements in an output 0-dimensional ndarray (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = scalar2ndarray( new Complex128( 1.0, 1.0 ), { + 'dtype': 'complex128' + }); + y = scalar2ndarray( new Complex128( 0.0, 0.0 ), { + 'dtype': 'complex128' + }); + + map( [ x, y ], scale ); + + expected = new Complex128Array( [ 10.0, 10.0 ] ); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.10d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.10d.js new file mode 100644 index 000000000000..7c4f6e04f7be --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.10d.js @@ -0,0 +1,2667 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var dfill = require( '@stdlib/blas/ext/base/dfill' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var blockSize = require( '@stdlib/ndarray/base/unary-tiling-block-size' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'row-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -8, -8, -8, -8, -8, -8, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 16, 16, 8, 4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 16, 16, -8, -4, -2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 1, 1, 2, 1, 2, 1, 1, 2 ]; + st = [ 32, 16, 16, -16, 8, 8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 9 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 2, 1, 2, 1, 1, 2 ]; + st = [ bsize*64, 32, 16, -16, 8, 8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 9 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 2, bsize*2, 2, 1, 1, 2, 1, 1, 2 ]; + st = [ bsize*64, bsize*32, 16, -8, 8, 8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 9 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 2, 1, 2, 1, 1, 2 ]; + st = [ bsize*64, bsize*64, bsize*32, -16, 8, 8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 9 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 2, bsize*2, 2, 1, 1, 1, 2 ]; + st = [ bsize*32, bsize*32, bsize*32, -bsize*16, 8, 4, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 9 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 1, 2, bsize*2, 2, 1, 1, 2 ]; + st = [ bsize*32, bsize*32, bsize*32, -bsize*32, bsize*16, 8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 9 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, bsize*2, 2, 1, 2 ]; + st = [ + bsize*64, + bsize*64, + bsize*32, + -bsize*32, + bsize*32, + bsize*16, + -8, + 4, + 4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 9 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 1, 2, bsize*2, 2, 2 ]; + st = [ + bsize*64, + bsize*64, + bsize*32, + -bsize*32, + bsize*32, + bsize*32, + -bsize*16, + 8, + 4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 9 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 1, 2, bsize*2, 2 ]; + st = [ + bsize*64, + bsize*64, + bsize*32, + -bsize*32, + bsize*16, + bsize*16, + -bsize*16, + bsize*8, + 4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 9 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 1, 1, 2, bsize*2 ]; + st = [ + bsize*32, + bsize*32, + bsize*16, + -bsize*16, + bsize*8, + bsize*8, + -bsize*8, + bsize*8, + bsize*4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 9 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -8, -8, -8, -8, -8, -8, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 16, 16, 8, 4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, -16, 16, -8, -4, -2, 1 ]; + + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 1, 1, 2, 1, 2, 1, 1, 2 ]; + st = [ 32, 16, 16, -16, 8, 8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 9 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 2, 1, 2, 1, 1, 2 ]; + st = [ bsize*64, 32, 16, -16, 8, 8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 9 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 2, bsize*2, 2, 1, 1, 2, 1, 1, 2 ]; + st = [ bsize*64, bsize*32, 16, -8, 8, 8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 9 ] ); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 2, 1, 2, 1, 1, 2 ]; + st = [ bsize*64, bsize*64, bsize*32, -16, 8, 8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 9 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 2, bsize*2, 2, 1, 1, 1, 2 ]; + st = [ bsize*32, bsize*32, bsize*32, -bsize*16, 8, 4, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 9 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 1, 2, bsize*2, 2, 1, 1, 2 ]; + st = [ bsize*32, bsize*32, bsize*32, -bsize*32, bsize*16, 8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 9 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, bsize*2, 2, 1, 2 ]; + st = [ + bsize*64, + bsize*64, + bsize*32, + -bsize*32, + bsize*32, + bsize*16, + -8, + 4, + 4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 9 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 1, 2, bsize*2, 2, 2 ]; + st = [ + bsize*64, + bsize*64, + bsize*32, + -bsize*32, + bsize*32, + bsize*32, + -bsize*16, + 8, + 4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 9 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 1, 2, bsize*2, 2 ]; + st = [ + bsize*64, + bsize*64, + bsize*32, + -bsize*32, + bsize*16, + bsize*16, + -bsize*16, + bsize*8, + 4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 9 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 1, 1, 2, bsize*2 ]; + st = [ + bsize*32, + bsize*32, + bsize*16, + -bsize*16, + bsize*8, + bsize*8, + -bsize*8, + bsize*8, + bsize*4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 9 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'column-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'column-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -1, -1, -1, -1, -1, -1, -1, -2, -4, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, 1, 1, 4, 8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, 1, -1, -4, 8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 1, 1, 2, 1, 2, 1, 1, 2 ]; + st = [ + 2, + bsize*4, + bsize*8, + -bsize*8, + bsize*8, + bsize*16, + bsize*16, + -bsize*32, + bsize*32, + bsize*32 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 2, 1, 2, 1, 1, 2 ]; + st = [ + 2, + 4, + bsize*8, + bsize*16, + bsize*16, + bsize*32, + bsize*32, + bsize*64, + bsize*64, + bsize*64 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 2, bsize*2, 2, 1, 1, 2, 1, 1, 2 ]; + st = [ + 2, + 4, + 8, + bsize*16, + bsize*32, + bsize*32, + bsize*32, + bsize*64, + bsize*64, + bsize*64 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 2, 1, 2, 1, 1, 2 ]; + st = [ + 2, + 4, + 4, + 8, + bsize*16, + bsize*32, + bsize*32, + bsize*64, + bsize*64, + bsize*64 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 2, bsize*2, 2, 1, 1, 1, 2 ]; + st = [ 2, 4, 4, 4, 8, bsize*16, bsize*32, bsize*32, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 1, 2, bsize*2, 2, 1, 1, 2 ]; + st = [ 2, 4, 4, 4, 4, 8, bsize*16, bsize*32, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, bsize*2, 2, 1, 2 ]; + st = [ 2, 4, 4, 8, 8, 8, 16, bsize*32, bsize*64, bsize*64 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 2, bsize*2, 2, 1 ]; + st = [ 2, 4, 4, 8, 8, 16, 16, 32, bsize*64, bsize*128 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 1, 2, bsize*2, 2 ]; + st = [ 2, 4, 4, 8, 8, 16, 16, 16, 32, bsize*64 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 1, 1, 2, bsize*2 ]; + st = [ 2, 4, 4, 8, 8, 16, -16, 16, 16, 32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2, 1 ]; + st = [ -1, -1, -1, -1, -1, -1, -2, -4, -4, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, 1, 1, 4, 8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, -1, 1, -1, 1, 1, -4, -8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 1, 1, 2, 1, 2, 1, 1, 2 ]; + st = [ + 2, + bsize*4, + bsize*8, + -bsize*8, + bsize*8, + bsize*16, + bsize*16, + -bsize*32, + bsize*32, + bsize*32 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 2, 1, 2, 1, 1, 2 ]; + st = [ + 2, + 4, + bsize*8, + bsize*16, + bsize*16, + bsize*32, + bsize*32, + bsize*64, + bsize*64, + bsize*64 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 2, bsize*2, 2, 1, 1, 2, 1, 1, 2 ]; + st = [ + 2, + 4, + 8, + bsize*16, + bsize*32, + bsize*32, + bsize*32, + bsize*64, + bsize*64, + bsize*64 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 2, 1, 2, 1, 1, 2 ]; + st = [ + 2, + 4, + 4, + 8, + bsize*16, + bsize*32, + bsize*32, + bsize*64, + bsize*64, + bsize*64 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 2, bsize*2, 2, 1, 1, 1, 2 ]; + st = [ 2, 4, 4, 4, 8, bsize*16, bsize*32, bsize*32, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 1, 2, bsize*2, 2, 1, 1, 2 ]; + st = [ 2, 4, 4, 4, 4, 8, bsize*16, bsize*32, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, bsize*2, 2, 1, 2 ]; + st = [ 2, 4, 4, 8, 8, 8, 16, bsize*32, bsize*64, bsize*64 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 2, bsize*2, 2, 1 ]; + st = [ 2, 4, 4, 8, 8, 16, 16, 32, bsize*64, bsize*128 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 1, 2, bsize*2, 2 ]; + st = [ 2, 4, 4, 8, 8, 16, 16, 16, 32, bsize*64 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 10-dimensional ndarray and assigns results to the elements in an output 10-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 1, 1, 2, bsize*2 ]; + st = [ 2, 4, 4, 8, 8, 16, -16, 16, 16, 32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.1d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.1d.js new file mode 100644 index 000000000000..450d5c4cd302 --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.1d.js @@ -0,0 +1,134 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 1-dimensional ndarray and assigns results to the elements in an output 1-dimensional ndarray', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 8, 'float64' ), [ 4 ], [ 2 ], 1, 'row-major' ); + y = ndarray( 'float64', zeros( 8, 'float64' ), [ 4 ], [ 2 ], 1, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 1-dimensional ndarray and assigns results to the elements in an output 1-dimensional ndarray (empty array)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 8, 'float64' ), [ 0 ], [ 1 ], 0, 'row-major' ); + y = ndarray( 'float64', zeros( 8, 'float64' ), [ 0 ], [ 1 ], 0, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 1-dimensional ndarray and assigns results to the elements in an output 1-dimensional ndarray (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'complex128', ones( 6, 'complex128' ), [ 4 ], [ 1 ], 1, 'row-major' ); + y = ndarray( 'complex128', zeros( 6, 'complex128' ), [ 4 ], [ 1 ], 1, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.2d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.2d.js new file mode 100644 index 000000000000..579d46e29b25 --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.2d.js @@ -0,0 +1,1195 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var dfill = require( '@stdlib/blas/ext/base/dfill' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var blockSize = require( '@stdlib/ndarray/base/unary-tiling-block-size' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 4, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 4, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 11.0, + 5.0, + 11.0, + 5.0, + 11.0, + 5.0, + 11.0, + 5.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )+10.0, imag( z )+5.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0 ], [ 1, 1 ], 0, 'row-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0 ], [ 1, 1 ], 0, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 2 ]; + st = [ -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 2 ]; + st = [ 4, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 2 ]; + st = [ 4, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2 ]; + st = [ -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 1 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2 ]; + st = [ bsize*4, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 1 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 2 ]; + st = [ -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 2 ]; + st = [ 4, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 2 ]; + st = [ 4, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2 ]; + st = [ -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 1 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2 ]; + st = [ bsize*4, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 1 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 4, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 11.0, + 5.0, + 11.0, + 5.0, + 11.0, + 5.0, + 11.0, + 5.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )+10.0, imag( z )+5.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0 ], [ 1, 1 ], 0, 'column-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0 ], [ 1, 1 ], 0, 'column-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 2 ]; + st = [ -1, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 2 ]; + st = [ 1, 4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 2 ]; + st = [ 1, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2 ]; + st = [ 2, -bsize*4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2 ]; + st = [ -2, 4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 2 ]; + st = [ -1, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 2 ]; + st = [ -1, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 2 ]; + st = [ 1, 4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 2 ]; + st = [ 1, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2 ]; + st = [ 2, -bsize*4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 2-dimensional ndarray and assigns results to the elements in an output 2-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2 ]; + st = [ -2, 4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( x.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.3d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.3d.js new file mode 100644 index 000000000000..612460fc4924 --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.3d.js @@ -0,0 +1,1331 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var dfill = require( '@stdlib/blas/ext/base/dfill' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var blockSize = require( '@stdlib/ndarray/base/unary-tiling-block-size' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 4, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 4, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0 ], [ 1, 1, 1 ], 0, 'row-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0 ], [ 1, 1, 1 ], 0, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2 ]; + st = [ -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2 ]; + st = [ 3, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 6, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 6, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 10.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2 ]; + st = [ -3, -2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 6, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 6, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 10.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2 ]; + st = [ -4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 2 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 1, bsize*2, 2 ]; + st = [ -8, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 2 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 1, 2, bsize*2 ]; + st = [ bsize*8, bsize*4, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 2 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 2, 2 ]; + st = [ -4, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2 ]; + st = [ 3, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 6, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 6, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2 ]; + st = [ -3, -2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 6, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 6, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2 ]; + st = [ -4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 2 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 1, bsize*2, 2 ]; + st = [ -8, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 2 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 1, 2, bsize*2 ]; + st = [ -bsize*8, -bsize*4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 2 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0 ], [ 1, 1, 1 ], 0, 'column-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0 ], [ 1, 1, 1 ], 0, 'column-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2 ]; + st = [ -1, -2, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2 ]; + st = [ 1, 2, 4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 6, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 6, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2 ]; + st = [ 1, -2, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 6, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 6, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2 ]; + st = [ 2, -bsize*4, -bsize*4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 1, bsize*2, 2 ]; + st = [ 2, -2, -bsize*4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2 ]; + st = [ 2, -4, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 2, 2 ]; + st = [ -1, -2, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2 ]; + st = [ 1, 2, 3 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 6, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 6, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2 ]; + st = [ 1, -2, -3 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 6, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 6, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 1 ]; + st = [ 2, -bsize*4, -bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 1, bsize*2, 2 ]; + st = [ 2, -2, -bsize*4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 3-dimensional ndarray and assigns results to the elements in an output 3-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2 ]; + st = [ 2, -4, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.4d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.4d.js new file mode 100644 index 000000000000..41e71bf8e1ab --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.4d.js @@ -0,0 +1,1503 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var dfill = require( '@stdlib/blas/ext/base/dfill' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var blockSize = require( '@stdlib/ndarray/base/unary-tiling-block-size' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0 ], [ 1, 1, 1, 1 ], 0, 'row-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0 ], [ 1, 1, 1, 1 ], 0, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1 ]; + st = [ -2, -2, -1, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1 ]; + st = [ 4, 2, 1, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1 ]; + st = [ 4, -2, -1, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1 ]; + st = [ -4, -4, 2, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 3 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 1, bsize*2, 2, 1 ]; + st = [ -bsize*8, -4, 2, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 3 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 1, 2, bsize*2, 1 ]; + st = [ bsize*8, bsize*4, -2, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 3 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 1, 2, 1, bsize*2 ]; + st = [ bsize*8, bsize*4, bsize*4, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 3 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 2, 1, 2 ]; + st = [ -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1 ]; + st = [ 4, 2, 1, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1 ]; + st = [ 4, -2, -1, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1 ]; + st = [ -4, -4, 2, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 3 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 1, bsize*2, 2, 1 ]; + st = [ -bsize*8, -4, 2, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 3 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1 ]; + st = [ -bsize*4, bsize*4, -2, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 3 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2 ]; + st = [ -bsize*4, bsize*4, -bsize*4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 3 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0 ], [ 1, 1, 1, 1 ], 0, 'column-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0 ], [ 1, 1, 1, 1 ], 0, 'column-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 2, 1, 2 ]; + st = [ -1, -2, -4, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1 ]; + st = [ 1, 2, 4, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1 ]; + st = [ 1, -2, -4, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 1, 2, 1, bsize*2 ]; + st = [ 2, 2, -4, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 1, 2, bsize*2, 1 ]; + st = [ 2, 2, -4, -bsize*4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 1, bsize*2, 1, 2 ]; + st = [ 2, 2, -bsize*4, -bsize*4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 1, 2 ]; + st = [ 2, -bsize*4, bsize*4, -bsize*4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 2, 1, 2 ]; + st = [ -1, -2, -4, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1 ]; + st = [ 1, 2, 4, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1 ]; + st = [ 1, 2, -4, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 8, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 8, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1 ]; + st = [ 2, -bsize*4, -bsize*4, -bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1 ]; + st = [ 1, 2, -bsize*4, -bsize*4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1 ]; + st = [ 2, 4, -4, -bsize*4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 4-dimensional ndarray and assigns results to the elements in an output 4-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*4 ]; + st = [ 2, 4, -4, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.5d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.5d.js new file mode 100644 index 000000000000..717d04450f5a --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.5d.js @@ -0,0 +1,1740 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var dfill = require( '@stdlib/blas/ext/base/dfill' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var blockSize = require( '@stdlib/ndarray/base/unary-tiling-block-size' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1 ], 0, 'row-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1 ], 0, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 2, 1, 2, 2 ]; + st = [ -8, -4, -4, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = [ 8, 4, 2, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = [ 8, 4, -2, -2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 2 ]; + st = [ 8, -8, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 4 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 2 ]; + st = [ bsize*8, -4, 4, -4, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 4 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 2 ]; + st = [ bsize*8, bsize*8, -4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 4 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 1 ]; + st = [ bsize*8, -bsize*8, -bsize*4, -2, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 4 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, bsize*2 ]; + st = [ bsize*8, -bsize*8, -bsize*4, -bsize*4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 4 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = [ -4, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = [ 8, 4, 2, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = [ 8, 4, -2, -2, -1 ]; + + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 2 ]; + st = [ 8, -8, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 4 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 2 ]; + st = [ bsize*8, -4, 4, -4, -2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 4 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 2 ]; + st = [ bsize*8, bsize*8, -4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 4 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 2 ]; + st = [ bsize*8, -bsize*8, -bsize*8, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 4 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, bsize*2 ]; + st = [ bsize*8, -bsize*8, -bsize*4, -bsize*4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 4 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1 ], 0, 'column-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1 ], 0, 'column-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 2, 1, 2, 2 ]; + st = [ -1, -2, -4, -4, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = [ 1, 2, 2, 4, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = [ 1, 2, -2, -4, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 2 ]; + st = [ -2, bsize*4, -bsize*4, bsize*8, bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 2 ]; + st = [ -2, 4, -bsize*8, bsize*8, bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 2 ]; + st = [ -2, 4, -4, bsize*8, bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 2 ]; + st = [ -2, 4, -4, 4, bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, bsize*2 ]; + st = [ -2, 4, -4, 8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = [ -1, -2, -2, -4, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = [ 1, 2, 2, 4, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1, 2 ]; + st = [ 1, 2, -2, -4, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 2 ]; + st = [ -2, bsize*4, -bsize*4, bsize*8, bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 1 ]; + st = [ -2, 4, -bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 2 ]; + st = [ -2, 4, -4, bsize*8, bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 2 ]; + st = [ -2, -4, -4, 4, bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 5-dimensional ndarray and assigns results to the elements in an output 5-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, bsize*2 ]; + st = [ 2, 4, -4, 8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.6d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.6d.js new file mode 100644 index 000000000000..6d340cc6ea68 --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.6d.js @@ -0,0 +1,1892 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var dfill = require( '@stdlib/blas/ext/base/dfill' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var blockSize = require( '@stdlib/ndarray/base/unary-tiling-block-size' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1 ], 0, 'row-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1 ], 0, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ -8, -8, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 8, 4, 4, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ 16, -16, 8, -4, 4, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 1, 2 ]; + st = [ 8, -8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 5 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 1, 2 ]; + st = [ bsize*8, -4, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 5 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 1, 2 ]; + st = [ bsize*8, -bsize*8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 5 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 1, 2 ]; + st = [ bsize*8, -bsize*8, -bsize*8, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 5 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 1, bsize*2, 2 ]; + st = [ bsize*8, -bsize*8, -bsize*8, bsize*8, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 5 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, bsize*2 ]; + st = [ bsize*8, -bsize*8, -bsize*4, bsize*4, bsize*4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 5 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ -8, -8, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 8, 4, 4, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 8, -4, -4, -1 ]; + + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 1, 2 ]; + st = [ 8, -8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 5 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 1, 2 ]; + st = [ bsize*8, -4, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 5 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 1, 2 ]; + st = [ bsize*8, -bsize*8, -4, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 5 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 1, 2 ]; + st = [ bsize*8, -bsize*8, -bsize*8, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 5 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 1, bsize*2, 2 ]; + st = [ bsize*8, -bsize*8, -bsize*8, bsize*8, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 5 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, bsize*2 ]; + st = [ bsize*8, -bsize*8, -bsize*4, bsize*4, bsize*4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 5 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1 ], 0, 'column-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1 ], 0, 'column-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ -1, -1, -1, -2, -4, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 2, 4, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ 1, -1, 1, -2, 4, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 1, 2, 1, 2 ]; + st = [ 2, bsize*4, bsize*4, -bsize*4, bsize*8, -bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 1, 2 ]; + st = [ 2, 4, bsize*8, -bsize*8, bsize*8, -bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 1, 2 ]; + st = [ 2, 4, 4, -bsize*8, bsize*8, -bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 1, 2 ]; + st = [ 2, 4, 4, -4, bsize*8, -bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 2, bsize*2, 1 ]; + st = [ 2, 4, 4, -4, 8, -bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, bsize*2 ]; + st = [ 2, 4, 4, -8, 8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ -1, -1, -1, -2, -4, -4 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 2, 4, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, -2, -4, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 12, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 12, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 1, 2 ]; + st = [ 2, bsize*4, bsize*4, -bsize*8, bsize*8, -bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 1, 2 ]; + st = [ 2, 4, bsize*8, -bsize*8, bsize*8, -bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 1, 2 ]; + st = [ 2, 4, 4, -bsize*8, bsize*8, -bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 1, 2 ]; + st = [ 2, 4, 4, -4, bsize*8, -bsize*8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 2, bsize*2, 1 ]; + st = [ 2, 4, 4, -4, 8, -bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 6-dimensional ndarray and assigns results to the elements in an output 6-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, bsize*2 ]; + st = [ 2, 4, 4, -8, 8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.7d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.7d.js new file mode 100644 index 000000000000..474b3702f37b --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.7d.js @@ -0,0 +1,2099 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var dfill = require( '@stdlib/blas/ext/base/dfill' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var blockSize = require( '@stdlib/ndarray/base/unary-tiling-block-size' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1 ], 0, 'row-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1 ], 0, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -8, -8, -8, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 8, 4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -16, 16, -16, 8, -4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 2, 1, 2 ]; + st = [ 16, -16, 8, 8, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 6 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 2, 1, 1, 2 ]; + st = [ bsize*16, -8, 8, 4, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 6 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 2, 1, 2 ]; + st = [ bsize*16, -bsize*16, 8, 8, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 6 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 1, 1, 2 ]; + st = [ bsize*16, -bsize*16, bsize*8, 4, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 6 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, bsize*2, 1, 2 ]; + st = [ bsize*16, -bsize*16, bsize*8, bsize*8, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 6 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, bsize*2, 2 ]; + st = [ bsize*16, -bsize*16, bsize*8, bsize*8, -bsize*8, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 6 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, bsize*2 ]; + st = [ bsize*16, -bsize*16, bsize*8, bsize*8, -bsize*4, bsize*4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 6 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 2, 1, 2, 1, 2, 1, 2 ]; + st = [ -8, -8, -4, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 8, 4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -16, 16, -16, -8, 4, -2, 1 ]; + + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 2, 1, 2 ]; + st = [ 16, -16, 8, 8, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 6 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 2, 1, 2 ]; + st = [ bsize*16, -8, 8, 8, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 6 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 2, 1, 2 ]; + st = [ bsize*16, -bsize*16, 8, 8, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 6 ] ); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 1, 1, 2 ]; + st = [ bsize*16, -bsize*16, bsize*8, 4, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 6 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, bsize*2, 1, 2 ]; + st = [ bsize*16, -bsize*16, bsize*8, bsize*8, -4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 6 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 2, 1, bsize*2, 2 ]; + st = [ bsize*16, -bsize*16, bsize*16, bsize*8, -bsize*8, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 6 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, bsize*2 ]; + st = [ bsize*16, -bsize*16, bsize*8, bsize*8, -bsize*4, bsize*4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 6 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1 ], 0, 'column-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1 ], 0, 'column-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1, 2, 1, 2 ]; + st = [ -1, -2, -2, -4, -4, -8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 2, 4, 8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, -1, 2, -4, 8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 2, 1, 2 ]; + st = [ 2, -bsize*4, bsize*4, bsize*8, -bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 2, 1, 2, 1 ]; + st = [ 2, -4, bsize*8, bsize*8, -bsize*16, bsize*16, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 2, 1, 2 ]; + st = [ 2, -4, -4, bsize*8, bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 2, 1, 2 ]; + st = [ 2, -4, -4, 4, bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, bsize*2, 1, 2 ]; + st = [ 2, -4, -4, 8, 8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, bsize*2, 2 ]; + st = [ 2, -4, -4, 8, 8, 8, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, bsize*2 ]; + st = [ 2, -4, -4, 8, 8, 16, 16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 1, 2, 1, 2, 1, 2 ]; + st = [ -1, -2, -2, -4, -4, -8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 2, 4, 8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -1, 1, -1, -2, 4, -8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 2, 1, 2 ]; + st = [ 2, -bsize*4, -bsize*4, bsize*8, bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 2, 1, 2 ]; + st = [ 2, -4, -bsize*8, bsize*8, bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 1, 2, 1, 2 ]; + st = [ 2, -4, -4, bsize*8, bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 1, 2, 2 ]; + st = [ 2, -4, -4, 4, bsize*8, bsize*8, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, bsize*2, 1, 2 ]; + st = [ 2, -4, -4, 8, 8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, bsize*2, 2 ]; + st = [ 2, -4, -4, 8, 8, 8, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 7-dimensional ndarray and assigns results to the elements in an output 7-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, bsize*2 ]; + st = [ 2, -4, -4, 8, 8, 16, 16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.8d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.8d.js new file mode 100644 index 000000000000..cc4bf44cb760 --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.8d.js @@ -0,0 +1,2221 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var dfill = require( '@stdlib/blas/ext/base/dfill' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var blockSize = require( '@stdlib/ndarray/base/unary-tiling-block-size' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'row-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -8, -8, -8, -8, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 8, 4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, -8, -4, -2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 2, 1, 1, 2, 1, 2 ]; + st = [ 32, -16, 8, -8, -8, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 7 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 1, 2, 1, 2 ]; + st = [ -bsize*32, -16, 8, -8, -8, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 7 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 2, 1, 2, 1, 2 ]; + st = [ -bsize*32, -bsize*32, 16, -8, -8, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 7 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 2, 2, 1, 2 ]; + st = [ -bsize*32, -bsize*32, bsize*32, -16, -8, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 7 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, bsize*2, 2, 1, 2 ]; + st = [ -bsize*32, -bsize*32, bsize*16, -bsize*16, -8, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 7 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, bsize*2, 2, 2 ]; + st = [ -bsize*32, -bsize*32, bsize*16, -bsize*16, -bsize*16, 8, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 7 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 1, bsize*2, 2 ]; + st = [ -bsize*16, -bsize*16, bsize*8, -bsize*8, -bsize*8, bsize*8, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 7 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, 1, bsize*2 ]; + st = [ + -bsize*16, + -bsize*16, + bsize*8, + -bsize*8, + -bsize*8, + bsize*4, + -bsize*4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 7 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -8, -8, -8, -8, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 8, 4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, -16, 16, -8, -4, -2, 1 ]; + + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 2, 1, 1, 2, 1, 2 ]; + st = [ 32, 16, 8, -8, -8, 4, 4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 7 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 1, 2, 1, 2 ]; + st = [ -bsize*32, -16, 8, -8, -8, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 7 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, bsize*2, 2, 1, 2, 1, 2 ]; + st = [ -bsize*32, -bsize*32, 16, -8, -8, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 7 ] ); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, bsize*2, 2, 2, 1, 2 ]; + st = [ -bsize*32, -bsize*32, bsize*32, -16, -8, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 7 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, bsize*2, 2, 1, 2 ]; + st = [ -bsize*32, -bsize*32, bsize*16, -bsize*16, -8, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 7 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, bsize*2, 2, 2 ]; + st = [ -bsize*32, -bsize*32, bsize*16, -bsize*16, -bsize*16, 8, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 7 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 1, bsize*2, 2 ]; + st = [ -bsize*16, -bsize*16, bsize*8, -bsize*8, -bsize*8, bsize*8, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 7 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, 1, bsize*2 ]; + st = [ + -bsize*16, + -bsize*16, + bsize*8, + -bsize*8, + -bsize*8, + bsize*4, + -bsize*4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 7 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'column-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'column-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2, 1 ]; + st = [ -1, -1, -1, -1, -2, -4, -4, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, 4, 8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, -1, -4, 8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 1, 2, 1, 2 ]; + st = [ 2, bsize*4, bsize*4, bsize*8, bsize*8, bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 1, 2, 1, 2 ]; + st = [ 2, -4, bsize*8, bsize*8, bsize*8, bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 2, bsize*2, 1, 1, 2, 1, 2 ]; + st = [ 2, 4, 8, bsize*16, bsize*16, bsize*16, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 1, 2, 1, 2 ]; + st = [ 2, 4, 4, 8, bsize*16, bsize*16, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 2, bsize*2, 1, 1, 2 ]; + st = [ 2, 4, 4, 8, 16, bsize*32, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, bsize*2, 1, 2 ]; + st = [ 2, 4, 4, 8, 8, 16, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, bsize*2, 2 ]; + st = [ 2, 4, 4, 8, 8, 8, 16, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, 2, bsize*2 ]; + st = [ 2, 4, 4, 8, 8, 8, 16, 32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 2, 2, 1, 2, 1 ]; + st = [ -1, -1, -1, -1, -2, -4, -4, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, 4, 8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -1, 1, -1, 1, 1, -4, -8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 1, 2, 1, 1, 2, 1, 2 ]; + st = [ 2, bsize*4, bsize*4, bsize*8, bsize*8, bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 1, 1, 1, 2, 1, 2 ]; + st = [ 2, -4, bsize*8, bsize*8, bsize*8, bsize*8, bsize*16, bsize*16 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 2, bsize*2, 1, 1, 2, 1, 2 ]; + st = [ 2, 4, 8, bsize*16, bsize*16, bsize*16, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 1, 2, 1, 2 ]; + st = [ 2, 4, 4, 8, bsize*16, bsize*16, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 2, bsize*2, 1, 1, 2 ]; + st = [ 2, 4, 4, 8, 16, bsize*32, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, bsize*2, 1, 2 ]; + st = [ 2, 4, 4, 8, 8, 16, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, bsize*2, 2 ]; + st = [ 2, 4, 4, 8, 8, 8, 16, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 8-dimensional ndarray and assigns results to the elements in an output 8-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, 2, bsize*2 ]; + st = [ 2, 4, 4, 8, 8, 8, 16, 32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.9d.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.9d.js new file mode 100644 index 000000000000..7635a5201c8e --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.9d.js @@ -0,0 +1,2447 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var dfill = require( '@stdlib/blas/ext/base/dfill' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var blockSize = require( '@stdlib/ndarray/base/unary-tiling-block-size' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'row-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'row-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -8, -8, -8, -8, -8, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 16, 8, 4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 16, -8, -4, -2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 2, 1, 1, 2, 1, 1, 2 ]; + st = [ 32, -16, -8, 8, 8, -4, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 8 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 1, 2, 1, 1, 2 ]; + st = [ bsize*32, -16, -8, 8, 8, -4, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 8 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 1, 2, bsize*2, 2, 1, 2, 1, 1, 2 ]; + st = [ bsize*64, -bsize*32, -16, 8, 8, -4, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 8 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 2, 2, 1, 1, 2 ]; + st = [ bsize*64, -bsize*64, -bsize*32, 16, 8, -4, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 8 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 2, bsize*2, 2, 1, 1, 2 ]; + st = [ bsize*64, -bsize*64, -bsize*32, bsize*16, 8, -4, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 8 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, bsize*2, 2, 1, 2 ]; + st = [ bsize*64, -bsize*64, -bsize*32, bsize*32, bsize*16, -8, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 8 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, bsize*2, 2, 2 ]; + st = [ + bsize*64, + -bsize*64, + -bsize*32, + bsize*32, + bsize*32, + -bsize*16, + 8, + -4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 8 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 1, 2, bsize*2, 2 ]; + st = [ + -bsize*32, + -bsize*32, + -bsize*16, + bsize*16, + bsize*16, + -bsize*16, + bsize*8, + 4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 8 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 1, 2, bsize*2 ]; + st = [ + -bsize*32, + -bsize*32, + -bsize*16, + bsize*16, + bsize*8, + -bsize*8, + bsize*8, + bsize*4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 8 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ -8, -8, -8, -8, -8, -4, -2, -2, -1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 16, 8, 4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, -16, 16, -8, -4, -2, 1 ]; + + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 2, 1, 1, 2, 1, 1, 2 ]; + st = [ 32, -16, -8, 8, 8, -4, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 8 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 1, 2, 1, 1, 2 ]; + st = [ bsize*32, -16, -8, 8, 8, -4, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 8 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 2, bsize*2, 2, 1, 2, 1, 1, 2 ]; + st = [ bsize*64, -bsize*32, -16, 8, 8, -4, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 8 ] ); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 2, 2, 1, 1, 2 ]; + st = [ bsize*64, -bsize*64, -bsize*32, 16, 8, -4, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 8 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 2, bsize*2, 2, 1, 1, 2 ]; + st = [ bsize*64, -bsize*64, -bsize*32, bsize*16, 8, -4, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 8 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, bsize*2, 2, 1, 2 ]; + st = [ bsize*64, -bsize*64, -bsize*32, bsize*32, bsize*16, -8, 4, -4, 2 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 8 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, bsize*2, 2, 2 ]; + st = [ + bsize*64, + -bsize*64, + -bsize*32, + bsize*32, + bsize*32, + -bsize*16, + 8, + -4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 8 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 1, 2, bsize*2, 2 ]; + st = [ + -bsize*32, + -bsize*32, + -bsize*16, + bsize*16, + bsize*16, + -bsize*16, + bsize*8, + 4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 8 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (row-major, non-contiguous, large arrays, accessors', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, 1, 1, 2, bsize*2 ]; + st = [ + -bsize*32, + -bsize*32, + -bsize*16, + bsize*16, + bsize*8, + -bsize*8, + bsize*8, + bsize*4, + 2 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 8 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 4 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, empty)', function test( t ) { + var expected; + var x; + var y; + + x = ndarray( 'float64', ones( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'column-major' ); + y = ndarray( 'float64', zeros( 4, 'float64' ), [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ], 0, 'column-major' ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, contiguous, negative strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 2, 2, 1, 2, 1, 1, 1, 1, 1 ]; + st = [ -1, -2, -4, -4, -8, -8, -8, -8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, 1, 4, 8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, -1, -4, 8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 2, 1, 1, 2, 1, 1, 2 ]; + st = [ + 2, + bsize*4, + bsize*8, + bsize*16, + bsize*16, + bsize*16, + bsize*32, + bsize*32, + bsize*32 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 1, 1, 1, 1, 2 ]; + st = [ + 2, + 4, + bsize*8, + bsize*16, + bsize*16, + bsize*16, + bsize*16, + bsize*16, + bsize*16 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 2, bsize*2, 2, 1, 1, 1, 1, 2 ]; + st = [ 2, 4, 8, bsize*16, bsize*32, bsize*32, bsize*32, bsize*32, bsize*32 ]; // eslint-disable-line max-len + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 2, 1, 1, 1, 2 ]; + st = [ 2, 4, 4, 8, bsize*16, bsize*32, bsize*32, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 2, bsize*2, 2, 1, 1, 2 ]; + st = [ 2, 4, 4, 4, 8, bsize*16, bsize*32, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, bsize*2, 2, 1, 2 ]; + st = [ 2, 4, 4, 8, 8, 16, bsize*32, bsize*64, bsize*64 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, bsize*2, 2, 2 ]; + st = [ 2, 4, 4, 8, 8, 8, 16, bsize*32, bsize*64 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 1, 2, bsize*2, 2 ]; + st = [ 2, 4, 4, 8, 8, 8, 8, 16, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 1, 2, 2, bsize*2 ]; + st = [ 2, 4, 4, 8, 8, 8, 8, 16, 32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array( y.length*2 ); + dfill( y.length, 10.0, expected, st[ 0 ] ); + + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 2, 2, 1, 2, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, contiguous, negative strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 2, 2, 1, 2, 1, 1, 1, 1, 1 ]; + st = [ -1, -2, -4, -4, -8, -8, -8, -8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, 1, 4, 8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, -1, 1, -1, 1, 1, -4, -8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ bsize*2, 2, 2, 1, 1, 2, 1, 1, 2 ]; + st = [ + 2, + bsize*4, + bsize*8, + bsize*16, + bsize*16, + bsize*16, + bsize*32, + bsize*32, + bsize*32 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, bsize*2, 2, 1, 1, 1, 1, 1, 2 ]; + st = [ + 2, + 4, + bsize*8, + bsize*16, + bsize*16, + bsize*16, + bsize*16, + bsize*16, + bsize*16 + ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 2, bsize*2, 2, 1, 1, 1, 1, 2 ]; + st = [ 2, 4, 8, bsize*16, bsize*32, bsize*32, bsize*32, bsize*32, bsize*32 ]; // eslint-disable-line max-len + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, bsize*2, 2, 1, 1, 1, 2 ]; + st = [ 2, 4, 4, 8, bsize*16, bsize*32, bsize*32, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 1, 2, bsize*2, 2, 1, 1, 2 ]; + st = [ 2, 4, 4, 4, 8, bsize*16, bsize*32, bsize*32, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 2, bsize*2, 2, 1, 2 ]; + st = [ 2, 4, 4, 8, 8, 16, bsize*32, bsize*64, bsize*64 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 2, bsize*2, 2, 2 ]; + st = [ 2, 4, 4, 8, 8, 8, 16, bsize*32, bsize*64 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 1, 2, bsize*2, 2 ]; + st = [ 2, 4, 4, 8, 8, 8, 8, 16, bsize*32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element in an input 9-dimensional ndarray and assigns results to the elements in an output 9-dimensional ndarray (column-major, non-contiguous, large arrays, accessors)', function test( t ) { + var expected; + var bsize; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + + bsize = blockSize( dt ); + sh = [ 2, 1, 2, 1, 1, 1, 2, 2, bsize*2 ]; + st = [ 2, 4, 4, 8, 8, 8, 8, 16, 32 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh )*2, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh )*2, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( y.length*2 ); + gfill( y.length, new Complex128( 10.0, 0.0 ), expected, st[ 0 ] ); + + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.js index bf08d19a695b..55d7c92ecac9 100644 --- a/lib/node_modules/@stdlib/ndarray/base/map/test/test.js +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.js @@ -16,11 +16,19 @@ * limitations under the License. */ +/* eslint-disable max-len */ + 'use strict'; // MODULES // var tape = require( 'tape' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); var map = require( './../lib' ); @@ -32,4 +40,100 @@ tape( 'main export is a function', function test( t ) { t.end(); }); -// FIXME: add tests +tape( 'the function throws an error if provided input and output ndarrays which do not have the same number of dimensions', function test( t ) { + var shapes; + var i; + + shapes = [ + [ [ 4, 2, 1 ], [ 4, 2 ] ], + [ [ 2, 2 ], [ 2, 2, 2 ] ], + [ [ 1, 1, 1, 1 ], [ 1, 1, 1 ] ], + [ [ 2, 2, 1, 2 ], [ 2, 1, 2 ] ], + [ [ 1, 1, 4, 2, 2, 2 ], [ 10, 2 ] ], + [ [ 1, 1, 1, 1 ], [ 1, 1, 1 ] ] + ]; + + for ( i = 0; i < shapes.length; i++ ) { + t.throws( badValue( shapes[i][0], shapes[i][1] ), Error, 'throws an error when input shape is ' + shapes[i][0] + ' and output shape is ' + shapes[i][1] ); + } + t.end(); + + function scale( z ) { + return z * 10.0; + } + + function badValue( sh1, sh2 ) { + return function badValue() { + var dtype; + var ord; + var st1; + var st2; + var o1; + var o2; + var x; + var y; + + ord = 'row-major'; + dtype = 'float64'; + + st1 = shape2strides( sh1, ord ); + st2 = shape2strides( sh2, ord ); + o1 = strides2offset( sh1, st1 ); + o2 = strides2offset( sh2, st2 ); + + x = ndarray( dtype, ones( numel( sh1 ), dtype ), sh1, st1, o1, ord ); + y = ndarray( dtype, zeros( numel( sh2 ), dtype ), sh2, st2, o2, ord ); + + map( [ x, y ], scale ); + }; + } +}); + +tape( 'the function throws an error if provided input and output ndarrays which do not have the same shape', function test( t ) { + var shapes; + var i; + + shapes = [ + [ [ 4, 2, 1 ], [ 4, 2, 2 ] ], + [ [ 3, 3 ], [ 2, 2 ] ], + [ [ 5, 5, 5 ], [ 5, 5, 4 ] ], + [ [ 1, 1, 1 ], [ 2, 2, 2 ] ], + [ [ 1, 4, 1, 2, 2 ], [ 3, 8 ] ], + [ [ 10, 2, 1 ], [ 1, 2, 10 ] ] + ]; + + for ( i = 0; i < shapes.length; i++ ) { + t.throws( badValue( shapes[i][0], shapes[i][1] ), Error, 'throws an error when input shape is ' + shapes[i][0] + ' and output shape is ' + shapes[i][1] ); + } + t.end(); + + function scale( z ) { + return z * 10.0; + } + + function badValue( sh1, sh2 ) { + return function badValue() { + var dtype; + var ord; + var st1; + var st2; + var o1; + var o2; + var x; + var y; + + ord = 'row-major'; + dtype = 'float64'; + + st1 = shape2strides( sh1, ord ); + st2 = shape2strides( sh2, ord ); + o1 = strides2offset( sh1, st1 ); + o2 = strides2offset( sh2, st2 ); + + x = ndarray( dtype, ones( numel( sh1 ), dtype ), sh1, st1, o1, ord ); + y = ndarray( dtype, zeros( numel( sh2 ), dtype ), sh2, st2, o2, ord ); + + map( [ x, y ], scale ); + }; + } +}); diff --git a/lib/node_modules/@stdlib/ndarray/base/map/test/test.nd.js b/lib/node_modules/@stdlib/ndarray/base/map/test/test.nd.js new file mode 100644 index 000000000000..bd7e87b12e1c --- /dev/null +++ b/lib/node_modules/@stdlib/ndarray/base/map/test/test.nd.js @@ -0,0 +1,822 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Float64Array = require( '@stdlib/array/float64' ); +var zeros = require( '@stdlib/array/zeros' ); +var ones = require( '@stdlib/array/ones' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); +var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); +var numel = require( '@stdlib/ndarray/base/numel' ); +var map = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof map, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (row-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (row-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (row-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (row-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 16, 16, 16, 16, 8, 4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (row-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 16, 16, 16, 16, -8, -4, -2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (row-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( [ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ] ); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (row-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 16, 16, 16, 16, 8, 4, 2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (row-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'row-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 16, 16, 16, 16, 16, 16, -16, 16, -8, -4, -2, 1 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (column-major, singleton dimensions)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (column-major, singleton dimensions, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (column-major, contiguous)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0, + 10.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape('the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (column-major, non-contiguous, same sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 8, 8 ]; + o = strides2offset(sh, st); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape('the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (column-major, non-contiguous, mixed sign strides)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'float64'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, 1, 1, 1, -1, -4, 8, -8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Float64Array([ + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0, + 10.0, + 10.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameFloat64Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return z * 10.0; + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (column-major, contiguous, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = shape2strides( sh, ord ); + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( numel( sh ), dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( numel( sh ), dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array( [ + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0 + ] ); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (column-major, non-contiguous, same sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +}); + +tape( 'the function applies a callback to each indexed element of an input n-dimensional ndarray and assigns results to the elements in an output n-dimensional ndarray (column-major, non-contiguous, mixed sign strides, accessors)', function test( t ) { + var expected; + var ord; + var sh; + var st; + var dt; + var o; + var x; + var y; + + dt = 'complex128'; + ord = 'column-major'; + sh = [ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2 ]; + st = [ 1, 1, 1, 1, -1, 1, -1, 1, 1, -4, -8, 8 ]; + o = strides2offset( sh, st ); + + x = ndarray( dt, ones( 16, dt ), sh, st, o, ord ); + y = ndarray( dt, zeros( 16, dt ), sh, st, o, ord ); + + map( [ x, y ], scale ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 10.0, + 0.0, + 10.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + t.strictEqual( isSameComplex128Array( y.data, expected ), true, 'returns expected value' ); + + t.end(); + + function scale( z ) { + return new Complex128( real( z )*10.0, imag( z )*10.0 ); + } +});