1
1
import 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' ;
16
3
17
4
/**
18
5
* Returns the number which is the flipped binary representation of input.
19
6
*
20
7
* @param {Number } [input]
21
- * @param {Number } [bitlen ]
8
+ * @param {Number } [bitsCount ]
22
9
* @return {Number }
23
10
*/
24
- function reverseBits ( input , bitlen ) {
11
+ function reverseBits ( input , bitsCount ) {
25
12
let reversedBits = 0 ;
26
- for ( let i = 0 ; i < bitlen ; i += 1 ) {
13
+ for ( let i = 0 ; i < bitsCount ; i += 1 ) {
27
14
reversedBits *= 2 ;
28
15
if ( Math . floor ( input / ( 1 << i ) ) % 2 === 1 ) { reversedBits += 1 ; }
29
16
}
@@ -39,8 +26,8 @@ function reverseBits(input, bitlen) {
39
26
* @return {ComplexNumber[] }
40
27
*/
41
28
export 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 ;
44
31
45
32
while ( inputData . length < N ) {
46
33
inputData . push ( new ComplexNumber ( {
@@ -50,7 +37,7 @@ export default function fastFourierTransform(inputData, inverse = false) {
50
37
}
51
38
52
39
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 ) ] ; }
54
41
55
42
for ( let blockLength = 2 ; blockLength <= N ; blockLength *= 2 ) {
56
43
let phaseStep ;
0 commit comments