@@ -25,14 +25,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
2525 < div class ='fl pad1y space-right2 '>
2626 < span class ="strong "> 100% </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 67/67 </ span >
28+ < span class ='fraction '> 84/84 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
3333 < span class ="strong "> 100% </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 6/6 </ span >
35+ < span class ='fraction '> 8/8 </ span >
3636 </ div >
3737
3838
@@ -46,7 +46,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
4646 < div class ='fl pad1y space-right2 '>
4747 < span class ="strong "> 100% </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 67/67 </ span >
49+ < span class ='fraction '> 84/84 </ span >
5050 </ div >
5151
5252
@@ -130,7 +130,24 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
130130< a name ='L65 '> </ a > < a href ='#L65 '> 65</ a >
131131< a name ='L66 '> </ a > < a href ='#L66 '> 66</ a >
132132< a name ='L67 '> </ a > < a href ='#L67 '> 67</ a >
133- < a name ='L68 '> </ a > < a href ='#L68 '> 68</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
133+ < a name ='L68 '> </ a > < a href ='#L68 '> 68</ a >
134+ < a name ='L69 '> </ a > < a href ='#L69 '> 69</ a >
135+ < a name ='L70 '> </ a > < a href ='#L70 '> 70</ a >
136+ < a name ='L71 '> </ a > < a href ='#L71 '> 71</ a >
137+ < a name ='L72 '> </ a > < a href ='#L72 '> 72</ a >
138+ < a name ='L73 '> </ a > < a href ='#L73 '> 73</ a >
139+ < a name ='L74 '> </ a > < a href ='#L74 '> 74</ a >
140+ < a name ='L75 '> </ a > < a href ='#L75 '> 75</ a >
141+ < a name ='L76 '> </ a > < a href ='#L76 '> 76</ a >
142+ < a name ='L77 '> </ a > < a href ='#L77 '> 77</ a >
143+ < a name ='L78 '> </ a > < a href ='#L78 '> 78</ a >
144+ < a name ='L79 '> </ a > < a href ='#L79 '> 79</ a >
145+ < a name ='L80 '> </ a > < a href ='#L80 '> 80</ a >
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 > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
134151< span class ="cline-any cline-yes "> 1x</ span >
135152< span class ="cline-any cline-yes "> 1x</ span >
136153< span class ="cline-any cline-yes "> 1x</ span >
@@ -169,29 +186,46 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
169186< span class ="cline-any cline-yes "> 1x</ span >
170187< span class ="cline-any cline-yes "> 1x</ span >
171188< span class ="cline-any cline-yes "> 1x</ span >
172- < span class ="cline-any cline-yes "> 10x</ span >
173- < span class ="cline-any cline-yes "> 10x</ span >
174- < span class ="cline-any cline-yes "> 10x</ span >
175- < span class ="cline-any cline-yes "> 10x</ span >
176- < span class ="cline-any cline-yes "> 10x</ span >
177- < span class ="cline-any cline-yes "> 10x</ span >
178- < span class ="cline-any cline-yes "> 10x</ span >
179- < span class ="cline-any cline-yes "> 10x</ span >
180- < span class ="cline-any cline-yes "> 10x</ span >
181- < span class ="cline-any cline-yes "> 10x</ span >
182- < span class ="cline-any cline-yes "> 28x</ span >
189+ < span class ="cline-any cline-yes "> 1x</ span >
190+ < span class ="cline-any cline-yes "> 1x</ span >
191+ < span class ="cline-any cline-yes "> 1x</ span >
192+ < span class ="cline-any cline-yes "> 1x</ span >
193+ < span class ="cline-any cline-yes "> 1x</ span >
194+ < span class ="cline-any cline-yes "> 1x</ span >
195+ < span class ="cline-any cline-yes "> 1x</ span >
196+ < span class ="cline-any cline-yes "> 1x</ span >
197+ < span class ="cline-any cline-yes "> 1x</ span >
198+ < span class ="cline-any cline-yes "> 20x</ span >
199+ < span class ="cline-any cline-yes "> 20x</ span >
200+ < span class ="cline-any cline-yes "> 20x</ span >
201+ < span class ="cline-any cline-yes "> 20x</ span >
202+ < span class ="cline-any cline-yes "> 20x</ span >
203+ < span class ="cline-any cline-yes "> 20x</ span >
204+ < span class ="cline-any cline-yes "> 20x</ span >
205+ < span class ="cline-any cline-yes "> 20x</ span >
206+ < span class ="cline-any cline-yes "> 20x</ span >
207+ < span class ="cline-any cline-yes "> 20x</ span >
208+ < span class ="cline-any cline-yes "> 5x</ span >
209+ < span class ="cline-any cline-yes "> 5x</ span >
210+ < span class ="cline-any cline-yes "> 1x</ span >
211+ < span class ="cline-any cline-yes "> 1x</ span >
212+ < span class ="cline-any cline-yes "> 5x</ span >
213+ < span class ="cline-any cline-yes "> 20x</ span >
214+ < span class ="cline-any cline-yes "> 20x</ span >
215+ < span class ="cline-any cline-yes "> 20x</ span >
216+ < span class ="cline-any cline-yes "> 56x</ span >
217+ < span class ="cline-any cline-yes "> 39x</ span >
218+ < span class ="cline-any cline-yes "> 39x</ span >
219+ < span class ="cline-any cline-yes "> 19x</ span >
220+ < span class ="cline-any cline-yes "> 19x</ span >
221+ < span class ="cline-any cline-yes "> 19x</ span >
222+ < span class ="cline-any cline-yes "> 56x</ span >
223+ < span class ="cline-any cline-yes "> 17x</ span >
183224< span class ="cline-any cline-yes "> 17x</ span >
184225< span class ="cline-any cline-yes "> 17x</ span >
185- < span class ="cline-any cline-yes "> 9x</ span >
186- < span class ="cline-any cline-yes "> 9x</ span >
187- < span class ="cline-any cline-yes "> 9x</ span >
188- < span class ="cline-any cline-yes "> 28x</ span >
189- < span class ="cline-any cline-yes "> 11x</ span >
190- < span class ="cline-any cline-yes "> 11x</ span >
191- < span class ="cline-any cline-yes "> 11x</ span >
192- < span class ="cline-any cline-yes "> 28x</ span >
193- < span class ="cline-any cline-yes "> 10x</ span >
194- < span class ="cline-any cline-yes "> 10x</ span >
226+ < span class ="cline-any cline-yes "> 56x</ span >
227+ < span class ="cline-any cline-yes "> 20x</ span >
228+ < span class ="cline-any cline-yes "> 20x</ span >
195229< span class ="cline-any cline-yes "> 1x</ span >
196230< span class ="cline-any cline-yes "> 1x</ span >
197231< span class ="cline-any cline-yes "> 1x</ span >
@@ -223,9 +257,9 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
223257* Flattens a shape starting from a specified dimension and assigns results to a provided output array.
224258*
225259* @param {NonNegativeIntegerArray} shape - array shape
226- * @param {NonNegativeInteger } dim - dimension to start flattening from
227- * @param {(Array|TypedArray|Object) } out - output object
228- * @returns {(Array|TypedArray|Object) } array shape
260+ * @param {integer } dim - dimension to start flattening from
261+ * @param {Collection } out - output object
262+ * @returns {Collection } array shape
229263*
230264* @example
231265* var sh = [ 0, 0 ];
@@ -235,6 +269,15 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
235269*
236270* var bool = ( out === sh );
237271* // returns true
272+ *
273+ * @example
274+ * var sh = [ 0, 0 ];
275+ *
276+ * var out = flattenShapeFrom( [ 3, 3, 2 ], -2, sh );
277+ * // returns [ 3, 6 ]
278+ *
279+ * var bool = ( out === sh );
280+ * // returns true
238281*/
239282function flattenShapeFrom( shape, dim, out ) {
240283 var ndims;
@@ -243,6 +286,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
243286 var j;
244287
245288 ndims = shape.length;
289+
290+ // Normalize the dimension index...
291+ if ( dim < 0 ) {
292+ dim += ndims;
293+ if ( dim < 0 ) {
294+ dim = 0;
295+ }
296+ }
246297 s = 1;
247298 j = 0;
248299 for ( i = 0; i < ndims; i++ ) { // e.g., shape=[2,3,4,5], dim=2 => shape=[2,3,20]
@@ -271,7 +322,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ndarra
271322 < div class ='footer quiet pad2 space-top1 center small '>
272323 Code coverage generated by
273324 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
274- at 2025-09-28T12:18:41.732Z
325+ at 2025-09-28T12:46:33.073Z
275326 </ div >
276327 < script src ="../../../../prettify.js "> </ script >
277328 < script >
0 commit comments