Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ bench( format( '%s::1d,base', pkg ), function benchmark( b ) {
values = [
baseEmpty( 'float64', [ 2 ], 'row-major' ),
baseEmpty( 'float32', [ 2 ], 'row-major' ),
baseEmpty( 'float16', [ 2 ], 'row-major' ),
baseEmpty( 'int32', [ 2 ], 'row-major' ),
baseEmpty( 'complex128', [ 2 ], 'row-major' ),
baseEmpty( 'generic', [ 2 ], 'row-major' )
Expand Down Expand Up @@ -72,6 +73,7 @@ bench( format( '%s::1d,non-base', pkg ), function benchmark( b ) {
values = [
empty( [ 2 ], { 'dtype': 'float64' } ),
empty( [ 2 ], { 'dtype': 'float32' } ),
empty( [ 2 ], { 'dtype': 'float16' } ),
empty( [ 2 ], { 'dtype': 'int32' } ),
empty( [ 2 ], { 'dtype': 'complex128' } ),
empty( [ 2 ], { 'dtype': 'generic' } )
Expand Down Expand Up @@ -106,6 +108,7 @@ bench( format( '%s::1d,base,out-of-bounds', pkg ), function benchmark( b ) {
values = [
baseEmpty( 'float64', [ 2 ], 'row-major' ),
baseEmpty( 'float32', [ 2 ], 'row-major' ),
baseEmpty( 'float16', [ 2 ], 'row-major' ),
baseEmpty( 'int32', [ 2 ], 'row-major' ),
baseEmpty( 'complex128', [ 2 ], 'row-major' ),
baseEmpty( 'generic', [ 2 ], 'row-major' )
Expand Down Expand Up @@ -142,6 +145,7 @@ bench( format( '%s::1d,non-base,out-of-bounds', pkg ), function benchmark( b ) {
values = [
empty( [ 2 ], { 'dtype': 'float64' } ),
empty( [ 2 ], { 'dtype': 'float32' } ),
empty( [ 2 ], { 'dtype': 'float16' } ),
empty( [ 2 ], { 'dtype': 'int32' } ),
empty( [ 2 ], { 'dtype': 'complex128' } ),
empty( [ 2 ], { 'dtype': 'generic' } )
Expand Down Expand Up @@ -178,6 +182,7 @@ bench( format( '%s::2d,base', pkg ), function benchmark( b ) {
values = [
baseEmpty( 'float64', [ 2, 2 ], 'row-major' ),
baseEmpty( 'float32', [ 2, 2 ], 'row-major' ),
baseEmpty( 'float16', [ 2, 2 ], 'row-major' ),
baseEmpty( 'int32', [ 2, 2 ], 'row-major' ),
baseEmpty( 'complex128', [ 2, 2 ], 'row-major' ),
baseEmpty( 'generic', [ 2, 2 ], 'row-major' )
Expand Down Expand Up @@ -210,6 +215,7 @@ bench( format( '%s::2d,non-base', pkg ), function benchmark( b ) {
values = [
empty( [ 2, 2 ], { 'dtype': 'float64' } ),
empty( [ 2, 2 ], { 'dtype': 'float32' } ),
empty( [ 2, 2 ], { 'dtype': 'float16' } ),
empty( [ 2, 2 ], { 'dtype': 'int32' } ),
empty( [ 2, 2 ], { 'dtype': 'complex128' } ),
empty( [ 2, 2 ], { 'dtype': 'generic' } )
Expand Down Expand Up @@ -244,6 +250,7 @@ bench( format( '%s::2d,base,out-of-bounds', pkg ), function benchmark( b ) {
values = [
baseEmpty( 'float64', [ 2, 2 ], 'row-major' ),
baseEmpty( 'float32', [ 2, 2 ], 'row-major' ),
baseEmpty( 'float16', [ 2, 2 ], 'row-major' ),
baseEmpty( 'int32', [ 2, 2 ], 'row-major' ),
baseEmpty( 'complex128', [ 2, 2 ], 'row-major' ),
baseEmpty( 'generic', [ 2, 2 ], 'row-major' )
Expand Down Expand Up @@ -280,6 +287,7 @@ bench( format( '%s::2d,non-base,out-of-bounds', pkg ), function benchmark( b ) {
values = [
empty( [ 2, 2 ], { 'dtype': 'float64' } ),
empty( [ 2, 2 ], { 'dtype': 'float32' } ),
empty( [ 2, 2 ], { 'dtype': 'float16' } ),
empty( [ 2, 2 ], { 'dtype': 'int32' } ),
empty( [ 2, 2 ], { 'dtype': 'complex128' } ),
empty( [ 2, 2 ], { 'dtype': 'generic' } )
Expand Down Expand Up @@ -316,6 +324,7 @@ bench( format( '%s::3d,base', pkg ), function benchmark( b ) {
values = [
baseEmpty( 'float64', [ 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float32', [ 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float16', [ 2, 2, 2 ], 'row-major' ),
baseEmpty( 'int32', [ 2, 2, 2 ], 'row-major' ),
baseEmpty( 'complex128', [ 2, 2, 2 ], 'row-major' ),
baseEmpty( 'generic', [ 2, 2, 2 ], 'row-major' )
Expand Down Expand Up @@ -348,6 +357,7 @@ bench( format( '%s::3d,non-base', pkg ), function benchmark( b ) {
values = [
empty( [ 2, 2, 2 ], { 'dtype': 'float64' } ),
empty( [ 2, 2, 2 ], { 'dtype': 'float32' } ),
empty( [ 2, 2, 2 ], { 'dtype': 'float16' } ),
empty( [ 2, 2, 2 ], { 'dtype': 'int32' } ),
empty( [ 2, 2, 2 ], { 'dtype': 'complex128' } ),
empty( [ 2, 2, 2 ], { 'dtype': 'generic' } )
Expand Down Expand Up @@ -382,6 +392,7 @@ bench( format( '%s::3d,base,out-of-bounds', pkg ), function benchmark( b ) {
values = [
baseEmpty( 'float64', [ 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float32', [ 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float16', [ 2, 2, 2 ], 'row-major' ),
baseEmpty( 'int32', [ 2, 2, 2 ], 'row-major' ),
baseEmpty( 'complex128', [ 2, 2, 2 ], 'row-major' ),
baseEmpty( 'generic', [ 2, 2, 2 ], 'row-major' )
Expand Down Expand Up @@ -418,6 +429,7 @@ bench( format( '%s::3d,non-base,out-of-bounds', pkg ), function benchmark( b ) {
values = [
empty( [ 2, 2, 2 ], { 'dtype': 'float64' } ),
empty( [ 2, 2, 2 ], { 'dtype': 'float32' } ),
empty( [ 2, 2, 2 ], { 'dtype': 'float16' } ),
empty( [ 2, 2, 2 ], { 'dtype': 'int32' } ),
empty( [ 2, 2, 2 ], { 'dtype': 'complex128' } ),
empty( [ 2, 2, 2 ], { 'dtype': 'generic' } )
Expand Down Expand Up @@ -454,6 +466,7 @@ bench( format( '%s::4d,base', pkg ), function benchmark( b ) {
values = [
baseEmpty( 'float64', [ 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float32', [ 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float16', [ 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'int32', [ 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'complex128', [ 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'generic', [ 2, 2, 2, 2 ], 'row-major' )
Expand Down Expand Up @@ -486,6 +499,7 @@ bench( format( '%s::4d,non-base', pkg ), function benchmark( b ) {
values = [
empty( [ 2, 2, 2, 2 ], { 'dtype': 'float64' } ),
empty( [ 2, 2, 2, 2 ], { 'dtype': 'float32' } ),
empty( [ 2, 2, 2, 2 ], { 'dtype': 'float16' } ),
empty( [ 2, 2, 2, 2 ], { 'dtype': 'int32' } ),
empty( [ 2, 2, 2, 2 ], { 'dtype': 'complex128' } ),
empty( [ 2, 2, 2, 2 ], { 'dtype': 'generic' } )
Expand Down Expand Up @@ -520,6 +534,7 @@ bench( format( '%s::4d,base,out-of-bounds', pkg ), function benchmark( b ) {
values = [
baseEmpty( 'float64', [ 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float32', [ 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float16', [ 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'int32', [ 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'complex128', [ 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'generic', [ 2, 2, 2, 2 ], 'row-major' )
Expand Down Expand Up @@ -556,6 +571,7 @@ bench( format( '%s::4d,non-base,out-of-bounds', pkg ), function benchmark( b ) {
values = [
empty( [ 2, 2, 2, 2 ], { 'dtype': 'float64' } ),
empty( [ 2, 2, 2, 2 ], { 'dtype': 'float32' } ),
empty( [ 2, 2, 2, 2 ], { 'dtype': 'float16' } ),
empty( [ 2, 2, 2, 2 ], { 'dtype': 'int32' } ),
empty( [ 2, 2, 2, 2 ], { 'dtype': 'complex128' } ),
empty( [ 2, 2, 2, 2 ], { 'dtype': 'generic' } )
Expand Down Expand Up @@ -592,6 +608,7 @@ bench( format( '%s::5d,base', pkg ), function benchmark( b ) {
values = [
baseEmpty( 'float64', [ 2, 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float32', [ 2, 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float16', [ 2, 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'int32', [ 2, 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'complex128', [ 2, 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'generic', [ 2, 2, 2, 2, 2 ], 'row-major' )
Expand Down Expand Up @@ -624,6 +641,7 @@ bench( format( '%s::5d,non-base', pkg ), function benchmark( b ) {
values = [
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'float64' } ),
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'float32' } ),
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'float16' } ),
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'int32' } ),
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'complex128' } ),
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'generic' } )
Expand Down Expand Up @@ -658,6 +676,7 @@ bench( format( '%s::5d,base,out-of-bounds', pkg ), function benchmark( b ) {
values = [
baseEmpty( 'float64', [ 2, 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float32', [ 2, 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'float16', [ 2, 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'int32', [ 2, 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'complex128', [ 2, 2, 2, 2, 2 ], 'row-major' ),
baseEmpty( 'generic', [ 2, 2, 2, 2, 2 ], 'row-major' )
Expand Down Expand Up @@ -694,6 +713,7 @@ bench( format( '%s::5d,non-base,out-of-bounds', pkg ), function benchmark( b ) {
values = [
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'float64' } ),
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'float32' } ),
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'float16' } ),
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'int32' } ),
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'complex128' } ),
empty( [ 2, 2, 2, 2, 2 ], { 'dtype': 'generic' } )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

/// <reference types="@stdlib/types"/>

import { typedndarray, genericndarray, float64ndarray, float32ndarray, int32ndarray, int16ndarray, int8ndarray, uint32ndarray, uint16ndarray, uint8ndarray, uint8cndarray, complex128ndarray, complex64ndarray } from '@stdlib/types/ndarray';
import { typedndarray, genericndarray, float64ndarray, float32ndarray, float16ndarray, int32ndarray, int16ndarray, int8ndarray, uint32ndarray, uint16ndarray, uint8ndarray, uint8cndarray, complex128ndarray, complex64ndarray } from '@stdlib/types/ndarray';

/**
* Interface defining function options.
Expand Down Expand Up @@ -112,6 +112,46 @@ declare function sliceDimensionFrom( x: float64ndarray, dim: number, start: numb
*/
declare function sliceDimensionFrom( x: float32ndarray, dim: number, start: number, options?: Options ): float32ndarray;

/**
* Returns a read-only shifted view of an input ndarray along a specified dimension.
*
* @param x - input array
* @param dim - index of dimension to slice
* @param start - starting index (inclusive)
* @param options - function options
* @param options.strict - boolean indicating whether to enforce strict bounds checking
* @returns output array
*
* @example
* var typedarray = require( '@stdlib/array/typed' );
* var ndarray = require( '@stdlib/ndarray/ctor' );
* var ndarray2array = require( '@stdlib/ndarray/to-array' );
*
* var buffer = typedarray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ], 'float16' );
* var shape = [ 3, 2 ];
* var strides = [ 2, 1 ];
* var offset = 0;
*
* var x = ndarray( 'float16', buffer, shape, strides, offset, 'row-major' );
* // returns <ndarray>
*
* var sh = x.shape;
* // returns [ 3, 2 ]
*
* var arr = ndarray2array( x );
* // returns [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ]
*
* var y = sliceDimensionFrom( x, 0, 1 );
* // returns <ndarray>
*
* sh = y.shape;
* // returns [ 2, 2 ]
*
* arr = ndarray2array( y );
* // returns [ [ 3.0, 4.0 ], [ 5.0, 6.0 ] ]
*/
declare function sliceDimensionFrom( x: float16ndarray, dim: number, start: number, options?: Options ): float16ndarray;

/**
* Returns a read-only shifted view of an input ndarray along a specified dimension.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import sliceDimensionFrom = require( './index' );

sliceDimensionFrom( empty( 'float64', sh, order ), 1, s ); // $ExpectType float64ndarray
sliceDimensionFrom( empty( 'float32', sh, order ), 1, s ); // $ExpectType float32ndarray
sliceDimensionFrom( empty( 'float16', sh, order ), 1, s ); // $ExpectType float16ndarray
sliceDimensionFrom( empty( 'complex128', sh, order ), 1, s ); // $ExpectType complex128ndarray
sliceDimensionFrom( empty( 'complex64', sh, order ), 1, s ); // $ExpectType complex64ndarray
sliceDimensionFrom( empty( 'int32', sh, order ), 1, s ); // $ExpectType int32ndarray
Expand All @@ -42,6 +43,7 @@ import sliceDimensionFrom = require( './index' );

sliceDimensionFrom( empty( 'float64', sh, order ), 1, s, { 'strict': false } ); // $ExpectType float64ndarray
sliceDimensionFrom( empty( 'float32', sh, order ), 1, s, { 'strict': false } ); // $ExpectType float32ndarray
sliceDimensionFrom( empty( 'float16', sh, order ), 1, s, { 'strict': false } ); // $ExpectType float16ndarray
sliceDimensionFrom( empty( 'complex128', sh, order ), 1, s, { 'strict': false } ); // $ExpectType complex128ndarray
sliceDimensionFrom( empty( 'complex64', sh, order ), 1, s, { 'strict': false } ); // $ExpectType complex64ndarray
sliceDimensionFrom( empty( 'int32', sh, order ), 1, s, { 'strict': false } ); // $ExpectType int32ndarray
Expand All @@ -54,6 +56,7 @@ import sliceDimensionFrom = require( './index' );

sliceDimensionFrom( empty( 'float64', sh, order ), 1, s, { 'strict': true } ); // $ExpectType float64ndarray
sliceDimensionFrom( empty( 'float32', sh, order ), 1, s, { 'strict': true } ); // $ExpectType float32ndarray
sliceDimensionFrom( empty( 'float16', sh, order ), 1, s, { 'strict': true } ); // $ExpectType float16ndarray
sliceDimensionFrom( empty( 'complex128', sh, order ), 1, s, { 'strict': true } ); // $ExpectType complex128ndarray
sliceDimensionFrom( empty( 'complex64', sh, order ), 1, s, { 'strict': true } ); // $ExpectType complex64ndarray
sliceDimensionFrom( empty( 'int32', sh, order ), 1, s, { 'strict': true } ); // $ExpectType int32ndarray
Expand Down Expand Up @@ -126,13 +129,13 @@ import sliceDimensionFrom = require( './index' );
sliceDimensionFrom( x, 1, ( x: number ): number => x, 1 ); // $ExpectError

sliceDimensionFrom( x, 1, '5', {} ); // $ExpectError
sliceDimensionFrom( x, 1, false, {}; // $ExpectError
sliceDimensionFrom( x, 1, true, {}; // $ExpectError
sliceDimensionFrom( x, 1, null, {}; // $ExpectError
sliceDimensionFrom( x, 1, undefined, {}; // $ExpectError
sliceDimensionFrom( x, 1, [ '5' ], {}; // $ExpectError
sliceDimensionFrom( x, 1, {}, {}; // $ExpectError
sliceDimensionFrom( x, 1, ( x: number ): number => x, {}; // $ExpectError
sliceDimensionFrom( x, 1, false, {} ); // $ExpectError
sliceDimensionFrom( x, 1, true, {} ); // $ExpectError
sliceDimensionFrom( x, 1, null, {} ); // $ExpectError
sliceDimensionFrom( x, 1, undefined, {} ); // $ExpectError
sliceDimensionFrom( x, 1, [ '5' ], {} ); // $ExpectError
sliceDimensionFrom( x, 1, {}, {} ); // $ExpectError
sliceDimensionFrom( x, 1, ( x: number ): number => x, {} ); // $ExpectError
}

// The compiler throws an error if the function is provided a fourth argument which is not an object...
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -493,6 +493,7 @@ tape( 'in non-strict mode, the function returns an empty array when a starting i
values = [
zeros( [ 1 ], { 'dtype': 'float64' } ),
zeros( [ 1, 1 ], { 'dtype': 'float32' } ),
zeros( [ 1, 1 ], { 'dtype': 'float16' } ),
zeros( [ 1, 1, 1 ], { 'dtype': 'int32' } ),
zeros( [ 1, 1, 1, 1 ], { 'dtype': 'uint32' } ),
zeros( [ 1, 1, 1, 1, 1 ], { 'dtype': 'complex128' } )
Expand All @@ -505,6 +506,7 @@ tape( 'in non-strict mode, the function returns an empty array when a starting i
20,
20,
20,
20,
10
];
for ( i = 0; i < values.length; i++ ) {
Expand All @@ -530,6 +532,7 @@ tape( 'in non-strict mode, the function returns an empty array when a starting i
values = [
zeros( [ 1 ], { 'dtype': 'float64' } ),
zeros( [ 1, 1 ], { 'dtype': 'float32' } ),
zeros( [ 1, 1 ], { 'dtype': 'float16' } ),
zeros( [ 1, 1, 1 ], { 'dtype': 'int32' } ),
zeros( [ 1, 1, 1, 1 ], { 'dtype': 'uint32' } ),
zeros( [ 1, 1, 1, 1, 1 ], { 'dtype': 'complex128' } )
Expand All @@ -540,6 +543,7 @@ tape( 'in non-strict mode, the function returns an empty array when a starting i
dim = [
0,
1,
1,
0,
1,
4
Expand All @@ -550,6 +554,7 @@ tape( 'in non-strict mode, the function returns an empty array when a starting i
1,
1,
1,
1,
1
];
for ( i = 0; i < values.length; i++ ) {
Expand Down
Loading