@@ -23,16 +23,16 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
2323 < div class ='clearfix '>
2424
2525 < div class ='fl pad1y space-right2 '>
26- < span class ="strong "> 87.12 % </ span >
26+ < span class ="strong "> 81.41 % </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 115/132 </ span >
28+ < span class ='fraction '> 127/156 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
33- < span class ="strong "> 75 % </ span >
33+ < span class ="strong "> 76.92 % </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 9/12 </ span >
35+ < span class ='fraction '> 10/13 </ span >
3636 </ div >
3737
3838
@@ -44,9 +44,9 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
4444
4545
4646 < div class ='fl pad1y space-right2 '>
47- < span class ="strong "> 87.12 % </ span >
47+ < span class ="strong "> 81.41 % </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 115/132 </ span >
49+ < span class ='fraction '> 127/156 </ span >
5050 </ div >
5151
5252
@@ -195,7 +195,31 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
195195< a name ='L130 '> </ a > < a href ='#L130 '> 130</ a >
196196< a name ='L131 '> </ a > < a href ='#L131 '> 131</ a >
197197< a name ='L132 '> </ a > < a href ='#L132 '> 132</ a >
198- < a name ='L133 '> </ a > < a href ='#L133 '> 133</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
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 >
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 > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
199223< span class ="cline-any cline-yes "> 3x</ span >
200224< span class ="cline-any cline-yes "> 3x</ span >
201225< span class ="cline-any cline-yes "> 3x</ span >
@@ -254,6 +278,9 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
254278< span class ="cline-any cline-yes "> 3x</ span >
255279< span class ="cline-any cline-yes "> 3x</ span >
256280< span class ="cline-any cline-yes "> 3x</ span >
281+ < span class ="cline-any cline-yes "> 3x</ span >
282+ < span class ="cline-any cline-yes "> 24x</ span >
283+ < span class ="cline-any cline-yes "> 24x</ span >
257284< span class ="cline-any cline-yes "> 24x</ span >
258285< span class ="cline-any cline-yes "> 24x</ span >
259286< span class ="cline-any cline-yes "> 24x</ span >
@@ -282,6 +309,17 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
282309< span class ="cline-any cline-yes "> 20x</ span >
283310< span class ="cline-any cline-yes "> 20x</ span >
284311< span class ="cline-any cline-yes "> 20x</ span >
312+ < span class ="cline-any cline-yes "> 20x</ span >
313+ < span class ="cline-any cline-yes "> 20x</ span >
314+ < span class ="cline-any cline-yes "> 20x</ span >
315+ < span class ="cline-any cline-yes "> 20x</ span >
316+ < span class ="cline-any cline-yes "> 20x</ span >
317+ < span class ="cline-any cline-yes "> 20x</ span >
318+ < span class ="cline-any cline-yes "> 20x</ span >
319+ < span class ="cline-any cline-yes "> 20x</ span >
320+ < span class ="cline-any cline-yes "> 20x</ span >
321+ < span class ="cline-any cline-yes "> 20x</ span >
322+ < span class ="cline-any cline-yes "> 20x</ span >
285323< span class ="cline-any cline-yes "> 24x</ span >
286324< span class ="cline-any cline-yes "> 78x</ span >
287325< span class ="cline-any cline-yes "> 78x</ span >
@@ -305,6 +343,8 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
305343< span class ="cline-any cline-no "> </ span >
306344< span class ="cline-any cline-no "> </ span >
307345< span class ="cline-any cline-no "> </ span >
346+ < span class ="cline-any cline-no "> </ span >
347+ < span class ="cline-any cline-no "> </ span >
308348< span class ="cline-any cline-yes "> 24x</ span >
309349< span class ="cline-any cline-no "> </ span >
310350< span class ="cline-any cline-no "> </ span >
@@ -315,8 +355,16 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
315355< span class ="cline-any cline-no "> </ span >
316356< span class ="cline-any cline-no "> </ span >
317357< span class ="cline-any cline-no "> </ span >
318- < span class ="cline-any cline-yes "> 20x</ span >
319- < span class ="cline-any cline-yes "> 20x</ span >
358+ < span class ="cline-any cline-no "> </ span >
359+ < span class ="cline-any cline-no "> </ span >
360+ < span class ="cline-any cline-no "> </ span >
361+ < span class ="cline-any cline-no "> </ span >
362+ < span class ="cline-any cline-no "> </ span >
363+ < span class ="cline-any cline-no "> </ span >
364+ < span class ="cline-any cline-no "> </ span >
365+ < span class ="cline-any cline-no "> </ span >
366+ < span class ="cline-any cline-no "> </ span >
367+ < span class ="cline-any cline-no "> </ span >
320368< span class ="cline-any cline-yes "> 20x</ span >
321369< span class ="cline-any cline-yes "> 20x</ span >
322370< span class ="cline-any cline-yes "> 20x</ span >
@@ -349,18 +397,19 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
349397
350398// MODULES //
351399
352- var FLOAT64_MAX = require( '@stdlib/constants/float64/max' );
353- var abs = require( '@stdlib/math/base/special/abs' );
400+ var isnan = require( '@stdlib/math/base/assert/is-nan' );
354401var abs2 = require( '@stdlib/math/base/special/abs2' );
402+ var abs = require( '@stdlib/math/base/special/abs' );
403+ var sqrt = require( '@stdlib/math/base/special/sqrt' );
355404
356405
357406// VARIABLES //
358407
359408// Blue's scaling constants:
360- var tsml = 1.4916681462400413E-154 ;
361- var tbig = 1.9979190722022350E+146 ;
362- var ssml = 4.4989137945431964E+161 ;
363- var sbig = 1.1113793747425387E-162 ;
409+ var SBIG = 1.11137937474253874e-162 ;
410+ var SSML = 4.49891379454319638e+161 ;
411+ var TBIG = 1.99791907220223503e+146 ;
412+ var TSML = 1.49166814624004135e-154 ;
364413
365414
366415// MAIN //
@@ -389,10 +438,12 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
389438function drssbl( N, x, strideX, offsetX, y, strideY, offsetY ) {
390439 var notbig;
391440 var sumsq;
441+ var scale;
392442 var abig;
393- var amed;
394443 var asml;
395- var scl;
444+ var amed;
445+ var ymin;
446+ var ymax;
396447 var az;
397448 var ix;
398449 var iy;
@@ -411,48 +462,69 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
411462 abig = 0.0;
412463 amed = 0.0;
413464 asml = 0.0;
414- scl = 1.0;
465+ scale = 1.0;
415466
416- // Compute the sum of squares using 3 accumulators--`abig` (sum of squares scaled down to avoid overflow), `asml` (sum of squares scaled up to avoid underflow), `amed` (sum of squares that do not require scaling)--and thresholds and multipliers--`tbig` (values bigger than this are scaled down by `sbig`) and `tsml` (values smaller than this are scaled up by `ssml`)...
467+ /*
468+ * Compute the sum of squares in 3 accumulators:
469+ *
470+ * - `abig`: sum of squares scaled down to avoid overflow
471+ * - `asml`: sum of squares scaled up to avoid underflow
472+ * - `amed`: sum of squares that do not require scaling
473+ *
474+ * The thresholds and multipliers are
475+ *
476+ * - `tbig`: values bigger than this are scaled down by `sbig`
477+ * - `tsml`: values smaller than this are scaled up by `ssml`
478+ */
417479 for ( i = 0; i < N; i++ ) {
418480 az = abs( x[ ix ] - y[ iy ] );
419- if ( az > tbig ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
420- < span class ="cstat-no " title ="statement not covered " > abig += abs2( az * sbig );</ span >
481+ if ( az > TBIG ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
482+ < span class ="cstat-no " title ="statement not covered " > abig += abs2( az*SBIG );</ span >
421483< span class ="cstat-no " title ="statement not covered " > notbig = false;</ span >
422- } else if ( az < tsml ) {
484+ } else if ( az < TSML ) {
423485 if ( notbig ) {
424- asml += abs2( az * ssml );
486+ asml += abs2( az*SSML );
425487 }
426488 } else {
427- amed += ( az * az );
489+ amed += abs2( az );
428490 }
429491 ix += strideX;
430492 iy += strideY;
431493 }
432494 // Combine `abig` and `amed` or `amed` and `asml` if more than one accumulator was used...
433495 if ( abig > 0.0 ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
434- < span class ="cstat-no " title ="statement not covered " > // Combine `abig` and `amed` if `abig` > 0...</ span >
435- < span class ="cstat-no " title ="statement not covered " > if ( amed > 0.0 || ( amed > FLOAT64_MAX ) || ( amed !== amed ) ) {</ span >
436- < span class ="cstat-no " title ="statement not covered " > abig += ( ( amed * sbig ) * sbig ) ;</ span >
496+ < span class ="cstat-no " title ="statement not covered " > // Combine `abig` and `amed` if `abig > 0` ...</ span >
497+ < span class ="cstat-no " title ="statement not covered " > if ( amed > 0.0 || isnan( amed ) ) {</ span >
498+ < span class ="cstat-no " title ="statement not covered " > abig += ( amed*SBIG ) * SBIG ;</ span >
437499< span class ="cstat-no " title ="statement not covered " > }</ span >
438- < span class ="cstat-no " title ="statement not covered " > scl = 1.0 / sbig ;</ span >
500+ < span class ="cstat-no " title ="statement not covered " > scale = 1.0 / SBIG ;</ span >
439501< span class ="cstat-no " title ="statement not covered " > sumsq = abig;</ span >
440- } else if ( asml > 0.0 ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
441- < span class ="cstat-no " title ="statement not covered " > // Combine `amed` and `asml` if `asml` > 0...</ span >
442- < span class ="cstat-no " title ="statement not covered " > if ( amed > 0.0 || amed > FLOAT64_MAX || ( amed !== amed ) ) {</ span >
443- < span class ="cstat-no " title ="statement not covered " > asml /= ( ssml * ssml );</ span >
444- < span class ="cstat-no " title ="statement not covered " > scl = 1.0;</ span >
445- < span class ="cstat-no " title ="statement not covered " > sumsq = ( amed + asml );</ span >
502+ < span class ="cstat-no " title ="statement not covered " > return sumsq * ( scale*scale );</ span >
503+ < span class ="cstat-no " title ="statement not covered " > }</ span >
504+ if ( asml > 0.0 ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
505+ < span class ="cstat-no " title ="statement not covered " > // Combine `amed` and `asml` if `asml > 0`...</ span >
506+ < span class ="cstat-no " title ="statement not covered " > if ( amed > 0.0 || isnan( amed ) ) {</ span >
507+ < span class ="cstat-no " title ="statement not covered " > amed = sqrt( amed );</ span >
508+ < span class ="cstat-no " title ="statement not covered " > asml = sqrt( asml ) / SSML;</ span >
509+ < span class ="cstat-no " title ="statement not covered " > if ( asml > amed ) {</ span >
510+ < span class ="cstat-no " title ="statement not covered " > ymin = amed;</ span >
511+ < span class ="cstat-no " title ="statement not covered " > ymax = asml;</ span >
512+ < span class ="cstat-no " title ="statement not covered " > } else {</ span >
513+ < span class ="cstat-no " title ="statement not covered " > ymin = asml;</ span >
514+ < span class ="cstat-no " title ="statement not covered " > ymax = amed;</ span >
515+ < span class ="cstat-no " title ="statement not covered " > }</ span >
516+ < span class ="cstat-no " title ="statement not covered " > scale = 1.0;</ span >
517+ < span class ="cstat-no " title ="statement not covered " > sumsq = abs2( ymax ) * ( 1.0 + abs2( ymin/ymax ) );</ span >
446518< span class ="cstat-no " title ="statement not covered " > } else {</ span >
447- < span class ="cstat-no " title ="statement not covered " > scl = 1.0 / ssml ;</ span >
519+ < span class ="cstat-no " title ="statement not covered " > scale = 1.0 / SSML ;</ span >
448520< span class ="cstat-no " title ="statement not covered " > sumsq = asml;</ span >
449521< span class ="cstat-no " title ="statement not covered " > }</ span >
450- } else {
451- // All values are mid-range...
452- scl = 1.0;
453- sumsq = amed ;
454- }
455- return sumsq * ( scl * scl );
522+ < span class =" cstat-no " title =" statement not covered " > return sumsq * ( scale*scale ); </ span >
523+ < span class =" cstat-no " title =" statement not covered " > } </ span >
524+ // Otherwise all values are mid-range or zero...
525+ scale = 1.0 ;
526+ sumsq = amed;
527+ return sumsq * ( scale*scale );
456528}
457529
458530
@@ -466,7 +538,7 @@ <h1><a href="index.html">All files</a> ndarray.js</h1>
466538 < div class ='footer quiet pad2 space-top1 center small '>
467539 Code coverage generated by
468540 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
469- at 2025-12-03T11:10 :50.168Z
541+ at 2025-12-03T13:40 :50.261Z
470542 </ div >
471543 < script src ="prettify.js "> </ script >
472544 < script >
0 commit comments