@@ -25,14 +25,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
2525 < div class ='fl pad1y space-right2 '>
2626 < span class ="strong "> 100% </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 142/142 </ span >
28+ < span class ='fraction '> 170/170 </ 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 '> 20/20 </ span >
35+ < span class ='fraction '> 35/35 </ span >
3636 </ div >
3737
3838
@@ -46,7 +46,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
4646 < div class ='fl pad1y space-right2 '>
4747 < span class ="strong "> 100% </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 142/142 </ span >
49+ < span class ='fraction '> 170/170 </ span >
5050 </ div >
5151
5252
@@ -205,7 +205,35 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
205205< a name ='L140 '> </ a > < a href ='#L140 '> 140</ a >
206206< a name ='L141 '> </ a > < a href ='#L141 '> 141</ a >
207207< a name ='L142 '> </ a > < a href ='#L142 '> 142</ a >
208- < a name ='L143 '> </ a > < a href ='#L143 '> 143</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
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 >
216+ < a name ='L151 '> </ a > < a href ='#L151 '> 151</ a >
217+ < a name ='L152 '> </ a > < a href ='#L152 '> 152</ a >
218+ < a name ='L153 '> </ a > < a href ='#L153 '> 153</ a >
219+ < a name ='L154 '> </ a > < a href ='#L154 '> 154</ a >
220+ < a name ='L155 '> </ a > < a href ='#L155 '> 155</ a >
221+ < a name ='L156 '> </ a > < a href ='#L156 '> 156</ a >
222+ < a name ='L157 '> </ a > < a href ='#L157 '> 157</ a >
223+ < a name ='L158 '> </ a > < a href ='#L158 '> 158</ a >
224+ < a name ='L159 '> </ a > < a href ='#L159 '> 159</ a >
225+ < a name ='L160 '> </ a > < a href ='#L160 '> 160</ a >
226+ < a name ='L161 '> </ a > < a href ='#L161 '> 161</ a >
227+ < a name ='L162 '> </ a > < a href ='#L162 '> 162</ a >
228+ < a name ='L163 '> </ a > < a href ='#L163 '> 163</ a >
229+ < a name ='L164 '> </ a > < a href ='#L164 '> 164</ a >
230+ < a name ='L165 '> </ a > < a href ='#L165 '> 165</ a >
231+ < a name ='L166 '> </ a > < a href ='#L166 '> 166</ a >
232+ < a name ='L167 '> </ a > < a href ='#L167 '> 167</ a >
233+ < a name ='L168 '> </ a > < a href ='#L168 '> 168</ a >
234+ < a name ='L169 '> </ a > < a href ='#L169 '> 169</ a >
235+ < a name ='L170 '> </ a > < a href ='#L170 '> 170</ a >
236+ < a name ='L171 '> </ a > < a href ='#L171 '> 171</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
209237< span class ="cline-any cline-yes "> 1x</ span >
210238< span class ="cline-any cline-yes "> 1x</ span >
211239< span class ="cline-any cline-yes "> 1x</ span >
@@ -283,65 +311,93 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
283311< span class ="cline-any cline-yes "> 1x</ span >
284312< span class ="cline-any cline-yes "> 1x</ span >
285313< span class ="cline-any cline-yes "> 1x</ span >
286- < span class ="cline-any cline-yes "> 192x</ span >
287- < span class ="cline-any cline-yes "> 192x</ span >
288- < span class ="cline-any cline-yes "> 192x</ span >
289- < span class ="cline-any cline-yes "> 192x</ span >
290- < span class ="cline-any cline-yes "> 192x</ span >
291- < span class ="cline-any cline-yes "> 192x</ span >
292- < span class ="cline-any cline-yes "> 192x</ span >
293- < span class ="cline-any cline-yes "> 192x</ span >
294- < span class ="cline-any cline-yes "> 192x</ span >
295- < span class ="cline-any cline-yes "> 192x</ span >
296- < span class ="cline-any cline-yes "> 192x</ span >
297- < span class ="cline-any cline-yes "> 192x</ span >
298- < span class ="cline-any cline-yes "> 192x</ span >
299- < span class ="cline-any cline-yes "> 192x</ span >
314+ < span class ="cline-any cline-yes "> 1x</ span >
315+ < span class ="cline-any cline-yes "> 198x</ span >
316+ < span class ="cline-any cline-yes "> 198x</ span >
317+ < span class ="cline-any cline-yes "> 198x</ span >
318+ < span class ="cline-any cline-yes "> 198x</ span >
319+ < span class ="cline-any cline-yes "> 198x</ span >
320+ < span class ="cline-any cline-yes "> 198x</ span >
321+ < span class ="cline-any cline-yes "> 198x</ span >
322+ < span class ="cline-any cline-yes "> 198x</ span >
323+ < span class ="cline-any cline-yes "> 198x</ span >
324+ < span class ="cline-any cline-yes "> 198x</ span >
325+ < span class ="cline-any cline-yes "> 198x</ span >
326+ < span class ="cline-any cline-yes "> 198x</ span >
327+ < span class ="cline-any cline-yes "> 198x</ span >
328+ < span class ="cline-any cline-yes "> 198x</ span >
300329< span class ="cline-any cline-yes "> 3x</ span >
301330< span class ="cline-any cline-yes "> 3x</ span >
302- < span class ="cline-any cline-yes "> 129x </ span >
303- < span class ="cline-any cline-yes "> 129x </ span >
304- < span class ="cline-any cline-yes "> 129x </ span >
305- < span class ="cline-any cline-yes "> 192x </ span >
306- < span class ="cline-any cline-yes "> 51x </ span >
307- < span class ="cline-any cline-yes "> 51x </ span >
331+ < span class ="cline-any cline-yes "> 135x </ span >
332+ < span class ="cline-any cline-yes "> 135x </ span >
333+ < span class ="cline-any cline-yes "> 135x </ span >
334+ < span class ="cline-any cline-yes "> 198x </ span >
335+ < span class ="cline-any cline-yes "> 55x </ span >
336+ < span class ="cline-any cline-yes "> 55x </ span >
308337< span class ="cline-any cline-yes "> 6x</ span >
309338< span class ="cline-any cline-yes "> 6x</ span >
310339< span class ="cline-any cline-yes "> 6x</ span >
311- < span class ="cline-any cline-yes "> 45x </ span >
312- < span class ="cline-any cline-yes "> 51x </ span >
340+ < span class ="cline-any cline-yes "> 49x </ span >
341+ < span class ="cline-any cline-yes "> 55x </ span >
313342< span class ="cline-any cline-yes "> 3x</ span >
314343< span class ="cline-any cline-yes "> 3x</ span >
315- < span class ="cline-any cline-yes "> 42x</ span >
316- < span class ="cline-any cline-yes "> 42x</ span >
317- < span class ="cline-any cline-yes "> 42x</ span >
318- < span class ="cline-any cline-yes "> 42x</ span >
319- < span class ="cline-any cline-yes "> 42x</ span >
320- < span class ="cline-any cline-yes "> 42x</ span >
321- < span class ="cline-any cline-yes "> 78x</ span >
322- < span class ="cline-any cline-yes "> 78x</ span >
323- < span class ="cline-any cline-yes "> 78x</ span >
324- < span class ="cline-any cline-yes "> 78x</ span >
344+ < span class ="cline-any cline-yes "> 46x</ span >
345+ < span class ="cline-any cline-yes "> 55x</ span >
346+ < span class ="cline-any cline-yes "> 6x</ span >
347+ < span class ="cline-any cline-yes "> 2x</ span >
348+ < span class ="cline-any cline-yes "> 6x</ span >
349+ < span class ="cline-any cline-yes "> 2x</ span >
350+ < span class ="cline-any cline-yes "> 2x</ span >
351+ < span class ="cline-any cline-yes "> 2x</ span >
352+ < span class ="cline-any cline-yes "> 2x</ span >
353+ < span class ="cline-any cline-yes "> 4x</ span >
354+ < span class ="cline-any cline-yes "> 4x</ span >
355+ < span class ="cline-any cline-yes "> 40x</ span >
356+ < span class ="cline-any cline-yes "> 40x</ span >
357+ < span class ="cline-any cline-yes "> 40x</ span >
358+ < span class ="cline-any cline-yes "> 40x</ span >
359+ < span class ="cline-any cline-yes "> 40x</ span >
360+ < span class ="cline-any cline-yes "> 40x</ span >
361+ < span class ="cline-any cline-yes "> 80x</ span >
362+ < span class ="cline-any cline-yes "> 80x</ span >
363+ < span class ="cline-any cline-yes "> 80x</ span >
364+ < span class ="cline-any cline-yes "> 80x</ span >
325365< span class ="cline-any cline-yes "> 120x</ span >
326- < span class ="cline-any cline-yes "> 192x </ span >
366+ < span class ="cline-any cline-yes "> 198x </ span >
327367< span class ="cline-any cline-yes "> 38x</ span >
328368< span class ="cline-any cline-yes "> 38x</ span >
329369< span class ="cline-any cline-yes "> 23x</ span >
330370< span class ="cline-any cline-yes "> 23x</ span >
331371< span class ="cline-any cline-yes "> 38x</ span >
332372< span class ="cline-any cline-yes "> 82x</ span >
333373< span class ="cline-any cline-yes "> 82x</ span >
334- < span class ="cline-any cline-yes "> 75x </ span >
374+ < span class ="cline-any cline-yes "> 73x </ span >
335375< span class ="cline-any cline-yes "> 48x</ span >
336- < span class ="cline-any cline-yes "> 75x</ span >
337- < span class ="cline-any cline-yes "> 27x</ span >
338- < span class ="cline-any cline-yes "> 27x</ span >
339- < span class ="cline-any cline-yes "> 71x</ span >
340- < span class ="cline-any cline-yes "> 82x</ span >
341- < span class ="cline-any cline-yes "> 7x</ span >
342- < span class ="cline-any cline-yes "> 7x</ span >
376+ < span class ="cline-any cline-yes "> 73x</ span >
377+ < span class ="cline-any cline-yes "> 25x</ span >
378+ < span class ="cline-any cline-yes "> 25x</ span >
379+ < span class ="cline-any cline-yes "> 69x</ span >
380+ < span class ="cline-any cline-yes "> 69x</ span >
381+ < span class ="cline-any cline-yes "> 9x</ span >
382+ < span class ="cline-any cline-yes "> 9x</ span >
383+ < span class ="cline-any cline-yes "> 3x</ span >
384+ < span class ="cline-any cline-yes "> 1x</ span >
385+ < span class ="cline-any cline-yes "> 3x</ span >
386+ < span class ="cline-any cline-yes "> 1x</ span >
387+ < span class ="cline-any cline-yes "> 1x</ span >
388+ < span class ="cline-any cline-yes "> 1x</ span >
389+ < span class ="cline-any cline-yes "> 1x</ span >
390+ < span class ="cline-any cline-yes "> 3x</ span >
391+ < span class ="cline-any cline-yes "> 1x</ span >
392+ < span class ="cline-any cline-yes "> 1x</ span >
393+ < span class ="cline-any cline-yes "> 1x</ span >
394+ < span class ="cline-any cline-yes "> 1x</ span >
395+ < span class ="cline-any cline-yes "> 2x</ span >
396+ < span class ="cline-any cline-yes "> 9x</ span >
397+ < span class ="cline-any cline-yes "> 6x</ span >
398+ < span class ="cline-any cline-yes "> 6x</ span >
343399< span class ="cline-any cline-yes "> 107x</ span >
344- < span class ="cline-any cline-yes "> 192x </ span >
400+ < span class ="cline-any cline-yes "> 198x </ span >
345401< span class ="cline-any cline-yes "> 1x</ span >
346402< span class ="cline-any cline-yes "> 1x</ span >
347403< span class ="cline-any cline-yes "> 1x</ span >
@@ -371,6 +427,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
371427
372428var hasOwnProp = require( '@stdlib/assert/has-own-property' );
373429var isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;
430+ var isString = require( '@stdlib/assert/is-string' ).isPrimitive;
374431var isndarrayLike = require( '@stdlib/assert/is-ndarray-like' );
375432var broadcastScalar = require( '@stdlib/ndarray/base/broadcast-scalar' );
376433var maybeBroadcastArray = require( '@stdlib/ndarray/base/maybe-broadcast-array' );
@@ -387,11 +444,11 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
387444* Sorts an input ndarray along one or more ndarray dimensions using heapsort.
388445*
389446* @param {ndarrayLike} x - input ndarray
390- * @param {(ndarrayLike|number)} [sortOrder] - sort order
447+ * @param {(ndarrayLike|number|string )} [sortOrder] - sort order
391448* @param {Options} [options] - function options
392449* @param {IntegerArray} [options.dims] - list of dimensions over which to perform operation
393450* @throws {TypeError} first argument must be an ndarray-like object
394- * @throws {TypeError} sort order argument must be either an ndarray-like object or a numeric value
451+ * @throws {TypeError} sort order argument must be either an ndarray-like object, a numeric value, or a valid string
395452* @throws {TypeError} options argument must be an object
396453* @throws {RangeError} dimension indices must not exceed input ndarray bounds
397454* @throws {RangeError} number of dimension indices must not exceed the number of input ndarray dimensions
@@ -454,6 +511,17 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
454511 if ( isNumber( o ) ) {
455512 return base( x, broadcastScalar( o, 'generic', [], ord ) );
456513 }
514+ // Case: sorthp( x, sortOrder_string )
515+ if ( isString( o ) ) {
516+ if ( o === 'asc' || o === 'ascending' ) {
517+ o = 1.0;
518+ } else if ( o === 'dsc' || o === 'descending' ) {
519+ o = -1.0;
520+ } else {
521+ throw new TypeError( format( 'invalid argument. Second argument must be a valid sort order. Value: `%s`.', o ) );
522+ }
523+ return base( x, broadcastScalar( o, 'generic', [], ord ) );
524+ }
457525 // Case: sorthp( x, opts )
458526 opts = o;
459527 o = 1.0;
@@ -479,8 +547,24 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
479547 sh = [];
480548 }
481549 o = broadcastScalar( o, 'generic', sh, getOrder( x ) );
550+ }
551+ // Case: sorthp( x, sortOrder_string, opts )
552+ else if ( isString( o ) ) {
553+ if ( o === 'asc' || o === 'ascending' ) {
554+ o = 1.0;
555+ } else if ( o === 'dsc' || o === 'descending' ) {
556+ o = -1.0;
557+ } else {
558+ throw new TypeError( format( 'invalid argument. Second argument must be a valid sort order. Value: `%s`.', o ) );
559+ }
560+ if ( hasOwnProp( opts, 'dims' ) ) {
561+ sh = nonCoreShape( getShape( x ), opts.dims );
562+ } else {
563+ sh = [];
564+ }
565+ o = broadcastScalar( o, 'generic', sh, getOrder( x ) );
482566 } else {
483- throw new TypeError( format( 'invalid argument. Second argument must be either an ndarray or a numeric scalar value. Value: `%s`.', o ) );
567+ throw new TypeError( format( 'invalid argument. Second argument must be either an ndarray, a numeric scalar value, or a valid sort order string . Value: `%s`.', o ) );
484568 }
485569 return base( x, o, opts );
486570}
@@ -496,7 +580,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
496580 < div class ='footer quiet pad2 space-top1 center small '>
497581 Code coverage generated by
498582 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
499- at 2025-09-18T22:01:17.199Z
583+ at 2025-09-20T11:15:26.690Z
500584 </ div >
501585 < script src ="../../../../prettify.js "> </ script >
502586 < script >
0 commit comments