@@ -23,9 +23,9 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
23
23
< div class ='clearfix '>
24
24
25
25
< div class ='fl pad1y space-right2 '>
26
- < span class ="strong "> 82.73 % </ span >
26
+ < span class ="strong "> 85.45 % </ span >
27
27
< span class ="quiet "> Statements</ span >
28
- < span class ='fraction '> 230/278 </ span >
28
+ < span class ='fraction '> 282/330 </ span >
29
29
</ div >
30
30
31
31
@@ -44,9 +44,9 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
44
44
45
45
46
46
< div class ='fl pad1y space-right2 '>
47
- < span class ="strong "> 82.73 % </ span >
47
+ < span class ="strong "> 85.45 % </ span >
48
48
< span class ="quiet "> Lines</ span >
49
- < span class ='fraction '> 230/278 </ span >
49
+ < span class ='fraction '> 282/330 </ span >
50
50
</ div >
51
51
52
52
@@ -341,7 +341,85 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
341
341
< a name ='L276 '> </ a > < a href ='#L276 '> 276</ a >
342
342
< a name ='L277 '> </ a > < a href ='#L277 '> 277</ a >
343
343
< a name ='L278 '> </ a > < a href ='#L278 '> 278</ a >
344
- < a name ='L279 '> </ a > < a href ='#L279 '> 279</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
344
+ < a name ='L279 '> </ a > < a href ='#L279 '> 279</ a >
345
+ < a name ='L280 '> </ a > < a href ='#L280 '> 280</ a >
346
+ < a name ='L281 '> </ a > < a href ='#L281 '> 281</ a >
347
+ < a name ='L282 '> </ a > < a href ='#L282 '> 282</ a >
348
+ < a name ='L283 '> </ a > < a href ='#L283 '> 283</ a >
349
+ < a name ='L284 '> </ a > < a href ='#L284 '> 284</ a >
350
+ < a name ='L285 '> </ a > < a href ='#L285 '> 285</ a >
351
+ < a name ='L286 '> </ a > < a href ='#L286 '> 286</ a >
352
+ < a name ='L287 '> </ a > < a href ='#L287 '> 287</ a >
353
+ < a name ='L288 '> </ a > < a href ='#L288 '> 288</ a >
354
+ < a name ='L289 '> </ a > < a href ='#L289 '> 289</ a >
355
+ < a name ='L290 '> </ a > < a href ='#L290 '> 290</ a >
356
+ < a name ='L291 '> </ a > < a href ='#L291 '> 291</ a >
357
+ < a name ='L292 '> </ a > < a href ='#L292 '> 292</ a >
358
+ < a name ='L293 '> </ a > < a href ='#L293 '> 293</ a >
359
+ < a name ='L294 '> </ a > < a href ='#L294 '> 294</ a >
360
+ < a name ='L295 '> </ a > < a href ='#L295 '> 295</ a >
361
+ < a name ='L296 '> </ a > < a href ='#L296 '> 296</ a >
362
+ < a name ='L297 '> </ a > < a href ='#L297 '> 297</ a >
363
+ < a name ='L298 '> </ a > < a href ='#L298 '> 298</ a >
364
+ < a name ='L299 '> </ a > < a href ='#L299 '> 299</ a >
365
+ < a name ='L300 '> </ a > < a href ='#L300 '> 300</ a >
366
+ < a name ='L301 '> </ a > < a href ='#L301 '> 301</ a >
367
+ < a name ='L302 '> </ a > < a href ='#L302 '> 302</ a >
368
+ < a name ='L303 '> </ a > < a href ='#L303 '> 303</ a >
369
+ < a name ='L304 '> </ a > < a href ='#L304 '> 304</ a >
370
+ < a name ='L305 '> </ a > < a href ='#L305 '> 305</ a >
371
+ < a name ='L306 '> </ a > < a href ='#L306 '> 306</ a >
372
+ < a name ='L307 '> </ a > < a href ='#L307 '> 307</ a >
373
+ < a name ='L308 '> </ a > < a href ='#L308 '> 308</ a >
374
+ < a name ='L309 '> </ a > < a href ='#L309 '> 309</ a >
375
+ < a name ='L310 '> </ a > < a href ='#L310 '> 310</ a >
376
+ < a name ='L311 '> </ a > < a href ='#L311 '> 311</ a >
377
+ < a name ='L312 '> </ a > < a href ='#L312 '> 312</ a >
378
+ < a name ='L313 '> </ a > < a href ='#L313 '> 313</ a >
379
+ < a name ='L314 '> </ a > < a href ='#L314 '> 314</ a >
380
+ < a name ='L315 '> </ a > < a href ='#L315 '> 315</ a >
381
+ < a name ='L316 '> </ a > < a href ='#L316 '> 316</ a >
382
+ < a name ='L317 '> </ a > < a href ='#L317 '> 317</ a >
383
+ < a name ='L318 '> </ a > < a href ='#L318 '> 318</ a >
384
+ < a name ='L319 '> </ a > < a href ='#L319 '> 319</ a >
385
+ < a name ='L320 '> </ a > < a href ='#L320 '> 320</ a >
386
+ < a name ='L321 '> </ a > < a href ='#L321 '> 321</ a >
387
+ < a name ='L322 '> </ a > < a href ='#L322 '> 322</ a >
388
+ < a name ='L323 '> </ a > < a href ='#L323 '> 323</ a >
389
+ < a name ='L324 '> </ a > < a href ='#L324 '> 324</ a >
390
+ < a name ='L325 '> </ a > < a href ='#L325 '> 325</ a >
391
+ < a name ='L326 '> </ a > < a href ='#L326 '> 326</ a >
392
+ < a name ='L327 '> </ a > < a href ='#L327 '> 327</ a >
393
+ < a name ='L328 '> </ a > < a href ='#L328 '> 328</ a >
394
+ < a name ='L329 '> </ a > < a href ='#L329 '> 329</ a >
395
+ < a name ='L330 '> </ a > < a href ='#L330 '> 330</ a >
396
+ < a name ='L331 '> </ a > < a href ='#L331 '> 331</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
397
+ < span class ="cline-any cline-yes "> 1x</ span >
398
+ < span class ="cline-any cline-yes "> 1x</ span >
399
+ < span class ="cline-any cline-yes "> 1x</ span >
400
+ < span class ="cline-any cline-yes "> 1x</ span >
401
+ < span class ="cline-any cline-yes "> 1x</ span >
402
+ < span class ="cline-any cline-yes "> 1x</ span >
403
+ < span class ="cline-any cline-yes "> 1x</ span >
404
+ < span class ="cline-any cline-yes "> 1x</ span >
405
+ < span class ="cline-any cline-yes "> 1x</ span >
406
+ < span class ="cline-any cline-yes "> 1x</ span >
407
+ < span class ="cline-any cline-yes "> 1x</ span >
408
+ < span class ="cline-any cline-yes "> 1x</ span >
409
+ < span class ="cline-any cline-yes "> 1x</ span >
410
+ < span class ="cline-any cline-yes "> 1x</ span >
411
+ < span class ="cline-any cline-yes "> 1x</ span >
412
+ < span class ="cline-any cline-yes "> 1x</ span >
413
+ < span class ="cline-any cline-yes "> 1x</ span >
414
+ < span class ="cline-any cline-yes "> 1x</ span >
415
+ < span class ="cline-any cline-yes "> 1x</ span >
416
+ < span class ="cline-any cline-yes "> 1x</ span >
417
+ < span class ="cline-any cline-yes "> 1x</ span >
418
+ < span class ="cline-any cline-yes "> 1x</ span >
419
+ < span class ="cline-any cline-yes "> 1x</ span >
420
+ < span class ="cline-any cline-yes "> 1x</ span >
421
+ < span class ="cline-any cline-yes "> 1x</ span >
422
+ < span class ="cline-any cline-yes "> 1x</ span >
345
423
< span class ="cline-any cline-yes "> 1x</ span >
346
424
< span class ="cline-any cline-yes "> 1x</ span >
347
425
< span class ="cline-any cline-yes "> 1x</ span >
@@ -501,6 +579,32 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
501
579
< span class ="cline-any cline-yes "> 1x</ span >
502
580
< span class ="cline-any cline-yes "> 1x</ span >
503
581
< span class ="cline-any cline-yes "> 1x</ span >
582
+ < span class ="cline-any cline-yes "> 1x</ span >
583
+ < span class ="cline-any cline-yes "> 1x</ span >
584
+ < span class ="cline-any cline-yes "> 1x</ span >
585
+ < span class ="cline-any cline-yes "> 1x</ span >
586
+ < span class ="cline-any cline-yes "> 1x</ span >
587
+ < span class ="cline-any cline-yes "> 1x</ span >
588
+ < span class ="cline-any cline-yes "> 1x</ span >
589
+ < span class ="cline-any cline-yes "> 1x</ span >
590
+ < span class ="cline-any cline-yes "> 1x</ span >
591
+ < span class ="cline-any cline-yes "> 1x</ span >
592
+ < span class ="cline-any cline-yes "> 1x</ span >
593
+ < span class ="cline-any cline-yes "> 1x</ span >
594
+ < span class ="cline-any cline-yes "> 1x</ span >
595
+ < span class ="cline-any cline-yes "> 1x</ span >
596
+ < span class ="cline-any cline-yes "> 1x</ span >
597
+ < span class ="cline-any cline-yes "> 1x</ span >
598
+ < span class ="cline-any cline-yes "> 1x</ span >
599
+ < span class ="cline-any cline-yes "> 1x</ span >
600
+ < span class ="cline-any cline-yes "> 1x</ span >
601
+ < span class ="cline-any cline-yes "> 1x</ span >
602
+ < span class ="cline-any cline-yes "> 1x</ span >
603
+ < span class ="cline-any cline-yes "> 1x</ span >
604
+ < span class ="cline-any cline-yes "> 1x</ span >
605
+ < span class ="cline-any cline-yes "> 1x</ span >
606
+ < span class ="cline-any cline-yes "> 1x</ span >
607
+ < span class ="cline-any cline-yes "> 1x</ span >
504
608
< span class ="cline-any cline-yes "> 4x</ span >
505
609
< span class ="cline-any cline-yes "> 4x</ span >
506
610
< span class ="cline-any cline-yes "> 4x</ span >
@@ -717,6 +821,8 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
717
821
*
718
822
* ```text
719
823
* | cc(0,0,0) ... cc(3,0,0) | cc(0,1,0) ... cc(3,1,0) | cc(0,0,1) ... cc(3,0,1) | ... | cc(0,1,2) ... cc(3,1,2) |
824
+ * ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
825
+ * 0 M-1 M 2M-1 2M 3M-1 (2L-1)M 2LM-1
720
826
* ```
721
827
*
722
828
* @private
@@ -727,6 +833,30 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
727
833
* @param {integer} stride - stride length of the input array
728
834
* @param {NonNegativeInteger} offset - index specifying the first indexed element in the input array
729
835
* @returns {NonNegativeInteger} computed index
836
+ *
837
+ * @example
838
+ * var stride = 1;
839
+ * var offset = 0;
840
+ *
841
+ * var M = 4; // sub-sequence length
842
+ * var L = 3; // number of sub-sequences
843
+ *
844
+ * var idx = iptr( 0, 0, 0, M, stride, offset );
845
+ * // returns 0
846
+ *
847
+ * idx = iptr( 1, 0, 0, M, stride, offset );
848
+ * // returns 1
849
+ *
850
+ * idx = iptr( M-1, 0, 0, M, stride, offset );
851
+ * // returns 3
852
+ *
853
+ * idx = iptr( 0, 1, 0, M, stride, offset );
854
+ * // returns 4
855
+ *
856
+ * // ...
857
+ *
858
+ * idx = iptr( M-1, 1, L-1, M, stride, offset );
859
+ * // returns 23
730
860
*/
731
861
function iptr( i, j, k, M, stride, offset ) {
732
862
var n = i + ( ( j+(k*2) ) * M );
@@ -763,6 +893,8 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
763
893
*
764
894
* ```text
765
895
* | out(0,0,0)...out(3,0,0) ... out(0,2,0)...out(3,2,0) | out(0,0,1)...out(3,0,1) ... out(0,2,1)...out(3,2,1) |
896
+ * ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
897
+ * 0 M-1 LM LM-1 LM (L+1)M-1 (2L-1)M 2LM-1
766
898
* ```
767
899
*
768
900
* As may be observed, when resolving an index in the output array, the `j` and `k` dimensions are swapped. This stems from `radb2` being only one stage in a multi-stage driver which alternates between using `ch` and `out` as workspace buffers. After each stage, the next stage reads what the previous stage wrote.
@@ -778,6 +910,30 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
778
910
* @param {integer} stride - stride length of the output array
779
911
* @param {NonNegativeInteger} offset - index specifying the first indexed element in the output array
780
912
* @returns {NonNegativeInteger} computed index
913
+ *
914
+ * @example
915
+ * var stride = 1;
916
+ * var offset = 0;
917
+ *
918
+ * var M = 4; // sub-sequence length
919
+ * var L = 3; // number of sub-sequences
920
+ *
921
+ * var idx = optr( 0, 0, 0, L, M, stride, offset );
922
+ * // returns 0
923
+ *
924
+ * idx = optr( 1, 0, 0, L, M, stride, offset );
925
+ * // returns 1
926
+ *
927
+ * idx = optr( M-1, 0, 0, L, M, stride, offset );
928
+ * // returns 3
929
+ *
930
+ * idx = optr( 0, 1, 0, L, M, stride, offset );
931
+ * // returns 4
932
+ *
933
+ * // ...
934
+ *
935
+ * idx = optr( M-1, L-1, 1, L, M, stride, offset );
936
+ * // returns 23
781
937
*/
782
938
function optr( i, k, j, L, M, stride, offset ) {
783
939
var n = i + ( ( k+(j*L) ) * M );
@@ -904,7 +1060,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
904
1060
< div class ='footer quiet pad2 space-top1 center small '>
905
1061
Code coverage generated by
906
1062
< a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
907
- at 2025-06-11T23:43:41.088Z
1063
+ at 2025-06-12T00:18:24.685Z
908
1064
</ div >
909
1065
< script src ="../../../../prettify.js "> </ script >
910
1066
< script >
0 commit comments