@@ -25,14 +25,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
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 '> 171/171 </ span >
28
+ < span class ='fraction '> 167/167 </ 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 '> 27/27 </ span >
35
+ < span class ='fraction '> 25/25 </ span >
36
36
</ div >
37
37
38
38
@@ -46,7 +46,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
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 '> 171/171 </ span >
49
+ < span class ='fraction '> 167/167 </ span >
50
50
</ div >
51
51
52
52
@@ -230,11 +230,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
230
230
< a name ='L165 '> </ a > < a href ='#L165 '> 165</ a >
231
231
< a name ='L166 '> </ a > < a href ='#L166 '> 166</ a >
232
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 >
237
- < a name ='L172 '> </ a > < a href ='#L172 '> 172</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
233
+ < a name ='L168 '> </ a > < a href ='#L168 '> 168</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
238
234
< span class ="cline-any cline-yes "> 3x</ span >
239
235
< span class ="cline-any cline-yes "> 3x</ span >
240
236
< span class ="cline-any cline-yes "> 3x</ span >
@@ -335,53 +331,51 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
335
331
< span class ="cline-any cline-yes "> 159x</ span >
336
332
< span class ="cline-any cline-yes "> 159x</ span >
337
333
< span class ="cline-any cline-yes "> 159x</ span >
338
- < span class ="cline-any cline-yes "> 159x</ span >
339
334
< span class ="cline-any cline-yes "> 41x</ span >
340
335
< span class ="cline-any cline-yes "> 41x</ span >
341
336
< span class ="cline-any cline-yes "> 159x</ span >
342
337
< span class ="cline-any cline-yes "> 41x</ span >
343
338
< span class ="cline-any cline-yes "> 41x</ span >
339
+ < span class ="cline-any cline-yes "> 77x</ span >
340
+ < span class ="cline-any cline-yes "> 77x</ span >
341
+ < span class ="cline-any cline-yes "> 77x</ span >
342
+ < span class ="cline-any cline-yes "> 77x</ span >
343
+ < span class ="cline-any cline-yes "> 77x</ span >
344
+ < span class ="cline-any cline-yes "> 77x</ span >
345
+ < span class ="cline-any cline-yes "> 77x</ span >
346
+ < span class ="cline-any cline-yes "> 77x</ span >
347
+ < span class ="cline-any cline-yes "> 77x</ span >
344
348
< span class ="cline-any cline-yes "> 159x</ span >
345
- < span class ="cline-any cline-yes "> 1x</ span >
346
- < span class ="cline-any cline-yes "> 1x</ span >
347
- < span class ="cline-any cline-yes "> 76x</ span >
348
- < span class ="cline-any cline-yes "> 76x</ span >
349
- < span class ="cline-any cline-yes "> 76x</ span >
350
- < span class ="cline-any cline-yes "> 76x</ span >
351
- < span class ="cline-any cline-yes "> 76x</ span >
352
- < span class ="cline-any cline-yes "> 76x</ span >
353
- < span class ="cline-any cline-yes "> 76x</ span >
354
- < span class ="cline-any cline-yes "> 76x</ span >
355
- < span class ="cline-any cline-yes "> 76x</ span >
356
- < span class ="cline-any cline-yes "> 76x</ span >
357
- < span class ="cline-any cline-yes "> 159x</ span >
358
- < span class ="cline-any cline-yes "> 12x</ span >
359
- < span class ="cline-any cline-yes "> 12x</ span >
360
- < span class ="cline-any cline-yes "> 9x</ span >
361
- < span class ="cline-any cline-yes "> 9x</ span >
362
- < span class ="cline-any cline-yes "> 12x</ span >
349
+ < span class ="cline-any cline-yes "> 13x</ span >
350
+ < span class ="cline-any cline-yes "> 13x</ span >
351
+ < span class ="cline-any cline-yes "> 10x</ span >
352
+ < span class ="cline-any cline-yes "> 10x</ span >
353
+ < span class ="cline-any cline-yes "> 13x</ span >
363
354
< span class ="cline-any cline-yes "> 64x</ span >
364
355
< span class ="cline-any cline-yes "> 64x</ span >
365
- < span class ="cline-any cline-yes "> 30x</ span >
366
- < span class ="cline-any cline-yes "> 30x</ span >
367
- < span class ="cline-any cline-yes "> 30x</ span >
356
+ < span class ="cline-any cline-yes "> 39x</ span >
357
+ < span class ="cline-any cline-yes "> 39x</ span >
368
358
< span class ="cline-any cline-yes "> 1x</ span >
369
359
< span class ="cline-any cline-yes "> 1x</ span >
370
- < span class ="cline-any cline-yes "> 30x</ span >
371
- < span class ="cline-any cline-yes "> 29x</ span >
372
- < span class ="cline-any cline-yes "> 9x</ span >
373
- < span class ="cline-any cline-yes "> 9x</ span >
374
- < span class ="cline-any cline-yes "> 20x</ span >
375
- < span class ="cline-any cline-yes "> 20x</ span >
376
- < span class ="cline-any cline-yes "> 30x</ span >
377
- < span class ="cline-any cline-yes "> 34x</ span >
378
- < span class ="cline-any cline-yes "> 34x</ span >
379
- < span class ="cline-any cline-yes "> 34x</ span >
380
- < span class ="cline-any cline-yes "> 34x</ span >
381
- < span class ="cline-any cline-yes "> 34x</ span >
382
- < span class ="cline-any cline-yes "> 34x</ span >
360
+ < span class ="cline-any cline-yes "> 1x</ span >
361
+ < span class ="cline-any cline-yes "> 38x</ span >
362
+ < span class ="cline-any cline-yes "> 38x</ span >
363
+ < span class ="cline-any cline-yes "> 38x</ span >
364
+ < span class ="cline-any cline-yes "> 38x</ span >
365
+ < span class ="cline-any cline-yes "> 38x</ span >
383
366
< span class ="cline-any cline-yes "> 18x</ span >
384
367
< span class ="cline-any cline-yes "> 18x</ span >
368
+ < span class ="cline-any cline-yes "> 20x</ span >
369
+ < span class ="cline-any cline-yes "> 20x</ span >
370
+ < span class ="cline-any cline-yes "> 39x</ span >
371
+ < span class ="cline-any cline-yes "> 25x</ span >
372
+ < span class ="cline-any cline-yes "> 25x</ span >
373
+ < span class ="cline-any cline-yes "> 25x</ span >
374
+ < span class ="cline-any cline-yes "> 25x</ span >
375
+ < span class ="cline-any cline-yes "> 25x</ span >
376
+ < span class ="cline-any cline-yes "> 25x</ span >
377
+ < span class ="cline-any cline-yes "> 9x</ span >
378
+ < span class ="cline-any cline-yes "> 9x</ span >
385
379
< span class ="cline-any cline-yes "> 16x</ span >
386
380
< span class ="cline-any cline-yes "> 16x</ span >
387
381
< span class ="cline-any cline-yes "> 159x</ span >
@@ -393,8 +387,6 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
393
387
< span class ="cline-any cline-yes "> 21x</ span >
394
388
< span class ="cline-any cline-yes "> 21x</ span >
395
389
< span class ="cline-any cline-yes "> 36x</ span >
396
- < span class ="cline-any cline-yes "> 26x</ span >
397
- < span class ="cline-any cline-yes "> 26x</ span >
398
390
< span class ="cline-any cline-yes "> 159x</ span >
399
391
< span class ="cline-any cline-yes "> 1x</ span >
400
392
< span class ="cline-any cline-yes "> 1x</ span >
@@ -431,15 +423,15 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
431
423
var isFunction = require( '@stdlib/assert/is-function' );
432
424
var isPlainObject = require( '@stdlib/assert/is-plain-object' );
433
425
var isndarrayLike = require( '@stdlib/assert/is-ndarray-like' );
434
- var getShape = require( '@stdlib/ndarray/shape ' );
426
+ var ndims = require( '@stdlib/ndarray/ndims ' );
435
427
var format = require( '@stdlib/string/format' );
436
428
var base = require( './base.js' ).assign;
437
429
438
430
439
431
// MAIN //
440
432
441
433
/**
442
- * Returns the first index of an element along an ndarray dimension which passes a test implemented by a predicate function and assigns the results to a provided output ndarray.
434
+ * Returns the index of the first element along an ndarray dimension which passes a test implemented by a predicate function and assigns the results to a provided output ndarray.
443
435
*
444
436
* @param {ndarrayLike} x - input ndarray
445
437
* @param {ndarrayLike} out - output ndarray
@@ -450,7 +442,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
450
442
* @throws {TypeError} function must be provided at least three arguments
451
443
* @throws {TypeError} first argument must be an ndarray-like object
452
444
* @throws {TypeError} second argument must be an ndarray-like object
453
- * @throws {TypeError} third argument must be a function
445
+ * @throws {TypeError} callback argument must be a function
454
446
* @throws {TypeError} options argument must be an object
455
447
* @throws {RangeError} dimension index must not exceed input ndarray bounds
456
448
* @throws {RangeError} first argument must have at least one dimension
@@ -503,7 +495,6 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
503
495
var opts;
504
496
var ctx;
505
497
var cb;
506
- var sh;
507
498
508
499
nargs = arguments.length;
509
500
if ( !isndarrayLike( x ) ) {
@@ -512,10 +503,6 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
512
503
if ( !isndarrayLike( out ) ) {
513
504
throw new TypeError( format( 'invalid argument. The second argument must be an ndarray. Value: `%s`.', out ) );
514
505
}
515
- if ( nargs < 3 ) {
516
- throw new TypeError( format( 'invalid argument. Function must be provided a callback function. Value: `%s`.', arguments[ 2 ] ) );
517
- }
518
-
519
506
// Initialize an options object:
520
507
opts = {
521
508
'dims': [ -1 ] // default behavior is to perform a reduction over the last dimension
@@ -525,35 +512,38 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
525
512
hasOptions = false;
526
513
527
514
// Case: assign( x, out, clbk )
528
- if ( nargs == = 3 ) {
515
+ if ( nargs < = 3 ) {
529
516
cb = arguments[ 2 ];
530
517
if ( !isFunction( cb ) ) {
531
- throw new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', cb ) );
518
+ throw new TypeError( format( 'invalid argument. Third argument must be a function. Value: `%s`.', cb ) );
532
519
}
533
520
}
534
- // Case: assign( x, out, options, clbk ) or Case: assign( x, out, clbk, thisArg )
535
- else if ( nargs < 5 ) {
536
- options = arguments[ 2 ];
537
- cb = arguments[ 3 ];
538
- if ( isFunction( options ) ) {
539
- ctx = cb;
540
- cb = options;
541
- } else {
521
+ // Case: assign( x, out, ???, ??? )
522
+ else if ( nargs === 4 ) {
523
+ // Case: assign( x, out, clbk, thisArg )
524
+ if ( isFunction( arguments[ 2 ] ) ) {
525
+ cb = arguments[ 2 ];
526
+ ctx = arguments[ 3 ];
527
+ }
528
+ // Case: assign( x, out, options, clbk )
529
+ else {
530
+ options = arguments[ 2 ];
531
+ cb = arguments[ 3 ];
542
532
if ( !isFunction( cb ) ) {
543
- throw new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', cb ) );
533
+ throw new TypeError( format( 'invalid argument. Fourth argument must be a function. Value: `%s`.', cb ) );
544
534
}
545
535
hasOptions = true;
546
536
}
547
537
}
548
538
// Case: assign( x, out, options, clbk, thisArg )
549
539
else {
550
540
options = arguments[ 2 ];
551
- hasOptions = true;
552
541
cb = arguments[ 3 ];
542
+ ctx = arguments[ 4 ];
553
543
if ( !isFunction( cb ) ) {
554
- throw new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', cb ) );
544
+ throw new TypeError( format( 'invalid argument. Fourth argument must be a function. Value: `%s`.', cb ) );
555
545
}
556
- ctx = arguments[ 4 ] ;
546
+ hasOptions = true ;
557
547
}
558
548
if ( hasOptions ) {
559
549
if ( !isPlainObject( options ) ) {
@@ -564,9 +554,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
564
554
opts.dims[ 0 ] = options.dim;
565
555
}
566
556
}
567
- // Resolve the list of non-reduced dimensions:
568
- sh = getShape( x );
569
- if ( sh.length < 1 ) {
557
+ if ( ndims( x ) < 1 ) {
570
558
throw new RangeError( 'invalid argument. First argument must have at least one dimension.' );
571
559
}
572
560
return base( x, out, opts, cb, ctx );
@@ -583,7 +571,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">blas/e
583
571
< div class ='footer quiet pad2 space-top1 center small '>
584
572
Code coverage generated by
585
573
< a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
586
- at 2025-08-12T03:46:35.996Z
574
+ at 2025-08-12T04:16:10.929Z
587
575
</ div >
588
576
< script src ="../../../../prettify.js "> </ script >
589
577
< script >
0 commit comments