8000 Auto-generated commit · stdlib-js/ndarray-base-strides@f22b39c · GitHub
[go: up one dir, main page]

Skip to content

Commit f22b39c

Browse files
committed
Auto-generated commit
1 parent e9d7133 commit f22b39c

File tree

7 files changed

+302
-10
lines changed

7 files changed

+302
-10
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ var zeros = require( '@stdlib/ndarray-zeros' );
8181
var x = zeros( [ 3, 2, 3 ] );
8282
// returns <ndarray>
8383

84-
var sh = strides( x, false );
84+
var st = strides( x, false );
8585
// returns [ 6, 3, 1 ]
8686
```
8787

@@ -93,10 +93,10 @@ var zeros = require( '@stdlib/ndarray-zeros' );
9393
var x = zeros( [ 3, 2, 3 ] );
9494
// returns <ndarray>
9595

96-
var sh = strides( x, true );
96+
var st = strides( x, true );
9797
// returns [ 6, 3, 1 ]
9898

99-
var bool = ( x.strides === sh );
99+
var bool = ( x.strides === st );
100100
// returns false
101101
```
102102

dist/index.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/main.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,15 @@
2020

2121
// MODULES //
2222

23+
var shape2strides = require( '@stdlib/ndarray-base-shape2strides' );
2324
var copyIndexed = require( '@stdlib/array-base-copy-indexed' );
2425

2526

27+
// VARIABLES //
28+
29+
var ROW_MAJOR = 'row-major';
30+
31+
2632
// MAIN //
2733

