@@ -23,9 +23,9 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
2323 < div class ='clearfix '>
2424
2525 < div class ='fl pad1y space-right2 '>
26- < span class ="strong "> 82.73 % </ span >
26+ < span class ="strong "> 85.45 % </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 230/278 </ span >
28+ < span class ='fraction '> 282/330 </ span >
2929 </ div >
3030
3131
@@ -44,9 +44,9 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
4444
4545
4646 < div class ='fl pad1y space-right2 '>
47- < span class ="strong "> 82.73 % </ span >
47+ < span class ="strong "> 85.45 % </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 230/278 </ span >
49+ < span class ='fraction '> 282/330 </ span >
5050 </ div >
5151
5252
@@ -341,7 +341,85 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
341341< a name ='L276 '> </ a > < a href ='#L276 '> 276</ a >
342342< a name ='L277 '> </ a > < a href ='#L277 '> 277</ a >
343343< 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 >
345423< span class ="cline-any cline-yes "> 1x</ span >
346424< span class ="cline-any cline-yes "> 1x</ span >
347425< 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
501579< span class ="cline-any cline-yes "> 1x</ span >
502580< span class ="cline-any cline-yes "> 1x</ span >
503581< 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 >
504608< span class ="cline-any cline-yes "> 4x</ span >
505609< span class ="cline-any cline-yes "> 4x</ span >
506610< 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
717821*
718822* ```text
719823* | 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
720826* ```
721827*
722828* @private
@@ -727,6 +833,30 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">fft/ba
727833* @param {integer} stride - stride length of the input array
728834* @param {NonNegativeInteger} offset - index specifying the first indexed element in the input array
729835* @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
730860*/
731861function iptr( i, j, k, M, stride, offset ) {
732862 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
763893*
764894* ```text
765895* | 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
766898* ```
767899*
768900* 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
778910* @param {integer} stride - stride length of the output array
779911* @param {NonNegativeInteger} offset - index specifying the first indexed element in the output array
780912* @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
781937*/
782938function optr( i, k, j, L, M, stride, offset ) {
783939 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
9041060 < div class ='footer quiet pad2 space-top1 center small '>
9051061 Code coverage generated by
9061062 < 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
9081064 </ div >
9091065 < script src ="../../../../prettify.js "> </ script >
9101066 < script >
0 commit comments