11import ComplexNumber from '../complex-number/ComplexNumber' ;
2-
3- /**
4- * Return the no of bits used in the binary representation of input.
5- *
6- * @param {Number } [input]
7- * @return {Number }
8- */
9- function bitLength ( input ) {
10- let bitlen = 0 ;
11- while ( ( 1 << bitlen ) <= input ) {
12- bitlen += 1 ;
13- }
14- return bitlen ;
15- }
2+ import bitLength from '../bits/bitLength' ;
163
174/**
185 * Returns the number which is the flipped binary representation of input.
196 *
207 * @param {Number } [input]
21- * @param {Number } [bitlen ]
8+ * @param {Number } [bitsCount ]
229 * @return {Number }
2310 */
24- function reverseBits ( input , bitlen ) {
11+ function reverseBits ( input , bitsCount ) {
2512 let reversedBits = 0 ;
26- for ( let i = 0 ; i < bitlen ; i += 1 ) {
13+ for ( let i = 0 ; i < bitsCount ; i += 1 ) {
2714 reversedBits *= 2 ;
2815 if ( Math . floor ( input / ( 1 << i ) ) % 2 === 1 ) { reversedBits += 1 ; }
2916 }
@@ -39,8 +26,8 @@ function reverseBits(input, bitlen) {
3926 * @return {ComplexNumber[] }
4027 */
4128export default function fastFourierTransform ( inputData , inverse = false ) {
42- const bitlen = bitLength ( inputData . length - 1 ) ;
43- const N = 1 << bitlen ;
29+ const bitsCount = bitLength ( inputData . length - 1 ) ;
30+ const N = 1 << bitsCount ;
4431
4532 while ( inputData . length < N ) {
4633 inputData . push ( new ComplexNumber ( {
@@ -50,7 +37,7 @@ export default function fastFourierTransform(inputData, inverse = false) {
5037 }
5138
5239 const output = [ ] ;
53- for ( let i = 0 ; i < N ; i += 1 ) { output [ i ] = inputData [ reverseBits ( i , bitlen ) ] ; }
40+ for ( let i = 0 ; i < N ; i += 1 ) { output [ i ] = inputData [ reverseBits ( i , bitsCount ) ] ; }
5441
5542 for ( let blockLength = 2 ; blockLength <= N ; blockLength *= 2 ) {
5643 let phaseStep ;
0 commit comments