Skip to content

Commit 23e1dbf

Browse files
committed
Auto-generated commit
1 parent 6e64b31 commit 23e1dbf

File tree

10 files changed

+37
-9
lines changed

10 files changed

+37
-9
lines changed

.github/.keepalive

Lines changed: 0 additions & 1 deletion
This file was deleted.

NOTICE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Copyright (c) 2016-2023 The Stdlib Authors.
1+
Copyright (c) 2016-2024 The Stdlib Authors.

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ The function returns an object having the following properties:
9191

9292
- **sh**: ordered dimensions.
9393
- **sx**: array strides sorted in loop order.
94+
- **idx**: dimension indices sorted in loop order.
9495

9596
For all returned arrays, the first element corresponds to the innermost loop, and the last element corresponds to the outermost loop.
9697

dist/index.js

Lines changed: 4 additions & 4 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: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/repl.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
- sh: ordered dimensions.
88
- sx: array strides sorted in loop order.
9+
- idx: dimension indices sorted in loop order.
910

1011
For all returned arrays, the first element corresponds to the innermost
1112
loop, and the last element corresponds to the outermost loop.
@@ -29,6 +30,9 @@
2930
out.sx: Array<integer>
3031
Array strides sorted in loop order.
3132

33+
out.idx: Array<integer>
34+
Dimension indices sorted in loop order.
35+
3236
Examples
3337
--------
3438
> var x = {{alias:@stdlib/ndarray/array}}( [ [ 1, 2 ], [ 3, 4 ] ] );

docs/types/index.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ interface LoopOrderObject {
3535
* Array strides sorted in loop order.
3636
*/
3737
sx: Array<number>;
38+
39+
/**
40+
* Dimension indices sorted in loop order.
41+
*/
42+
idx: Array<number>;
3843
}
3944

4045
/**
@@ -46,6 +51,7 @@ interface LoopOrderObject {
4651
*
4752
* - **sh**: dimensions sorted in loop order.
4853
* - **sx**: ndarray strides sorted in loop order.
54+
* - **idx**: dimension indices sorted in loop order.
4955
*
5056
* - When iterating over the elements of a multi-dimensional array, accessing elements which are closer in memory can improve performance. To this end, loop interchange is a technique used in loop nest optimization to improve locality of reference and take advantage of CPU cache.
5157
*
@@ -68,6 +74,9 @@ interface LoopOrderObject {
6874
*
6975
* var ssx = o.sx;
7076
* // returns [ 1, 4, 12 ]
77+
*
78+
* var idx = o.idx;
79+
* // returns [ 2, 1, 0 ]
7180
*/
7281
declare function nullaryLoopOrder( shape: ArrayLike<number>, stridesX: ArrayLike<number> ): LoopOrderObject;
7382

lib/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
*
3939
* var ssx = o.sx;
4040
* // returns [ 1, 4, 12 ]
41+
*
42+
* var idx = o.idx;
43+
* // returns [ 2, 1, 0 ]
4144
*/
4245

4346
// MODULES //

lib/main.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ var sort2ins = require( './sort2ins.js' );
3737
*
3838
* - **sh**: dimensions sorted in loop order.
3939
* - **sx**: ndarray strides sorted in loop order.
40+
* - **idx**: dimension indices sorted in loop order.
4041
*
4142
* @param {NonNegativeIntegerArray} sh - array dimensions
4243
* @param {IntegerArray} sx - array stride lengths
@@ -55,6 +56,9 @@ var sort2ins = require( './sort2ins.js' );
5556
*
5657
* var ssx = o.sx;
5758
* // returns [ 1, 4, 12 ]
59+
*
60+
* var idx = o.idx;
61+
* // returns [ 2, 1, 0 ]
5862
*/
5963
function loopOrder( sh, sx ) {
6064
var idx;
@@ -71,7 +75,8 @@ function loopOrder( sh, sx ) {
7175

7276
return {
7377
'sh': sh,
74-
'sx': sx
78+
'sx': sx,
79+
'idx': idx
7580
};
7681
}
7782

test/test.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ tape( 'the function returns loop interchange data (row-major)', function test( t
5151
t.strictEqual( isArray( o.sx ), true, 'returns expected value' );
5252
t.deepEqual( o.sx, [ 1, -2, 4 ], 'returns expected value' );
5353

54+
t.strictEqual( isArray( o.idx ), true, 'returns expected value' );
55+
t.deepEqual( o.idx, [ 2, 1, 0 ], 'returns expected value' );
56+
5457
t.end();
5558
});
5659

@@ -72,12 +75,16 @@ tape( 'the function returns loop interchange data (column-major)', function test
7275
t.strictEqual( isArray( o.sx ), true, 'returns expected value' );
7376
t.deepEqual( o.sx, [ 1, -4, 8 ], 'returns expected value' );
7477

78+
t.strictEqual( isArray( o.idx ), true, 'returns expected value' );
79+
t.deepEqual( o.idx, [ 0, 1, 2 ], 'returns expected value' );
80+
7581
t.end();
7682
});
7783

7884
tape( 'if provided empty arrays, the function returns empty arrays', function test( t ) {
7985
var o = loopOrder( [], [] );
8086
t.deepEqual( o.sh, [], 'returns expected value' );
8187
t.deepEqual( o.sx, [], 'returns expected value' );
88+
t.deepEqual( o.idx, [], 'returns expected value' );
8289
t.end();
8390
});

0 commit comments

Comments
 (0)