diff --git a/lib/node_modules/@stdlib/ndarray/base/kernels/generic/binary-strided1d/blocked/README.md b/lib/node_modules/@stdlib/ndarray/base/kernels/generic/binary-strided1d/blocked/README.md
new file mode 100644
index 000000000000..7ece3053a877
--- /dev/null
+++ b/lib/node_modules/@stdlib/ndarray/base/kernels/generic/binary-strided1d/blocked/README.md
@@ -0,0 +1,1552 @@
+
+
+# kernel
+
+> Return a kernel for applying a one-dimensional strided array function to two input ndarrays and assigning results to an output ndarray using loop blocking.
+
+
+
+
+
+
+
+## Usage
+
+```javascript
+var kernel = require( '@stdlib/ndarray/base/kernels/generic/binary-strided1d/blocked' );
+```
+
+#### kernel( ndims )
+
+Returns a kernel for applying a one-dimensional strided array function to two input ndarrays and assigning results to an output ndarray using loop blocking.
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 3, 2, 2 ];
+var ysh = [ 1, 3, 2, 2 ];
+var zsh = [ 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 4, 2, 1 ];
+var sy = [ 12, 4, 2, 1 ];
+var sz = [ 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Define an input strategy:
+function inputStrategy( x ) {
+ return {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 4 ],
+ 'strides': [ 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ };
+}
+
+// Define an output strategy:
+function outputStrategy( x ) {
+ return x;
+}
+
+var strategy = {
+ 'input': inputStrategy,
+ 'output': outputStrategy
+};
+
+// Resolve a kernel:
+var f = kernel( 2 );
+
+// Apply strided function:
+f( gwxpy, [ x, y, z ], views, [ 1, 3 ], [ 12, 4 ], [ 12, 4 ], [ 12, 4 ], strategy, strategy, strategy, {} );
+
+var arr = ndarray2array( z.data, z.shape, z.strides, z.offset, z.order );
+// returns [ [ [ [ 3.0, 5.0 ], [ 7.0, 9.0 ] ], [ [ 11.0, 13.0 ], [ 15.0, 17.0 ] ], [ [ 19.0, 21.0 ], [ 23.0, 25.0 ] ] ] ]
+```
+
+The function accepts the following arguments:
+
+- **ndims**: number of loop dimensions.
+
+If the function is provided `ndims < 2` or a value greater than the maximum number of supported loop dimensions, the function returns `null`.
+
+```javascript
+var f = kernel( 1 );
+// returns null
+```
+
+The returned function accepts the following arguments:
+
+- **fcn**: function which will be applied to two one-dimensional input subarrays and should update a one-dimensional output subarray with results.
+- **arrays**: array containing two input ndarray [descriptors][@stdlib/ndarray/base/descriptor] and one output ndarray [descriptor][@stdlib/ndarray/base/descriptor], followed by any additional ndarray arguments.
+- **views**: initialized ndarray [descriptors][@stdlib/ndarray/base/descriptor] representing subarray views.
+- **shape**: loop dimensions.
+- **stridesX**: loop dimension strides for the first input ndarray.
+- **stridesY**: loop dimension strides for the second input ndarray.
+- **stridesZ**: loop dimension strides for the output ndarray.
+- **strategyX**: strategy for marshaling data to and from a first input ndarray view.
+- **strategyY**: strategy for marshaling data to and from a second input ndarray view.
+- **strategyZ**: strategy for marshaling data to and from an output ndarray view.
+- **options**: function options which are passed through to `fcn`.
+
+The returned function iterates over ndarray elements according to the memory layout of the first input ndarray.
+
+
+
+#### kernel.kernel2d( fcn, arrays, views, shape, stridesX, strideY, strideZ, strategyX, strategyY, strategyZ, options )
+
+
+
+Applies a one-dimensional strided array function to a list of specified dimensions in two input ndarrays and assigns results to a provided output ndarray using loop blocking.
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 3, 2, 2 ];
+var ysh = [ 1, 3, 2, 2 ];
+var zsh = [ 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 4, 2, 1 ];
+var sy = [ 12, 4, 2, 1 ];
+var sz = [ 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Define an input strategy:
+function inputStrategy( x ) {
+ return {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 4 ],
+ 'strides': [ 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ };
+}
+
+// Define an output strategy:
+function outputStrategy( x ) {
+ return x;
+}
+
+var strategy = {
+ 'input': inputStrategy,
+ 'output': outputStrategy
+};
+
+// Apply strided function:
+kernel.kernel2d( gwxpy, [ x, y, z ], views, [ 1, 3 ], [ 12, 4 ], [ 12, 4 ], [ 12, 4 ], strategy, strategy, strategy, {} );
+
+var arr = ndarray2array( z.data, z.shape, z.strides, z.offset, z.order );
+// returns [ [ [ [ 3.0, 5.0 ], [ 7.0, 9.0 ] ], [ [ 11.0, 13.0 ], [ 15.0, 17.0 ] ], [ [ 19.0, 21.0 ], [ 23.0, 25.0 ] ] ] ]
+```
+
+The function has the following parameters:
+
+- **fcn**: function which will be applied to two one-dimensional input subarrays and should update a one-dimensional output subarray with results.
+- **arrays**: array containing two input ndarray [descriptors][@stdlib/ndarray/base/descriptor] and one output ndarray [descriptor][@stdlib/ndarray/base/descriptor], followed by any additional ndarray arguments.
+- **views**: initialized ndarray [descriptors][@stdlib/ndarray/base/descriptor] representing subarray views.
+- **shape**: loop dimensions. Should have two elements.
+- **stridesX**: loop dimension strides for the first input ndarray.
+- **stridesY**: loop dimension strides for the second input ndarray.
+- **stridesZ**: loop dimension strides for the output ndarray.
+- **strategyX**: strategy for marshaling data to and from a first input ndarray view.
+- **strategyY**: strategy for marshaling data to and from a second input ndarray view.
+- **strategyZ**: strategy for marshaling data to and from an output ndarray view.
+- **options**: function options which are passed through to `fcn`.
+
+
+
+#### kernel.kernel3d( fcn, arrays, views, shape, stridesX, strideY, strideZ, strategyX, strategyY, strategyZ, options )
+
+
+
+Applies a one-dimensional strided array function to a list of specified dimensions in two input ndarrays and assigns results to a provided output ndarray using loop blocking.
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 1, 3, 2, 2 ];
+var ysh = [ 1, 1, 3, 2, 2 ];
+var zsh = [ 1, 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 12, 4, 2, 1 ];
+var sy = [ 12, 12, 4, 2, 1 ];
+var sz = [ 12, 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Define an input strategy:
+function inputStrategy( x ) {
+ return {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 4 ],
+ 'strides': [ 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ };
+}
+
+// Define an output strategy:
+function outputStrategy( x ) {
+ return x;
+}
+
+var strategy = {
+ 'input': inputStrategy,
+ 'output': outputStrategy
+};
+
+// Apply strided function:
+kernel.kernel3d( gwxpy, [ x, y, z ], views, [ 1, 1, 3 ], [ 12, 12, 4 ], [ 12, 12, 4 ], [ 12, 12, 4 ], strategy, strategy, strategy, {} );
+
+var arr = ndarray2array( z.data, z.shape, z.strides, z.offset, z.order );
+// returns [ [ [ [ [ 3.0, 5.0 ], [ 7.0, 9.0 ] ], [ [ 11.0, 13.0 ], [ 15.0, 17.0 ] ], [ [ 19.0, 21.0 ], [ 23.0, 25.0 ] ] ] ] ]
+```
+
+The function has the following parameters:
+
+- **fcn**: function which will be applied to two one-dimensional input subarrays and should update a one-dimensional output subarray with results.
+- **arrays**: array containing two input ndarray [descriptors][@stdlib/ndarray/base/descriptor] and one output ndarray [descriptor][@stdlib/ndarray/base/descriptor], followed by any additional ndarray arguments.
+- **views**: initialized ndarray [descriptors][@stdlib/ndarray/base/descriptor] representing subarray views.
+- **shape**: loop dimensions. Should have three elements.
+- **stridesX**: loop dimension strides for the first input ndarray.
+- **stridesY**: loop dimension strides for the second input ndarray.
+- **stridesZ**: loop dimension strides for the output ndarray.
+- **strategyX**: strategy for marshaling data to and from a first input ndarray view.
+- **strategyY**: strategy for marshaling data to and from a second input ndarray view.
+- **strategyZ**: strategy for marshaling data to and from an output ndarray view.
+- **options**: function options which are passed through to `fcn`.
+
+
+
+#### kernel.kernel4d( fcn, arrays, views, shape, stridesX, strideY, strideZ, strategyX, strategyY, strategyZ, options )
+
+
+
+Applies a one-dimensional strided array function to a list of specified dimensions in two input ndarrays and assigns results to a provided output ndarray using loop blocking.
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 1, 1, 3, 2, 2 ];
+var ysh = [ 1, 1, 1, 3, 2, 2 ];
+var zsh = [ 1, 1, 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 12, 12, 4, 2, 1 ];
+var sy = [ 12, 12, 12, 4, 2, 1 ];
+var sz = [ 12, 12, 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Define an input strategy:
+function inputStrategy( x ) {
+ return {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 4 ],
+ 'strides': [ 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ };
+}
+
+// Define an output strategy:
+function outputStrategy( x ) {
+ return x;
+}
+
+var strategy = {
+ 'input': inputStrategy,
+ 'output': outputStrategy
+};
+
+// Apply strided function:
+kernel.kernel4d( gwxpy, [ x, y, z ], views, [ 1, 1, 1, 3 ], [ 12, 12, 12, 4 ], [ 12, 12, 12, 4 ], [ 12, 12, 12, 4 ], strategy, strategy, strategy, {} );
+
+var arr = ndarray2array( z.data, z.shape, z.strides, z.offset, z.order );
+// returns [ [ [ [ [ [ 3.0, 5.0 ], [ 7.0, 9.0 ] ], [ [ 11.0, 13.0 ], [ 15.0, 17.0 ] ], [ [ 19.0, 21.0 ], [ 23.0, 25.0 ] ] ] ] ] ]
+```
+
+The function has the following parameters:
+
+- **fcn**: function which will be applied to two one-dimensional input subarrays and should update a one-dimensional output subarray with results.
+- **arrays**: array containing two input ndarray [descriptors][@stdlib/ndarray/base/descriptor] and one output ndarray [descriptor][@stdlib/ndarray/base/descriptor], followed by any additional ndarray arguments.
+- **views**: initialized ndarray [descriptors][@stdlib/ndarray/base/descriptor] representing subarray views.
+- **shape**: loop dimensions. Should have four elements.
+- **stridesX**: loop dimension strides for the first input ndarray.
+- **stridesY**: loop dimension strides for the second input ndarray.
+- **stridesZ**: loop dimension strides for the output ndarray.
+- **strategyX**: strategy for marshaling data to and from a first input ndarray view.
+- **strategyY**: strategy for marshaling data to and from a second input ndarray view.
+- **strategyZ**: strategy for marshaling data to and from an output ndarray view.
+- **options**: function options which are passed through to `fcn`.
+
+
+
+#### kernel.kernel5d( fcn, arrays, views, shape, stridesX, strideY, strideZ, strategyX, strategyY, strategyZ, options )
+
+
+
+Applies a one-dimensional strided array function to a list of specified dimensions in two input ndarrays and assigns results to a provided output ndarray using loop blocking.
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 1, 1, 1, 3, 2, 2 ];
+var ysh = [ 1, 1, 1, 1, 3, 2, 2 ];
+var zsh = [ 1, 1, 1, 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 12, 12, 12, 4, 2, 1 ];
+var sy = [ 12, 12, 12, 12, 4, 2, 1 ];
+var sz = [ 12, 12, 12, 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Define an input strategy:
+function inputStrategy( x ) {
+ return {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 4 ],
+ 'strides': [ 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ };
+}
+
+// Define an output strategy:
+function outputStrategy( x ) {
+ return x;
+}
+
+var strategy = {
+ 'input': inputStrategy,
+ 'output': outputStrategy
+};
+
+// Apply strided function:
+kernel.kernel5d( gwxpy, [ x, y, z ], views, [ 1, 1, 1, 1, 3 ], [ 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 4 ], strategy, strategy, strategy, {} );
+
+var arr = ndarray2array( z.data, z.shape, z.strides, z.offset, z.order );
+// returns [ [ [ [ [ [ [ 3.0, 5.0 ], [ 7.0, 9.0 ] ], [ [ 11.0, 13.0 ], [ 15.0, 17.0 ] ], [ [ 19.0, 21.0 ], [ 23.0, 25.0 ] ] ] ] ] ] ]
+```
+
+The function has the following parameters:
+
+- **fcn**: function which will be applied to two one-dimensional input subarrays and should update a one-dimensional output subarray with results.
+- **arrays**: array containing two input ndarray [descriptors][@stdlib/ndarray/base/descriptor] and one output ndarray [descriptor][@stdlib/ndarray/base/descriptor], followed by any additional ndarray arguments.
+- **views**: initialized ndarray [descriptors][@stdlib/ndarray/base/descriptor] representing subarray views.
+- **shape**: loop dimensions. Should have five elements.
+- **stridesX**: loop dimension strides for the first input ndarray.
+- **stridesY**: loop dimension strides for the second input ndarray.
+- **stridesZ**: loop dimension strides for the output ndarray.
+- **strategyX**: strategy for marshaling data to and from a first input ndarray view.
+- **strategyY**: strategy for marshaling data to and from a second input ndarray view.
+- **strategyZ**: strategy for marshaling data to and from an output ndarray view.
+- **options**: function options which are passed through to `fcn`.
+
+
+
+#### kernel.kernel6d( fcn, arrays, views, shape, stridesX, strideY, strideZ, strategyX, strategyY, strategyZ, options )
+
+
+
+Applies a one-dimensional strided array function to a list of specified dimensions in two input ndarrays and assigns results to a provided output ndarray using loop blocking.
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 1, 1, 1, 1, 3, 2, 2 ];
+var ysh = [ 1, 1, 1, 1, 1, 3, 2, 2 ];
+var zsh = [ 1, 1, 1, 1, 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 12, 12, 12, 12, 4, 2, 1 ];
+var sy = [ 12, 12, 12, 12, 12, 4, 2, 1 ];
+var sz = [ 12, 12, 12, 12, 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Define an input strategy:
+function inputStrategy( x ) {
+ return {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 4 ],
+ 'strides': [ 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ };
+}
+
+// Define an output strategy:
+function outputStrategy( x ) {
+ return x;
+}
+
+var strategy = {
+ 'input': inputStrategy,
+ 'output': outputStrategy
+};
+
+// Apply strided function:
+kernel.kernel6d( gwxpy, [ x, y, z ], views, [ 1, 1, 1, 1, 1, 3 ], [ 12, 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 12, 4 ], strategy, strategy, strategy, {} );
+
+var arr = ndarray2array( z.data, z.shape, z.strides, z.offset, z.order );
+// returns [ [ [ [ [ [ [ [ 3.0, 5.0 ], [ 7.0, 9.0 ] ], [ [ 11.0, 13.0 ], [ 15.0, 17.0 ] ], [ [ 19.0, 21.0 ], [ 23.0, 25.0 ] ] ] ] ] ] ] ]
+```
+
+The function has the following parameters:
+
+- **fcn**: function which will be applied to two one-dimensional input subarrays and should update a one-dimensional output subarray with results.
+- **arrays**: array containing two input ndarray [descriptors][@stdlib/ndarray/base/descriptor] and one output ndarray [descriptor][@stdlib/ndarray/base/descriptor], followed by any additional ndarray arguments.
+- **views**: initialized ndarray [descriptors][@stdlib/ndarray/base/descriptor] representing subarray views.
+- **shape**: loop dimensions. Should have six elements.
+- **stridesX**: loop dimension strides for the first input ndarray.
+- **stridesY**: loop dimension strides for the second input ndarray.
+- **stridesZ**: loop dimension strides for the output ndarray.
+- **strategyX**: strategy for marshaling data to and from a first input ndarray view.
+- **strategyY**: strategy for marshaling data to and from a second input ndarray view.
+- **strategyZ**: strategy for marshaling data to and from an output ndarray view.
+- **options**: function options which are passed through to `fcn`.
+
+
+
+#### kernel.kernel7d( fcn, arrays, views, shape, stridesX, strideY, strideZ, strategyX, strategyY, strategyZ, options )
+
+
+
+Applies a one-dimensional strided array function to a list of specified dimensions in two input ndarrays and assigns results to a provided output ndarray using loop blocking.
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+var ysh = [ 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+var zsh = [ 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+var sy = [ 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+var sz = [ 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Define an input strategy:
+function inputStrategy( x ) {
+ return {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 4 ],
+ 'strides': [ 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ };
+}
+
+// Define an output strategy:
+function outputStrategy( x ) {
+ return x;
+}
+
+var strategy = {
+ 'input': inputStrategy,
+ 'output': outputStrategy
+};
+
+// Apply strided function:
+kernel.kernel7d( gwxpy, [ x, y, z ], views, [ 1, 1, 1, 1, 1, 1, 3 ], [ 12, 12, 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 12, 12, 4 ], strategy, strategy, strategy, {} );
+
+var arr = ndarray2array( z.data, z.shape, z.strides, z.offset, z.order );
+// returns [ [ [ [ [ [ [ [ [ 3.0, 5.0 ], [ 7.0, 9.0 ] ], [ [ 11.0, 13.0 ], [ 15.0, 17.0 ] ], [ [ 19.0, 21.0 ], [ 23.0, 25.0 ] ] ] ] ] ] ] ] ]
+```
+
+The function has the following parameters:
+
+- **fcn**: function which will be applied to two one-dimensional input subarrays and should update a one-dimensional output subarray with results.
+- **arrays**: array containing two input ndarray [descriptors][@stdlib/ndarray/base/descriptor] and one output ndarray [descriptor][@stdlib/ndarray/base/descriptor], followed by any additional ndarray arguments.
+- **views**: initialized ndarray [descriptors][@stdlib/ndarray/base/descriptor] representing subarray views.
+- **shape**: loop dimensions. Should have seven elements.
+- **stridesX**: loop dimension strides for the first input ndarray.
+- **stridesY**: loop dimension strides for the second input ndarray.
+- **stridesZ**: loop dimension strides for the output ndarray.
+- **strategyX**: strategy for marshaling data to and from a first input ndarray view.
+- **strategyY**: strategy for marshaling data to and from a second input ndarray view.
+- **strategyZ**: strategy for marshaling data to and from an output ndarray view.
+- **options**: function options which are passed through to `fcn`.
+
+
+
+#### kernel.kernel8d( fcn, arrays, views, shape, stridesX, strideY, strideZ, strategyX, strategyY, strategyZ, options )
+
+
+
+Applies a one-dimensional strided array function to a list of specified dimensions in two input ndarrays and assigns results to a provided output ndarray using loop blocking.
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+var ysh = [ 1, 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+var zsh = [ 1, 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+var sy = [ 12, 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+var sz = [ 12, 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Define an input strategy:
+function inputStrategy( x ) {
+ return {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 4 ],
+ 'strides': [ 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ };
+}
+
+// Define an output strategy:
+function outputStrategy( x ) {
+ return x;
+}
+
+var strategy = {
+ 'input': inputStrategy,
+ 'output': outputStrategy
+};
+
+// Apply strided function:
+kernel.kernel8d( gwxpy, [ x, y, z ], views, [ 1, 1, 1, 1, 1, 1, 1, 3 ], [ 12, 12, 12, 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 12, 12, 12, 4 ], strategy, strategy, strategy, {} );
+
+var arr = ndarray2array( z.data, z.shape, z.strides, z.offset, z.order );
+// returns [ [ [ [ [ [ [ [ [ [ 3.0, 5.0 ], [ 7.0, 9.0 ] ], [ [ 11.0, 13.0 ], [ 15.0, 17.0 ] ], [ [ 19.0, 21.0 ], [ 23.0, 25.0 ] ] ] ] ] ] ] ] ] ]
+```
+
+The function has the following parameters:
+
+- **fcn**: function which will be applied to two one-dimensional input subarrays and should update a one-dimensional output subarray with results.
+- **arrays**: array containing two input ndarray [descriptors][@stdlib/ndarray/base/descriptor] and one output ndarray [descriptor][@stdlib/ndarray/base/descriptor], followed by any additional ndarray arguments.
+- **views**: initialized ndarray [descriptors][@stdlib/ndarray/base/descriptor] representing subarray views.
+- **shape**: loop dimensions. Should have eight elements.
+- **stridesX**: loop dimension strides for the first input ndarray.
+- **stridesY**: loop dimension strides for the second input ndarray.
+- **stridesZ**: loop dimension strides for the output ndarray.
+- **strategyX**: strategy for marshaling data to and from a first input ndarray view.
+- **strategyY**: strategy for marshaling data to and from a second input ndarray view.
+- **strategyZ**: strategy for marshaling data to and from an output ndarray view.
+- **options**: function options which are passed through to `fcn`.
+
+
+
+#### kernel.kernel9d( fcn, arrays, views, shape, stridesX, strideY, strideZ, strategyX, strategyY, strategyZ, options )
+
+
+
+Applies a one-dimensional strided array function to a list of specified dimensions in two input ndarrays and assigns results to a provided output ndarray using loop blocking.
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+var ysh = [ 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+var zsh = [ 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 12, 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+var sy = [ 12, 12, 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+var sz = [ 12, 12, 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Define an input strategy:
+function inputStrategy( x ) {
+ return {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 4 ],
+ 'strides': [ 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ };
+}
+
+// Define an output strategy:
+function outputStrategy( x ) {
+ return x;
+}
+
+var strategy = {
+ 'input': inputStrategy,
+ 'output': outputStrategy
+};
+
+// Apply strided function:
+kernel.kernel9d( gwxpy, [ x, y, z ], views, [ 1, 1, 1, 1, 1, 1, 1, 1, 3 ], [ 12, 12, 12, 12, 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 12, 12, 12, 12, 4 ], strategy, strategy, strategy, {} );
+
+var arr = ndarray2array( z.data, z.shape, z.strides, z.offset, z.order );
+// returns [ [ [ [ [ [ [ [ [ [ [ 3.0, 5.0 ], [ 7.0, 9.0 ] ], [ [ 11.0, 13.0 ], [ 15.0, 17.0 ] ], [ [ 19.0, 21.0 ], [ 23.0, 25.0 ] ] ] ] ] ] ] ] ] ] ]
+```
+
+The function has the following parameters:
+
+- **fcn**: function which will be applied to two one-dimensional input subarrays and should update a one-dimensional output subarray with results.
+- **arrays**: array containing two input ndarray [descriptors][@stdlib/ndarray/base/descriptor] and one output ndarray [descriptor][@stdlib/ndarray/base/descriptor], followed by any additional ndarray arguments.
+- **views**: initialized ndarray [descriptors][@stdlib/ndarray/base/descriptor] representing subarray views.
+- **shape**: loop dimensions. Should have nine elements.
+- **stridesX**: loop dimension strides for the first input ndarray.
+- **stridesY**: loop dimension strides for the second input ndarray.
+- **stridesZ**: loop dimension strides for the output ndarray.
+- **strategyX**: strategy for marshaling data to and from a first input ndarray view.
+- **strategyY**: strategy for marshaling data to and from a second input ndarray view.
+- **strategyZ**: strategy for marshaling data to and from an output ndarray view.
+- **options**: function options which are passed through to `fcn`.
+
+
+
+#### kernel.kernel10d( fcn, arrays, views, shape, stridesX, strideY, strideZ, strategyX, strategyY, strategyZ, options )
+
+
+
+Applies a one-dimensional strided array function to a list of specified dimensions in two input ndarrays and assigns results to a provided output ndarray using loop blocking.
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+var ysh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+var zsh = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 12, 12, 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+var sy = [ 12, 12, 12, 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+var sz = [ 12, 12, 12, 12, 12, 12, 12, 12, 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Define an input strategy:
+function inputStrategy( x ) {
+ return {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 4 ],
+ 'strides': [ 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ };
+}
+
+// Define an output strategy:
+function outputStrategy( x ) {
+ return x;
+}
+
+var strategy = {
+ 'input': inputStrategy,
+ 'output': outputStrategy
+};
+
+// Apply strided function:
+kernel.kernel10d( gwxpy, [ x, y, z ], views, [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3 ], [ 12, 12, 12, 12, 12, 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 12, 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 12, 12, 12, 12, 12, 4 ], strategy, strategy, strategy, {} );
+
+var arr = ndarray2array( z.data, z.shape, z.strides, z.offset, z.order );
+// returns [ [ [ [ [ [ [ [ [ [ [ [ 3.0, 5.0 ], [ 7.0, 9.0 ] ], [ [ 11.0, 13.0 ], [ 15.0, 17.0 ] ], [ [ 19.0, 21.0 ], [ 23.0, 25.0 ] ] ] ] ] ] ] ] ] ] ] ]
+```
+
+The function has the following parameters:
+
+- **fcn**: function which will be applied to two one-dimensional input subarrays and should update a one-dimensional output subarray with results.
+- **arrays**: array containing two input ndarray [descriptors][@stdlib/ndarray/base/descriptor] and one output ndarray [descriptor][@stdlib/ndarray/base/descriptor], followed by any additional ndarray arguments.
+- **views**: initialized ndarray [descriptors][@stdlib/ndarray/base/descriptor] representing subarray views.
+- **shape**: loop dimensions. Should have ten elements.
+- **stridesX**: loop dimension strides for the first input ndarray.
+- **stridesY**: loop dimension strides for the second input ndarray.
+- **stridesZ**: loop dimension strides for the output ndarray.
+- **strategyX**: strategy for marshaling data to and from a first input ndarray view.
+- **strategyY**: strategy for marshaling data to and from a second input ndarray view.
+- **strategyZ**: strategy for marshaling data to and from an output ndarray view.
+- **options**: function options which are passed through to `fcn`.
+
+
+
+
+
+
+
+## Notes
+
+- The strided array function is expected to have the following signature:
+
+ ```text
+ fcn( arrays[, options] )
+ ```
+
+ where
+
+ - **arrays**: array containing a one-dimensional subarray of the first input ndarray, a one-dimensional subarray of the second input ndarray, a one-dimensional subarray of the output ndarray, and any additional ndarray arguments as subarrays.
+ - **options**: function options (_optional_).
+
+- For very high-dimensional ndarrays which are non-contiguous, one should consider copying the underlying data to contiguous memory before performing an operation in order to achieve better performance.
+
+
+
+
+
+
+
+## Examples
+
+
+
+
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
+var gwxpy = require( '@stdlib/blas/ext/base/ndarray/gwxpy' );
+var strategy = require( '@stdlib/ndarray/base/kernels/generic/unary-strided1d/strategy' );
+var kernel = require( '@stdlib/ndarray/base/kernels/generic/binary-strided1d/blocked' );
+
+// Create data buffers:
+var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
+var ybuf = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0 ] );
+var zbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] );
+
+// Define the array shapes:
+var xsh = [ 1, 1, 1, 1, 3, 2, 2 ];
+var ysh = [ 1, 1, 1, 1, 3, 2, 2 ];
+var zsh = [ 1, 1, 1, 1, 3, 2, 2 ];
+
+// Define the array strides:
+var sx = [ 12, 12, 12, 12, 4, 2, 1 ];
+var sy = [ 12, 12, 12, 12, 4, 2, 1 ];
+var sz = [ 12, 12, 12, 12, 4, 2, 1 ];
+
+// Define the index offsets:
+var ox = 0;
+var oy = 0;
+var oz = 0;
+
+// Create the input ndarray descriptors:
+var x = {
+ 'dtype': 'float64',
+ 'data': xbuf,
+ 'shape': xsh,
+ 'strides': sx,
+ 'offset': ox,
+ 'order': 'row-major'
+};
+
+var y = {
+ 'dtype': 'float64',
+ 'data': ybuf,
+ 'shape': ysh,
+ 'strides': sy,
+ 'offset': oy,
+ 'order': 'row-major'
+};
+
+// Create an output ndarray descriptor:
+var z = {
+ 'dtype': 'float64',
+ 'data': zbuf,
+ 'shape': zsh,
+ 'strides': sz,
+ 'offset': oz,
+ 'order': 'row-major'
+};
+
+// Initialize ndarray descriptors representing subarray views:
+var views = [
+ {
+ 'dtype': x.dtype,
+ 'data': x.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': x.offset,
+ 'order': x.order
+ },
+ {
+ 'dtype': y.dtype,
+ 'data': y.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': y.offset,
+ 'order': y.order
+ },
+ {
+ 'dtype': z.dtype,
+ 'data': z.data,
+ 'shape': [ 2, 2 ],
+ 'strides': [ 2, 1 ],
+ 'offset': z.offset,
+ 'order': z.order
+ }
+];
+
+// Resolve input/output strategies when iterating over subarray views:
+var strategyX = strategy( views[ 0 ] );
+var strategyY = strategy( views[ 1 ] );
+var strategyZ = strategy( views[ 2 ] );
+
+// Resolve a kernel:
+var f = kernel( 5 );
+
+// Apply strided function:
+f( gwxpy, [ x, y, z ], views, [ 1, 1, 1, 1, 3 ], [ 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 4 ], [ 12, 12, 12, 12, 4 ], strategyX, strategyY, strategyZ, {} );
+
+console.log( ndarray2array( x.data, x.shape, x.strides, x.offset, x.order ) );
+console.log( ndarray2array( y.data, y.shape, y.strides, y.offset, y.order ) );
+console.log( ndarray2array( z.data, z.shape, z.strides, z.offset, z.order ) );
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+[@stdlib/ndarray/base/descriptor]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/ndarray/base/descriptor
+
+
+
+
diff --git a/lib/node_modules/@stdlib/ndarray/base/kernels/generic/binary-strided1d/blocked/docs/repl.txt b/lib/node_modules/@stdlib/ndarray/base/kernels/generic/binary-strided1d/blocked/docs/repl.txt
new file mode 100644
index 000000000000..e14e55d08a8d
--- /dev/null
+++ b/lib/node_modules/@stdlib/ndarray/base/kernels/generic/binary-strided1d/blocked/docs/repl.txt
@@ -0,0 +1,424 @@
+
+{{alias}}( ndims )
+ Returns a kernel for applying a one-dimensional strided array function to
+ two input ndarrays and assigning results to an output ndarray using loop
+ blocking.
+
+ The returned function has the following parameters:
+
+ - fcn: function which will be applied to two one-dimensional input
+ subarrays and should update a one-dimensional output subarray with results.
+ - arrays: array containing two input ndarray descriptors and one output
+ ndarray descriptor, followed by any additional ndarray arguments.
+ - views: initialized ndarray descriptors representing subarray views.
+ - shape: loop dimensions.
+ - stridesX: loop dimension strides for the first input ndarray.
+ - stridesY: loop dimension strides for the second input ndarray.
+ - stridesZ: loop dimension strides for the output ndarray.
+ - strategyX: strategy for marshaling data to and from a first input ndarray
+ view.
+ - strategyY: strategy for marshaling data to and from a second input ndarray
+ view.
+ - strategyZ: strategy for marshaling data to and from an output ndarray
+ view.
+ - options: function options which are passed through to `fcn`.
+
+ If `ndims < 2` or greater than the maximum supported number of loop
+ dimensions, the function returns `null`.
+
+ Parameters
+ ----------
+ ndims: integer
+ Number of loop dimensions.
+
+ Returns
+ -------
+ fcn: Function|null
+ Kernel function.
+
+ Examples
+ --------
+ > var f = {{alias}}( 2 )
+
+
+
+{{alias}}.kernel2d( fcn, arr, views, sh, sx, sy, sz, stx, sty, stz, opts )
+ Applies a one-dimensional strided array function to a list of specified
+ dimensions in two input ndarrays and assigns results to a provided output
+ ndarray via loop blocking.
+
+ Parameters
+ ----------
+ fcn: Function
+ Wrapper for a one-dimensional strided array function.
+
+ arr: Array