2834
/**
@@ -39,7 +45,22 @@ var copyIndexed = require( '@stdlib/array-base-copy-indexed' );
3945
* // returns [ 9, 3, 1 ]
4046
*/
4147
function strides( x, copy ) {
42-
var st = x.strides;
48+
var ord;
49+
var sh;
50+
var st;
51+
52+
st= x.strides;
53+
if ( typeof st !== 'object' || st === null ) {
54+
sh = x.shape;
55+
if ( sh.length === 0 ) {
56+
return [ 0 ];
57+
}
58+
ord = x.order;
59+
if ( typeof ord !== 'string' ) {
60+
ord = ROW_MAJOR;
61+
}
62+
return shape2strides( sh, ord );
63+
}
4364
if ( copy ) {
4465
return copyIndexed( st );
4566
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
},
3939
"dependencies": {
4040
"@stdlib/array-base-copy-indexed": "^0.1.0",
41+
"@stdlib/ndarray-base-shape2strides": "^0.1.1",
4142
"@stdlib/types": "^0.1.0"
4243
},
4344
"devDependencies": {

test/dist/test.js

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ tape( 'if provided a zero-dimensional ndarray, the function returns a single-ele
3838
t.end();
3939
});
4040

41+
tape( 'if provided a zero-dimensional minimal ndarray-like object, the function returns a single-element strides array', function test( t ) {
42+
var x = {
43+
'shape': []
44+
};
45+
t.deepEqual( strides( x, false ), [ 0 ], 'returns expected value' );
46+
t.end();
47+
});
48+
4149
tape( 'the function returns the strides of an ndarray', function test( t ) {
4250
var expected;
4351
var values;
@@ -106,6 +114,133 @@ tape( 'the function accepts minimal ndarray-like objects (strides)', function te
106114
t.end();
107115
});
108116

117+
tape( 'the function accepts minimal ndarray-like objects (shape)', function test( t ) {
118+
var expected;
119+
var values;
120+
var out;
121+
var i;
122+
123+
values = [
124+
{
125+
'shape': [ 3, 3, 3 ]
126+
},
127+
{
128+
'shape': [ 1, 1 ]
129+
},
130+
{
131+
'shape': [ 3, 3, 0, 3 ]
132+
},
133+
{
134+
'shape': [ 1, 2, 3, 4 ]
135+
},
136+
{
137+
'shape': [ 5 ]
138+
}
139+
];
140+
141+
expected = [
142+
[ 9, 3, 1 ],
143+
[ 1, 1 ],
144+
[ 0, 0, 3, 1 ],
145+
[ 24, 12, 4, 1 ],
146+
[ 1 ]
147+
];
148+
149+
for ( i = 0; i < values.length; i++ ) {
150+
out = strides( values[ i ], false );
151+
t.deepEqual( out, expected[ i ], 'returns expected value for shape '+values[ i ].shape.join( 'x' ) );
152+
}
153+
t.end();
154+
});
155+
156+
tape( 'the function accepts minimal ndarray-like objects (shape, order=row-major)', function test( t ) {
157+
var expected;
158+
var values;
159+
var out;
160+
var i;
161+
162+
values = [
163+
{
164+
'shape': [ 3, 3, 3 ],
165+
'order': 'row-major'
166+
},
167+
{
168+
'shape': [ 1, 1 ],
169+
'order': 'row-major'
170+
},
171+
{
172+
'shape': [ 3, 3, 0, 3 ],
173+
'order': 'row-major'
174+
},
175+
{
176+
'shape': [ 1, 2, 3, 4 ],
177+
'order': 'row-major'
178+
},
179+
{
180+
'shape': [ 5 ],
181+
'order': 'row-major'
182+
}
183+
];
184+
185+
expected = [
186+
[ 9, 3, 1 ],
187+
[ 1, 1 ],
188+
[ 0, 0, 3, 1 ],
189+
[ 24, 12, 4, 1 ],
190+
[ 1 ]
191+
];
192+
193+
for ( i = 0; i < values.length; i++ ) {
194+
out = strides( values[ i ], false );
195+
t.deepEqual( out, expected[ i ], 'returns expected value for shape '+values[ i ].shape.join( 'x' ) );
196+
}
197+
t.end();
198+
});
199+
200+
tape( 'the function accepts minimal ndarray-like objects (shape, order=column-major)', function test( t ) {
201+
var expected;
202+
var values;
203+
var out;
204+
var i;
205+
206+
values = [
207+
{
208+
'shape': [ 3, 3, 3 ],
209+
'order': 'column-major'
210+
},
211+
{
212+
'shape': [ 1, 1 ],
213+
'order': 'column-major'
214+
},
215+
{
216+
'shape': [ 3, 3, 0, 3 ],
217+
'order': 'column-major'
218+
},
219+
{
220+
'shape': [ 1, 2, 3, 4 ],
221+
'order': 'column-major'
222+
},
223+
{
224+
'shape': [ 5 ],
225+
'order': 'column-major'
226+
}
227+
];
228+
229+
expected = [
230+
[ 1, 3, 9 ],
231+
[ 1, 1 ],
232+
[ 1, 3, 9, 0 ],
233+
[ 1, 1, 2, 6 ],
234+
[ 1 ]
235+
];
236+
237+
for ( i = 0; i < values.length; i++ ) {
238+
out = strides( values[ i ], false );
239+
t.deepEqual( out, expected[ i ], 'returns expected value for shape '+values[ i ].shape.join( 'x' ) );
240+
}
241+
t.end();
242+
});
243+
109244
tape( 'the function supports returning a guaranteed copy of an input ndarray strides', function test( t ) {
110245
var expected;
111246
var values;

test/test.js

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ tape( 'if provided a zero-dimensional ndarray, the function returns a single-ele
3838
t.end();
3939
});
4040

41+
tape( 'if provided a zero-dimensional minimal ndarray-like object, the function returns a single-element strides array', function test( t ) {
42+
var x = {
43+
'shape': []
44+
};
45+
t.deepEqual( strides( x, false ), [ 0 ], 'returns expected value' );
46+
t.end();
47+
});
48+
4149
tape( 'the function returns the strides of an ndarray', function test( t ) {
4250
var expected;
4351
var values;
@@ -106,6 +114,133 @@ tape( 'the function accepts minimal ndarray-like objects (strides)', function te
106114
t.end();
107115
});
108116

117+
tape( 'the function accepts minimal ndarray-like objects (shape)', function test( t ) {
118+
var expected;
119+
var values;
120+
var out;
121+
var i;
122+
123+
values = [
124+
{
125+
'shape': [ 3, 3, 3 ]
126+
},
127+
{
128+
'shape': [ 1, 1 ]
129+
},
130+
{
131+
'shape': [ 3, 3, 0, 3 ]
132+
},
133+
{
134+
'shape': [ 1, 2, 3, 4 ]
135+
},
136+
{
137+
'shape': [ 5 ]
138+
}
139+
];
140+
141+
expected = [
142+
[ 9, 3, 1 ],
143+
[ 1, 1 ],
144+
[ 0, 0, 3, 1 ],
145+
[ 24, 12, 4, 1 ],
146+
[ 1 ]
147+
];
148+
149+
for ( i = 0; i < values.length; i++ ) {
150+
out = strides( values[ i ], false );
151+
t.deepEqual( out, expected[ i ], 'returns expected value for shape '+values[ i ].shape.join( 'x' ) );
152+
}
153+
t.end();
154+
});
155+
156+
tape( 'the function accepts minimal ndarray-like objects (shape, order=row-major)', function test( t ) {
157+
var expected;
158+
var values;
159+
var out;
160+
var i;
161+
162+
values = [
163+
{
164+
'shape': [ 3, 3, 3 ],
165+
'order': 'row-major'
166+
},
167+
{
168+
'shape': [ 1, 1 ],
169+
'order': 'row-major'
170+
},
171+
{
172+
'shape': [ 3, 3, 0, 3 ],
173+
'order': 'row-major'
174+
},
175+
{
176+
'shape': [ 1, 2, 3, 4 ],
177+
'order': 'row-major'
178+
},
179+
{
180+
'shape': [ 5 ],
181+
'order': 'row-major'
182+
}
183+
];
184+
185+
expected = [
186+
[ 9, 3, 1 ],
187+
[ 1, 1 ],
188+
[ 0, 0, 3, 1 ],
189+
[ 24, 12, 4, 1 ],
190+
[ 1 ]
191+
];
192+
193+
for ( i = 0; i < values.length; i++ ) {
194+
out = strides( values[ i ], false );
195+
t.deepEqual( out, expected[ i ], 'returns expected value for shape '+values[ i ].shape.join( 'x' ) );
196+
}
197+
t.end();
198+
});
199+
200+
tape( 'the function accepts minimal ndarray-like objects (shape, order=column-major)', function test( t ) {
201+
var expected;
202+
var values;
203+
var out;
204+
var i;
205+
206+
values = [
207+
{
208+
'shape': [ 3, 3, 3 ],
209+
'order': 'column-major'
210+
},
211+
{
212+
'shape': [ 1, 1 ],
213+
'order': 'column-major'
214+
},
215+
{
216+
'shape': [ 3, 3, 0, 3 ],
217+
'order': 'column-major'
218+
},
219+
{
220+
'shape': [ 1, 2, 3, 4 ],
221+
'order': 'column-major'
222+
},
223+
{
224+
'shape': [ 5 ],
225+
'order': 'column-major'
226+
}
227+
];
228+
229+
expected = [
230+
[ 1, 3, 9 ],
231+
[ 1, 1 ],
232+
[ 1, 3, 9, 0 ],
233+
[ 1, 1, 2, 6 ],
234+
[ 1 ]
235+
];
236+
237+
for ( i = 0; i < values.length; i++ ) {
238+
out = strides( values[ i ], false );
239+
t.deepEqual( out, expected[ i ], 'returns expected value for shape '+values[ i ].shape.join( 'x' ) );
240+
}
241+
t.end();
242+
});
243+
109244
tape( 'the function supports returning a guaranteed copy of an input ndarray strides', function test( t ) {
110245
var expected;
111246
var values;

0 commit comments

Comments
 (0)
0