@@ -23,16 +23,16 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">bla
23
23
< div class ='clearfix '>
24
24
25
25
< div class ='fl pad1y space-right2 '>
26
- < span class ="strong "> 100 % </ span >
26
+ < span class ="strong "> 97.79 % </ span >
27
27
< span class ="quiet "> Statements</ span >
28
- < span class ='fraction '> 105/105 </ span >
28
+ < span class ='fraction '> 133/136 </ span >
29
29
</ div >
30
30
31
31
32
32
< div class ='fl pad1y space-right2 '>
33
- < span class ="strong "> 100 % </ span >
33
+ < span class ="strong "> 96.42 % </ span >
34
34
< span class ="quiet "> Branches</ span >
35
- < span class ='fraction '> 14/14 </ span >
35
+ < span class ='fraction '> 27/28 </ span >
36
36
</ div >
37
37
38
38
@@ -44,9 +44,9 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">bla
44
44
45
45
46
46
< div class ='fl pad1y space-right2 '>
47
- < span class ="strong "> 100 % </ span >
47
+ < span class ="strong "> 97.79 % </ span >
48
48
< span class ="quiet "> Lines</ span >
49
- < span class ='fraction '> 105/105 </ span >
49
+ < span class ='fraction '> 133/136 </ span >
50
50
</ div >
51
51
52
52
@@ -168,7 +168,38 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">bla
168
168
< a name ='L103 '> </ a > < a href ='#L103 '> 103</ a >
169
169
< a name ='L104 '> </ a > < a href ='#L104 '> 104</ a >
170
170
< a name ='L105 '> </ a > < a href ='#L105 '> 105</ a >
171
- < a name ='L106 '> </ a > < a href ='#L106 '> 106</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
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 > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
172
203
< span class ="cline-any cline-yes "> 3x</ span >
173
204
< span class ="cline-any cline-yes "> 3x</ span >
174
205
< span class ="cline-any cline-yes "> 3x</ span >
@@ -244,29 +275,60 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">bla
244
275
< span class ="cline-any cline-yes "> 2x</ span >
245
276
< span class ="cline-any cline-yes "> 2x</ span >
246
277
< span class ="cline-any cline-yes "> 26x</ span >
247
- < span class ="cline-any cline-yes "> 26x</ span >
248
278
< span class ="cline-any cline-yes "> 34x</ span >
249
- < span class ="cline-any cline-yes "> 99x</ span >
250
- < span class ="cline-any cline-yes "> 99x</ span >
251
- < span class ="cline-any cline-yes "> 78x</ span >
252
- < span class ="cline-any cline-yes "> 78x</ span >
253
- < span class ="cline-any cline-yes "> 32x</ span >
254
- < span class ="cline-any cline-yes "> 78x</ span >
255
- < span class ="cline-any cline-yes "> 46x</ span >
256
- < span class ="cline-any cline-yes "> 46x</ span >
257
- < span class ="cline-any cline-yes "> 78x</ span >
258
- < span class ="cline-any cline-yes "> 78x</ span >
259
- < span class ="cline-any cline-yes "> 78x</ span >
260
- < span class ="cline-any cline-yes "> 76x</ span >
261
- < span class ="cline-any cline-yes "> 78x</ span >
262
- < span class ="cline-any cline-yes "> 2x</ span >
279
+ < span class ="cline-any cline-yes "> 30x</ span >
280
+ < span class ="cline-any cline-yes "> 30x</ span >
281
+ < span class ="cline-any cline-yes "> 22x</ span >
282
+ < span class ="cline-any cline-yes "> 22x</ span >
283
+ < span class ="cline-any cline-yes "> 8x</ span >
284
+ < span class ="cline-any cline-yes "> 8x</ span >
285
+ < span class ="cline-any cline-yes "> 34x</ span >
286
+ < span class ="cline-any cline-yes "> 4x</ span >
287
+ < span class ="cline-any cline-yes "> 4x</ span >
288
+ < span class ="cline-any cline-yes "> 22x</ span >
289
+ < span class ="cline-any cline-yes "> 22x</ span >
290
+ < span class ="cline-any cline-yes "> 22x</ span >
291
+ < span class ="cline-any cline-yes "> 22x</ span >
292
+ < span class ="cline-any cline-yes "> 22x</ span >
293
+ < span class ="cline-any cline-yes "> 34x</ span >
263
294
< span class ="cline-any cline-yes "> 2x</ span >
264
- < span class ="cline-any cline-yes "> 78x</ span >
265
- < span class ="cline-any cline-yes "> 78x</ span >
266
- < span class ="cline-any cline-yes "> 78x</ span >
267
- < span class ="cline-any cline-yes "> 99x</ span >
268
- < span class ="cline-any cline-yes "> 99x</ span >
295
+ < span class ="cline-any cline-yes "> 4x</ span >
296
+ < span class ="cline-any cline-yes "> 4x</ span >
297
+ < span class ="cline-any cline-yes "> 4x</ span >
298
+ < span class ="cline-any cline-no "> </ span >
299
+ < span class ="cline-any cline-no "> </ span >
300
+ < span class ="cline-any cline-no "> </ span >
301
+ < span class ="cline-any cline-yes "> 4x</ span >
302
+ < span class ="cline-any cline-yes "> 4x</ span >
303
+ < span class ="cline-any cline-yes "> 4x</ span >
304
+ < span class ="cline-any cline-yes "> 4x</ span >
305
+ < span class ="cline-any cline-yes "> 34x</ span >
306
+ < span class ="cline-any cline-yes "> 20x</ span >
307
+ < span class ="cline-any cline-yes "> 20x</ span >
308
+ < span class ="cline-any cline-yes "> 22x</ span >
309
+ < span class ="cline-any cline-yes "> 22x</ span >
310
+ < span class ="cline-any cline-yes "> 34x</ span >
311
+ < span class ="cline-any cline-yes "> 65x</ span >
312
+ < span class ="cline-any cline-yes "> 65x</ span >
313
+ < span class ="cline-any cline-yes "> 52x</ span >
314
+ < span class ="cline-any cline-yes "> 52x</ span >
315
+ < span class ="cline-any cline-yes "> 26x</ span >
316
+ < span class ="cline-any cline-yes "> 26x</ span >
269
317
< span class ="cline-any cline-yes "> 26x</ span >
318
+ < span class ="cline-any cline-yes "> 26x</ span >
319
+ < span class ="cline-any cline-yes "> 52x</ span >
320
+ < span class ="cline-any cline-yes "> 52x</ span >
321
+ < span class ="cline-any cline-yes "> 52x</ span >
322
+ < span class ="cline-any cline-yes "> 50x</ span >
323
+ < span class ="cline-any cline-yes "> 52x</ span >
324
+ < span class ="cline-any cline-yes "> 2x</ span >
325
+ < span class ="cline-any cline-yes "> 2x</ span >
326
+ < span class ="cline-any cline-yes "> 52x</ span >
327
+ < span class ="cline-any cline-yes "> 52x</ span >
328
+ < span class ="cline-any cline-yes "> 52x</ span >
329
+ < span class ="cline-any cline-yes "> 65x</ span >
330
+ < span class ="cline-any cline-yes "> 65x</ span >
331
+ < span class ="cline-any cline-yes "> 34x</ span >
270
332
< span class ="cline-any cline-yes "> 34x</ span >
271
333
< span class ="cline-any cline-yes "> 3x</ span >
272
334
< span class ="cline-any cline-yes "> 3x</ span >
@@ -329,6 +391,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">bla
329
391
function dnansumkbn2( N, x, strideX, offsetX ) {
330
392
var sum;
331
393
var ccs;
394
+ var flg;
332
395
var ix;
333
396
var cs;
334
397
var cc;
@@ -337,20 +400,50 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">bla
337
400
var c;
338
401
var i;
339
402
340
- sum = 0.0;
341
403
if ( N <= 0 ) {
342
- return sum ;
404
+ return 0.0 ;
343
405
}
344
406
ix = offsetX;
345
407
if ( strideX === 0 ) {
346
408
if ( isnan( x[ ix ] ) ) {
347
- return sum ;
409
+ return 0.0 ;
348
410
}
349
411
return x[ ix ] * N;
350
412
}
413
+ // Find the first non-NaN element...
414
+ for ( i = 0; i < N; i++ ) {
415
+ v = x[ ix ];
416
+ if ( isnan( v ) === false ) {
417
+ break;
418
+ }
419
+ ix += strideX;
420
+ }
421
+ if ( i === N ) {
422
+ return 0.0;
423
+ }
424
+ sum = v;
425
+ ix += strideX;
426
+ i += 1;
427
+
428
+ // In order to preserve the sign of zero which can be lost during compensated summation below, find the first non-zero element...
429
+ if ( sum === 0.0 ) {
430
+ for ( ; i < N; i++ ) {
431
+ v = x[ ix ];
432
+ if ( isnan( v ) === false ) {
433
+ if ( v !== 0.0 ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
434
+ < span class ="cstat-no " title ="statement not covered " > flg = true;</ span >
435
+ < span class ="cstat-no " title ="statement not covered " > break;</ span >
436
+ < span class ="cstat-no " title ="statement not covered " > }</ span >
437
+ sum += v;
438
+ }
439
+ ix += strideX;
440
+ }
441
+ } else {
442
+ flg = true;
443
+ }
351
444
ccs = 0.0; // second order correction term for lost low order bits
352
445
cs = 0.0; // first order correction term for lost low order bits
353
- for ( i = 0 ; i < N; i++ ) {
446
+ for ( ; i < N; i++ ) {
354
447
v = x[ ix ];
355
448
if ( isnan( v ) === false ) {
356
449
t = sum + v;
@@ -371,7 +464,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">bla
371
464
}
372
465
ix += strideX;
373
466
}
374
- return sum + cs + ccs;
467
+ return ( flg ) ? sum+cs+ ccs : sum ;
375
468
}
376
469
377
470
@@ -385,7 +478,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">bla
385
478
< div class ='footer quiet pad2 space-top1 center small '>
386
479
Code coverage generated by
387
480
< a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
388
- at 2025-04-25T04:28:06.277Z
481
+ at 2025-07-11T07:47:00.295Z
389
482
</ div >
390
483
< script src ="../../../../../prettify.js "> </ script >
391
484
< script >
0 commit comments