@@ -25,14 +25,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
25
25
< div class ='fl pad1y space-right2 '>
26
26
< span class ="strong "> 100% </ span >
27
27
< span class ="quiet "> Statements</ span >
28
- < span class ='fraction '> 149/149 </ span >
28
+ < span class ='fraction '> 81/81 </ span >
29
29
</ div >
30
30
31
31
32
32
< div class ='fl pad1y space-right2 '>
33
33
< span class ="strong "> 100% </ span >
34
34
< span class ="quiet "> Branches</ span >
35
- < span class ='fraction '> 8/8 </ span >
35
+ < span class ='fraction '> 2/2 </ span >
36
36
</ div >
37
37
38
38
@@ -46,7 +46,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
46
46
< div class ='fl pad1y space-right2 '>
47
47
< span class ="strong "> 100% </ span >
48
48
< span class ="quiet "> Lines</ span >
49
- < span class ='fraction '> 149/149 </ span >
49
+ < span class ='fraction '> 81/81 </ span >
50
50
</ div >
51
51
52
52
@@ -144,75 +144,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
144
144
< a name ='L79 '> </ a > < a href ='#L79 '> 79</ a >
145
145
< a name ='L80 '> </ a > < a href ='#L80 '> 80</ a >
146
146
< a name ='L81 '> </ a > < a href ='#L81 '> 81</ a >
147
- < a name ='L82 '> </ a > < a href ='#L82 '> 82</ a >
148
- < a name ='L83 '> </ a > < a href ='#L83 '> 83</ a >
149
- < a name ='L84 '> </ a > < a href ='#L84 '> 84</ a >
150
- < a name ='L85 '> </ a > < a href ='#L85 '> 85</ a >
151
- < a name ='L86 '> </ a > < a href ='#L86 '> 86</ a >
152
- < a name ='L87 '> </ a > < a href ='#L87 '> 87</ a >
153
- < a name ='L88 '> </ a > < a href ='#L88 '> 88</ a >
154
- < a name ='L89 '> </ a > < a href ='#L89 '> 89</ a >
155
- < a name ='L90 '> </ a > < a href ='#L90 '> 90</ a >
156
- < a name ='L91 '> </ a > < a href ='#L91 '> 91</ a >
157
- < a name ='L92 '> </ a > < a href ='#L92 '> 92</ a >
158
- < a name ='L93 '> </ a > < a href ='#L93 '> 93</ a >
159
- < a name ='L94 '> </ a > < a href ='#L94 '> 94</ a >
160
- < a name ='L95 '> </ a > < a href ='#L95 '> 95</ a >
161
- < a name ='L96 '> </ a > < a href ='#L96 '> 96</ a >
162
- < a name ='L97 '> </ a > < a href ='#L97 '> 97</ a >
163
- < a name ='L98 '> </ a > < a href ='#L98 '> 98</ a >
164
- < a name ='L99 '> </ a > < a href ='#L99 '> 99</ a >
165
- < a name ='L100 '> </ a > < a href ='#L100 '> 100</ a >
166
- < a name ='L101 '> </ a > < a href ='#L101 '> 101</ a >
167
- < a name ='L102 '> </ a > < a href ='#L102 '> 102</ a >
168
- < a name ='L103 '> </ a > < a href ='#L103 '> 103</ a >
169
- < a name ='L104 '> </ a > < a href ='#L104 '> 104</ a >
170
- < a name ='L105 '> </ a > < a href ='#L105 '> 105</ a >
171
- < a name ='L106 '> </ a > < a href ='#L106 '> 106</ a >
172
- < a name ='L107 '> </ a > < a href ='#L107 '> 107</ a >
173
- < a name ='L108 '> </ a > < a href ='#L108 '> 108</ a >
174
- < a name ='L109 '> </ a > < a href ='#L109 '> 109</ a >
175
- < a name ='L110 '> </ a > < a href ='#L110 '> 110</ a >
176
- < a name ='L111 '> </ a > < a href ='#L111 '> 111</ a >
177
- < a name ='L112 '> </ a > < a href ='#L112 '> 112</ a >
178
- < a name ='L113 '> </ a > < a href ='#L113 '> 113</ a >
179
- < a name ='L114 '> </ a > < a href ='#L114 '> 114</ a >
180
- < a name ='L115 '> </ a > < a href ='#L115 '> 115</ a >
181
- < a name ='L116 '> </ a > < a href ='#L116 '> 116</ a >
182
- < a name ='L117 '> </ a > < a href ='#L117 '> 117</ a >
183
- < a name ='L118 '> </ a > < a href ='#L118 '> 118</ a >
184
- < a name ='L119 '> </ a > < a href ='#L119 '> 119</ a >
185
- < a name ='L120 '> </ a > < a href ='#L120 '> 120</ a >
186
- < a name ='L121 '> </ a > < a href ='#L121 '> 121</ a >
187
- < a name ='L122 '> </ a > < a href ='#L122 '> 122</ a >
188
- < a name ='L123 '> </ a > < a href ='#L123 '> 123</ a >
189
- < a name ='L124 '> </ a > < a href ='#L124 '> 124</ a >
190
- < a name ='L125 '> </ a > < a href ='#L125 '> 125</ a >
191
- < a name ='L126 '> </ a > < a href ='#L126 '> 126</ a >
192
- < a name ='L127 '> </ a > < a href ='#L127 '> 127</ a >
193
- < a name ='L128 '> </ a > < a href ='#L128 '> 128</ a >
194
- < a name ='L129 '> </ a > < a href ='#L129 '> 129</ a >
195
- < a name ='L130 '> </ a > < a href ='#L130 '> 130</ a >
196
- < a name ='L131 '> </ a > < a href ='#L131 '> 131</ a >
197
- < a name ='L132 '> </ a > < a href ='#L132 '> 132</ a >
198
- < a name ='L133 '> </ a > < a href ='#L133 '> 133</ a >
199
- < a name ='L134 '> </ a > < a href ='#L134 '> 134</ a >
200
- < a name ='L135 '> </ a > < a href ='#L135 '> 135</ a >
201
- < a name ='L136 '> </ a > < a href ='#L136 '> 136</ a >
202
- < a name ='L137 '> </ a > < a href ='#L137 '> 137</ a >
203
- < a name ='L138 '> </ a > < a href ='#L138 '> 138</ a >
204
- < a name ='L139 '> </ a > < a href ='#L139 '> 139</ a >
205
- < a name ='L140 '> </ a > < a href ='#L140 '> 140</ a >
206
- < a name ='L141 '> </ a > < a href ='#L141 '> 141</ a >
207
- < a name ='L142 '> </ a > < a href ='#L142 '> 142</ a >
208
- < a name ='L143 '> </ a > < a href ='#L143 '> 143</ a >
209
- < a name ='L144 '> </ a > < a href ='#L144 '> 144</ a >
210
- < a name ='L145 '> </ a > < a href ='#L145 '> 145</ a >
211
- < a name ='L146 '> </ a > < a href ='#L146 '> 146</ a >
212
- < a name ='L147 '> </ a > < a href ='#L147 '> 147</ a >
213
- < a name ='L148 '> </ a > < a href ='#L148 '> 148</ a >
214
- < a name ='L149 '> </ a > < a href ='#L149 '> 149</ a >
215
- < a name ='L150 '> </ a > < a href ='#L150 '> 150</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
147
+ < a name ='L82 '> </ a > < a href ='#L82 '> 82</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
216
148
< span class ="cline-any cline-yes "> 1x</ span >
217
149
< span class ="cline-any cline-yes "> 1x</ span >
218
150
< span class ="cline-any cline-yes "> 1x</ span >
@@ -279,74 +211,6 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
279
211
< span class ="cline-any cline-yes "> 1x</ span >
280
212
< span class ="cline-any cline-yes "> 1x</ span >
281
213
< span class ="cline-any cline-yes "> 1x</ span >
282
- < span class ="cline-any cline-yes "> 1x</ span >
283
- < span class ="cline-any cline-yes "> 1x</ span >
284
- < span class ="cline-any cline-yes "> 1x</ span >
285
- < span class ="cline-any cline-yes "> 1x</ span >
286
- < span class ="cline-any cline-yes "> 1x</ span >
287
- < span class ="cline-any cline-yes "> 1x</ span >
288
- < span class ="cline-any cline-yes "> 1x</ span >
289
- < span class ="cline-any cline-yes "> 1x</ span >
290
- < span class ="cline-any cline-yes "> 1x</ span >
291
- < span class ="cline-any cline-yes "> 1x</ span >
292
- < span class ="cline-any cline-yes "> 6x</ span >
293
- < span class ="cline-any cline-yes "> 6x</ span >
294
- < span class ="cline-any cline-yes "> 6x</ span >
295
- < span class ="cline-any cline-yes "> 6x</ span >
296
- < span class ="cline-any cline-yes "> 6x</ span >
297
- < span class ="cline-any cline-yes "> 6x</ span >
298
- < span class ="cline-any cline-yes "> 6x</ span >
299
- < span class ="cline-any cline-yes "> 6x</ span >
300
- < span class ="cline-any cline-yes "> 6x</ span >
301
- < span class ="cline-any cline-yes "> 6x</ span >
302
- < span class ="cline-any cline-yes "> 6x</ span >
303
- < span class ="cline-any cline-yes "> 6x</ span >
304
- < span class ="cline-any cline-yes "> 6x</ span >
305
- < span class ="cline-any cline-yes "> 6x</ span >
306
- < span class ="cline-any cline-yes "> 6x</ span >
307
- < span class ="cline-any cline-yes "> 6x</ span >
308
- < span class ="cline-any cline-yes "> 6x</ span >
309
- < span class ="cline-any cline-yes "> 6x</ span >
310
- < span class ="cline-any cline-yes "> 6x</ span >
311
- < span class ="cline-any cline-yes "> 6x</ span >
312
- < span class ="cline-any cline-yes "> 6x</ span >
313
- < span class ="cline-any cline-yes "> 6x</ span >
314
- < span class ="cline-any cline-yes "> 6x</ span >
315
- < span class ="cline-any cline-yes "> 6x</ span >
316
- < span class ="cline-any cline-yes "> 6x</ span >
317
- < span class ="cline-any cline-yes "> 6x</ span >
318
- < span class ="cline-any cline-yes "> 6x</ span >
319
- < span class ="cline-any cline-yes "> 2x</ span >
320
- < span class ="cline-any cline-yes "> 2x</ span >
321
- < span class ="cline-any cline-yes "> 6x</ span >
322
- < span class ="cline-any cline-yes "> 1x</ span >
323
- < span class ="cline-any cline-yes "> 1x</ span >
324
- < span class ="cline-any cline-yes "> 1x</ span >
325
- < span class ="cline-any cline-yes "> 1x</ span >
326
- < span class ="cline-any cline-yes "> 1x</ span >
327
- < span class ="cline-any cline-yes "> 1x</ span >
328
- < span class ="cline-any cline-yes "> 1x</ span >
329
- < span class ="cline-any cline-yes "> 4x</ span >
330
- < span class ="cline-any cline-yes "> 3x</ span >
331
- < span class ="cline-any cline-yes "> 3x</ span >
332
- < span class ="cline-any cline-yes "> 3x</ span >
333
- < span class ="cline-any cline-yes "> 9x</ span >
334
- < span class ="cline-any cline-yes "> 9x</ span >
335
- < span class ="cline-any cline-yes "> 4x</ span >
336
- < span class ="cline-any cline-yes "> 4x</ span >
337
- < span class ="cline-any cline-yes "> 4x</ span >
338
- < span class ="cline-any cline-yes "> 9x</ span >
339
- < span class ="cline-any cline-yes "> 3x</ span >
340
- < span class ="cline-any cline-yes "> 3x</ span >
341
- < span class ="cline-any cline-yes "> 3x</ span >
342
- < span class ="cline-any cline-yes "> 6x</ span >
343
- < span class ="cline-any cline-yes "> 6x</ span >
344
- < span class ="cline-any cline-yes "> 6x</ span >
345
- < span class ="cline-any cline-yes "> 6x</ span >
346
- < span class ="cline-any cline-yes "> 6x</ span >
347
- < span class ="cline-any cline-yes "> 6x</ span >
348
- < span class ="cline-any cline-yes "> 6x</ span >
349
- < span class ="cline-any cline-yes "> 6x</ span >
350
214
< span class ="cline-any cline-yes "> 6x</ span >
351
215
< span class ="cline-any cline-yes "> 6x</ span >
352
216
< span class ="cline-any cline-yes "> 6x</ span >
@@ -383,17 +247,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
383
247
384
248
// MODULES //
385
249
386
- var zeroTo = require( '@stdlib/array/base/zero-to' );
387
- var copy = require( '@stdlib/array/base/copy-indexed' );
388
- var take = require( '@stdlib/array/base/take-indexed' );
389
- var strides2order = require( '@stdlib/ndarray/base/strides2order' );
390
- var sort2ins = require( './sort2ins.js' );
391
-
392
-
393
- // VARIABLES //
394
-
395
- // Number of arrays:
396
- var N = 3;
250
+ var loopOrder = require( '@stdlib/ndarray/base/loop-interchange-order' );
397
251
398
252
399
253
// MAIN //
@@ -423,7 +277,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
423
277
* var sy = [ 24, 8, 1 ]; // row-major
424
278
* var sz = [ 1, -2, 6 ]; // column-major
425
279
*
426
- * var o = loopOrder ( sh, sx, sy, sz );
280
+ * var o = binaryLoopOrder ( sh, sx, sy, sz );
427
281
* // returns {...}
428
282
*
429
283
* var ssh = o.sh;
@@ -438,86 +292,28 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
438
292
* var ssz = o.sz;
439
293
* // returns [ 6, -2, 1 ]
440
294
*/
441
- function loopOrder( sh, sx, sy, sz ) {
442
- var idx;
443
- var tmp;
444
- var max;
445
- var len;
446
- var arr;
447
- var ox;
448
- var oy;
449
- var oz;
450
- var i;
451
- var j;
452
-
453
- // Initialize a loop interchange index array for generating a loop order permutation:
454
- idx = zeroTo( sh.length );
455
-
456
- // Determine the order (layout) of each array:
457
- ox = strides2order( sx );
458
- oy = strides2order( sy );
459
- oz = strides2order( sz );
460
-
461
- // Determine which array should be used to generate the loop order:
462
- tmp = [ [], [], [], [] ];
463
- tmp[ ox ].push( sx );
464
- tmp[ oy ].push( sy );
465
- tmp[ oz ].push( sz );
466
- max = tmp[ 0 ].length;
467
- if ( max === N ) {
468
- // If all arrays are "disorganized", then just use the first array, as, generally, each array is likely to be as un-ideal as every other:
469
- arr = sx;
470
- } else if ( max === N-1 ) {
471
- // If all but one array is "disorganized", find the "organized" array...
472
- for ( i = 1; i < 4; i++ ) {
473
- if ( tmp[ i ].length ) {
474
- arr = tmp[ i ][ 0 ];
475
- break;
476
- }
477
- }
478
- } else {
479
- // Find the layout which is most common...
480
- j = 0;
481
- for ( i = 1; i < 4; i++ ) {
482
- len = tmp[ i ].length;
483
- if ( len >= max ) {
484
- max = len;
485
- j = i;
486
- }
487
- }
488
- // Use the strides of the first array having the most common layout:
489
- arr = tmp[ j ][ 0 ];
490
- }
491
- // Sort array strides in increasing order (of magnitude):
492
- arr = copy( arr );
493
- sort2ins( arr, idx );
494
-
495
- // Permute the shape and array strides based on the sorted strides:
496
- sh = take( sh, idx );
497
- sx = take( sx, idx );
498
- sy = take( sy, idx );
499
- sz = take( sz, idx );
500
-
295
+ function binaryLoopOrder( sh, sx, sy, sz ) {
296
+ var tmp = loopOrder( sh, [ sx, sy, sz ] );
501
297
return {
502
- 'sh': sh ,
503
- 'sx': sx ,
504
- 'sy': sy ,
505
- 'sz': sz
298
+ 'sh': tmp[ 0 ] ,
299
+ 'sx': tmp[ 1 ] ,
300
+ 'sy': tmp[ 2 ] ,
301
+ 'sz': tmp[ 3 ]
506
302
};
507
303
}
508
304
509
305
510
306
// EXPORTS //
511
307
512
- module.exports = loopOrder ;
308
+ module.exports = binaryLoopOrder ;
513
309
</ pre > </ td > </ tr > </ table > </ pre >
514
310
515
311
< div class ='push '> </ div > <!-- for sticky footer -->
516
312
</ div > <!-- /wrapper -->
517
313
< div class ='footer quiet pad2 space-top1 center small '>
518
314
Code coverage generated by
519
315
< a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
520
- at 2025-05-08T01:24:57.641Z
316
+ at 2025-05-12T09:47:13.872Z
521
317
</ div >
522
318
< script src ="../../../../prettify.js "> </ script >
523
319
< script >
0 commit comments