Next Article in Journal
Joule Heating and Arc-Fault-Induced Electrical Fires for Commercial-Grade Copper and Brass in Low-Voltage Electrical Systems
Next Article in Special Issue
On the Octonion Cross Wigner Distribution of 3-D Signals
Previous Article in Journal
Finite-Key Analysis of 1-Decoy Method Quantum Key Distribution with Intensity Fluctuation
Previous Article in Special Issue
Error-Correction Coding Using Polynomial Residue Number System
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Some FFT Algorithms for Small-Length Real-Valued Sequences

by
Dorota Majorkowska-Mech
*,† and
Aleksandr Cariow
Faculty of Comuter Science and Information Technology, West Pomeranian University of Technology, Zolnierska 49, 71-210 Szczecin, Poland
*
Author to whom correspondence should be addressed.
These authors contributed equally to this work.
Appl. Sci. 2022, 12(9), 4700; https://doi.org/10.3390/app12094700
Submission received: 15 March 2022 / Revised: 1 May 2022 / Accepted: 2 May 2022 / Published: 7 May 2022

Abstract

:
This paper proposes fast algorithms for computing the discrete Fourier transform for real-valued sequences of lengths from 3 to 9. Since calculating the real-valued DFT using the complex-valued FFT is redundant regarding the number of needed operations, the developed algorithms do not operate on complex numbers. The algorithms are described in matrix–vector notation and their data flow diagrams are shown.

1. Introduction

Today, discrete Fourier transform (DFT) is one of the most popular digital signal- and image-processing tools [1,2,3,4,5,6,7]. However, it was used quite rarely for a long time due to its high computational complexity. In 1965, J. Cooley and J. Tukey proposed a fast algorithm to compute DFT with a drastically reduced number of arithmetical operations [8]. This discovery caused a furore among specialists and gave impetus to developing high-speed data processing algorithms based on fast Fourier transform (FFT). Mathematically, FFT algorithms are based on a factorization of the Fourier matrix into a product of sparse matrices, meaning matrices with many zero entries. In the case of the Cooley–Tukey algorithm, we are dealing with the representation of the original matrix as a product of log 2 N sparsely structured matrices. As is well known, the complexity of this algorithm is approximately ( N / 2 ) log 2 N multiplications and the same number of additions of complex numbers.
In DFT algorithms, the input data is usually complex-valued. However, in practical digital signal-processing applications, the dataset for which the DFT is calculated is most often real-valued [9,10,11]. Therefore, developing algorithms suited explicitly for computing the DFT of real-valued data is an actual problem [12].
DFT algorithms for complex-valued data can be used directly for real-valued data. Specifically, the DFT of a real-valued dataset can be computed by converting it into a complex-valued dataset with zero imaginary parts. This approach, although simple, requires about twice the amount of computation and memory than that required in the case of more efficient algorithms designed for real-valued data. Moreover, ordinarily calculating the real-valued DFT using the complex-valued DFT is redundant regarding the number of operations performed. It is well known that the DFT of a real-valued signal is conjugate-symmetric. Therefore, even intuitively, one can assume that the calculations can be reduced by about half in this case. There are two main rational approaches to using the conventional complex-valued DFT to calculate the real-valued DFT. The first approach allows the simultaneous calculation of two N-point real-valued DFTs using a complex-valued DFT of the same size. The second approach is based on the transformation of an N-point real-valued sequence into an N / 2 -point complex-valued sequence, which leads to a reduction in computational complexity. Despite the existence of the mentioned approaches, there are a large number of algorithmic solutions developed specifically for real-valued data [12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]. In this regard, articles [14,25,26] may be particularly noted.
The developed algorithms were presented mainly in algebraic relations, and less often in DFT matrix factorizations. However, none of the publications known to us explains how these ratios were obtained and from what considerations the presented matrices were constructed. This is especially true for small-length real-valued DFT algorithms. Thus, the details of constructing small-length real-valued DFT algorithms are essential. Nevertheless, the solutions given in the literature do not provide a complete imagination about the organization of the small-length real-valued DFT calculation process since their corresponding signal flow graphs are not presented anywhere. In addition, it should be noted that real-valued DFT algorithms for small-length sequences are described in publications available to the authors rather poorly [14].
Applications of short-size FFT algorithms are known from the literature [1,3,4,5,7]. The need to calculate real-valued DFTs arises, for example, in the world of the Internet of Things, smart sensors and connected devices generate a massive amount of data on petabytes per second. Due to communication costs that impact performance and energy consumption, there is an increasing need to perform a significant amount of computation closer to the edge rather than transferring large portions of raw data to the cloud. The latency and security risk of relying on the cloud is intolerable for applications deployed in drones, autonomous vehicles, robotics, and wearables. These applications are often enabled by DSP algorithms and, more specifically, by small-length real-valued DFTs, which extract meaningful information from raw data. Therefore, the efficient deployment of signal processing in embedded devices will improve near-sensor processing, avoid expensive data transmission, enable freedom from the cloud, and provide low latency and low energy consumption. This is a significant challenge due to the embedded systems resource constraints and the increased computational requirements of data processing.
The purpose of the article is to show the details of the organization of calculations of small-length DFTs for the case of real-valued input data as well as to reduce the number of arithmetic operations needed to compute the output.
Similar solutions for some N ( 3 , 5 , 7 ) can be found in [14]. However, there are no considerations of how the presented matrices were constructed and the data flow diagrams are not shown. We have completed the missing algorithms for the remaining N ( 4 , 6 , 8 , 9 ) , described the way in which these algorithms were obtained, and shown the data flow diagrams for all N from 3 to 9.

2. Mathematical Background

The DFT of a discrete signal x ( n ) of size N is given by
c ( n ) = k = 0 N 1 x ( k ) exp j 2 π n k N = k = 0 N 1 x ( k ) cos 2 π n k N j sin 2 π n k N
for n = 0 , 1 , , N 1 , where j is the imaginary unit. Each coefficient c ( n ) of DFT, as a complex number, can be written as a sum
c ( n ) = a ( n ) + j b ( n )
where a ( n ) and b ( n ) are the a real part and an imaginary part of c ( n ) , respectively. For real signal x ( n )
a ( n ) = k = 0 N 1 x ( k ) cos 2 π n k N
b ( n ) = k = 0 N 1 x ( k ) sin 2 π n k N
In this case, the DFT is redundant since it is conjugate-symmetric. Its real and imaginary parts meet the following properties:
a ( N n ) = k = 0 N 1 x ( k ) cos 2 π ( N n ) k N = k = 0 N 1 x ( k ) cos 2 π n k N = a ( n )
b ( N n ) = k = 0 N 1 x ( k ) sin 2 π ( N n ) k N = k = 0 N 1 x ( k ) sin 2 π n k N = b ( n )
Taking into account the periodicity of the signal x ( n ) and their DFT with the period N, we can write
a ( N n ) = a ( n ) = a ( n )
so the real part of DFT is an even function. Since
b ( N n ) = b ( n ) = b ( n )
then the imaginary part of DFT is an odd function. From (8) for n = 0 we have b ( 0 ) = b ( 0 ) = b ( 0 ) , so we obtain
b ( 0 ) = 0
and if N is an even number b ( N / 2 ) = b ( N N / 2 ) = b ( N / 2 ) = b ( N / 2 ) , so
b N 2 = 0
In order to avoid redundancy and to use real transform for real signals the real discrete Fourier transform (RDFT) has been defined [25]
y ( n ) = k = 0 N 1 x ( k ) cos 2 π n k N + θ ( n )
where
θ ( n ) = 0 0 n N 2 π 2 N 2 < n N 1
and · denotes the floor function.
To see the relationship between the RDFT and the DFT of the signal x ( n ) , it is better to write the RDFT in a slightly different form
y ( n ) = k = 0 N 1 x ( k ) cos 2 π n k N 0 n N 2 k = 0 N 1 x ( k ) sin 2 π n k N N 2 < n N 1
Now it is clear that
y ( n ) = a ( n ) 0 n N 2 b ( n ) N 2 < n N 1
so the RDFT contains the not repeated and non-zero coefficients from the real and imaginary parts of the DFT.
Knowing the RDFT coefficients of the signal and the relationships (7)–(10) and (14), it is easy to obtain the DFT coefficients. Namely, if N is an even number then
a ( 0 ) = y ( 0 ) a ( 1 ) = y ( 1 ) a ( N 2 1 ) = y ( N 2 1 ) a ( N 2 ) = y ( N 2 ) a ( N 2 + 1 ) = a ( N 2 1 ) = y ( N 2 1 ) a ( N 1 ) = a ( 1 ) = y ( 1 ) b ( 0 ) = 0 b ( 1 ) = b ( N 1 ) = y ( N 1 ) b ( N 2 1 ) = b ( N 2 + 1 ) = y ( N 2 + 1 ) b ( N 2 ) = 0 b ( N 2 + 1 ) = y ( N 2 + 1 ) b ( N 1 ) = y ( N 1 )
If N is an odd number then
a ( 0 ) = y ( 0 ) a ( 1 ) = y ( 1 ) a ( N 1 2 ) = y ( N 1 2 ) a ( N + 1 2 ) = a ( N 1 2 ) = y ( N 1 2 ) a ( N 1 ) = a ( 1 ) = y ( 1 ) b ( 0 ) = 0 b ( 1 ) = b ( N 1 ) = y ( N 1 ) b ( N 1 2 ) = b ( N + 1 2 ) = y ( N + 1 2 ) b ( N + 1 2 ) = y ( N + 1 2 ) b ( N 1 ) = y ( N 1 )
Later in the article, the matrix–vector notation will be used, so the discrete real input signal x ( n ) of size N will be represented by a column vector x N = [ x 0 , x 1 , , x N 1 ] T , the N-by-N RDFT matrix will be denoted by R N and the output signal y ( n ) —by y N = [ y 0 , y 1 , , y N 1 ] T , where [ · ] T means standard transposition operation. In matrix–vector notation the RDFT transform can be described as follows:
y N = R N x N
The entries r n k of the matrix R N are obtained from (11)
r n k = cos 2 π n k N + θ n
where the indexes n and k vary from 0 to N 1 and θ n = θ ( n ) is defined by (12).

3. RDFT Algorithm for N = 3

For N = 2 , the DFT is real-valued for real input signal and it is the same as RDFT, so we will start from N = 3 . We introduce the denotation ϕ N = 2 π / N . In this case the Equation (17) will take the form
y 3 = R 3 x 3
where
R 3 = cos 0 cos 0 cos 0 cos 0 cos ϕ 3 cos 2 ϕ 3 cos π 2 cos ( 2 ϕ 3 + π 2 ) cos ( 4 ϕ 3 + π 2 ) = 1 1 1 1 cos ϕ 3 cos 2 ϕ 3 0 sin 2 ϕ 3 sin 4 ϕ 3
Since ϕ 3 = 2 π / 3 then using the trigonometric reduction formulas we obtain cos 2 ϕ 3 = cos ϕ 3 , sin 2 ϕ 3 = sin ϕ 3 , and sin 4 ϕ 3 = sin ϕ 3 , so the R 3 matrix will take the form
R 3 = 1 1 1 1 cos ϕ 3 cos ϕ 3 0 sin ϕ 3 sin ϕ 3
When we calculate the product of this matrix by the input vector x 3 we obtain
y 0 y 1 y 2 = x 0 + ( x 1 + x 2 ) x 0 + cos ϕ 3 ( x 1 + x 2 ) sin ϕ 3 ( x 1 x 2 ) = x 0 + ( x 1 + x 2 ) ( cos ϕ 3 1 ) ( x 1 + x 2 ) + [ x 0 + ( x 1 + x 2 ) ] sin ϕ 3 ( x 1 x 2 )
Figure 1 shows a data flow diagram corresponding to this calculation, where d 1 = cos ϕ 3 1 and d 2 = sin ϕ 3 .
In this paper, data flow diagrams are oriented from left to right. Straight lines in the figures denote the operations of data transfer. Points where lines converge denote summation. The dotted lines indicate a signed-changed data transfer operation. The circles in these figures show the operation of multiplication by a number inscribed inside a circle.
When the vector z 3 = a 3 + i b 3 of complex coefficients of DFT for the real input vector x 3 is needed, it can be easily obtained from the output vector y 3 of RDFT, according to (16)
a 3 = a 0 a 1 a 2 = y 0 y 1 y 1 b 3 = b 0 b 1 b 2 = 0 y 2 y 2
The algorithm of the RDFT for N = 3 , presented in Figure 1, can be described by the following matrix–vector procedure, in which the matrix R 3 has been factorized:
y 3 = C 3 D 3 A ˜ 3 A ^ 3 y 3
where
A ^ 3 = 1 0 0 0 1 1 0 1 1 A ˜ 3 = 1 1 0 0 1 0 0 0 1 D 3 = 1 0 0 0 d 1 0 0 0 d 2 C 3 = 1 0 0 1 1 0 0 0 1
According to this algorithm we need only 2 multiplications and 4 additions of real numbers to calculate the output vector y 3 . It should be noted that only the matrix D 3 is responsible for multiplications and that matrix is diagonal
D 3 = diag ( 1 , d 1 , d 2 )

4. RDFT Algorithm for N = 4

For N = 4 , the Equation (17) will take the form
y 4 = R 4 x 4
where
R 4 = 1 1 1 1 1 cos ϕ 4 cos 2 ϕ 4 cos 3 ϕ 4 1 cos 2 ϕ 4 cos 4 ϕ 4 cos 6 ϕ 4 0 sin 3 ϕ 4 sin 6 ϕ 4 sin 9 ϕ 4
Since ϕ 4 = 2 π / 4 = π / 2 then cos ϕ 4 = 0 , cos 2 ϕ 4 = 1 , cos 3 ϕ 4 = 0 , cos 4 ϕ 4 = 1 , cos 6 ϕ 4 = 1 and sin 3 ϕ 4 = 1 , sin 6 ϕ 4 = 0 , sin 9 ϕ 4 = 1 , so the R 4 matrix will take the form
R 4 = 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1
When we calculate the product of this matrix by the real input vector x 4 we obtain
y 0 y 1 y 2 y 3 = ( x 0 + x 2 ) + ( x 1 + x 3 ) x 0 x 2 ( x 0 + x 2 ) ( x 1 + x 3 ) x 1 x 3
Figure 2 shows a data-flow diagram corresponding to this calculation.
When the vector z 4 = a 4 + i b 4 of complex coefficients of DFT for the input vector x 4 is needed, it can be easily obtained from the output vector y 4 of RDFT, according to (15)
a 4 = a 0 a 1 a 2 a 3 = y 0 y 1 y 2 y 1 b 4 = b 0 b 1 b 2 b 3 = 0 y 3 0 y 3
The algorithm of the RDFT for N = 4 , presented in Figure 2, can be described by the following matrix-vector procedure, in which the matrix R 4 has been factorized:
y 4 = C 4 D 4 A ˜ 4 A ^ 4 x 4
where
A ^ 4 = 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 A ˜ 4 = 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 D 4 = I 4 C 4 = 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1
and I k denotes the identity matrix of size k.
According to this algorithm, we need only 6 additions of real numbers to calculate the output vector y 4 . It should be noted that the matrix D 4 is responsible for multiplications and that, in this case, this matrix is equal to identity matrix, so we need not any multiplications of real numbers.

5. RDFT Algorithm for N = 5

For N = 5 , the Equation (17) will take the form
y 5 = R 5 x 5
where
R 5 = 1 1 1 1 1 1 cos ϕ 5 cos 2 ϕ 5 cos 3 ϕ 5 cos 4 ϕ 5 1 cos 2 ϕ 5 cos 4 ϕ 5 cos 6 ϕ 5 cos 8 ϕ 5 0 sin 3 ϕ 5 sin 6 ϕ 5 sin 9 ϕ 5 sin 12 ϕ 5 0 sin 4 ϕ 5 sin 8 ϕ 5 sin 12 ϕ 5 sin 16 ϕ 5
Since ϕ 5 = 2 π / 5 then cos 3 ϕ 5 = cos 2 ϕ 5 , cos 4 ϕ 5 = cos ϕ 5 , cos 6 ϕ 5 = cos ϕ 5 , cos 8 ϕ 5 = cos 2 ϕ 5 and sin 3 ϕ 5 = sin 2 ϕ 5 , sin 4 ϕ 5 = sin ϕ 5 , sin 6 ϕ 5 = sin ϕ 5 , sin 8 ϕ 5 = sin 2 ϕ 5 , sin 9 ϕ 5 = sin ϕ 5 , sin 12 ϕ 5 = sin 2 ϕ 5 , sin 16 ϕ 5 = sin ϕ 5 , so the R 5 matrix will take the form
R 5 = 1 1 1 1 1 1 cos ϕ 5 cos 2 ϕ 5 cos 2 ϕ 5 cos ϕ 5 1 cos 2 ϕ 5 cos ϕ 5 cos ϕ 5 cos 2 ϕ 5 0 sin 2 ϕ 5 sin ϕ 5 sin ϕ 5 sin 2 ϕ 5 0 sin ϕ 5 sin 2 ϕ 5 sin 2 ϕ 5 sin ϕ 5
When we calculate the product of this matrix by the input vector x 5 we obtain
y 0 y 1 y 2 y 3 y 4 = x 0 + [ ( x 1 + x 4 ) + ( x 2 + x 3 ) ] x 0 + cos ϕ 5 ( x 1 + x 4 ) + cos 2 ϕ 5 ( x 2 + x 3 ) x 0 + cos 2 ϕ 5 ( x 1 + x 4 ) + cos ϕ 5 ( x 2 + x 3 ) sin 2 ϕ 5 ( x 1 x 4 ) sin ϕ 5 ( x 2 x 3 ) sin ϕ 5 ( x 1 x 4 ) + sin 2 ϕ 5 ( x 2 x 3 )
To better understand the construction of the RDFT algorithm for N = 5 , we will introduce the notations t 1 = x 1 + x 4 , t 2 = x 2 + x 3 , t 3 = x 2 x 3 , t 4 = x 1 x 4 , t 0 = x 0 + t 1 + t 2 and consider the sub-blocks of the output vector y 5 . The first sub-block is
y 1 y 2 = x 0 x 0 + cos ϕ 5 cos 2 ϕ 5 cos 2 ϕ 5 cos ϕ 5 t 1 t 2 =
= x 0 x 0 + 1 1 1 1 cos ϕ 5 + cos 2 ϕ 5 2 0 0 cos ϕ 5 cos 2 ϕ 5 2 1 1 1 1 t 1 t 2
We can also write it as
y 1 y 2 = t 0 t 0 + 1 1 1 1 cos ϕ 5 + cos 2 ϕ 5 2 1 0 0 cos ϕ 5 cos 2 ϕ 5 2 1 1 1 1 t 1 t 2
The second sub-block is
y 3 y 4 = sin ϕ 5 sin 2 ϕ 5 sin 2 ϕ 5 sin ϕ 5 t 3 t 4 =
= 1 0 1 0 1 1 sin ϕ 5 sin 2 ϕ 5 0 0 0 sin ϕ 5 sin 2 ϕ 5 0 0 0 sin 2 ϕ 5 1 0 0 1 1 1 t 3 t 4
Figure 3 shows a data flow diagram corresponding to the calculation of the output vector, where d 1 = ( cos ϕ 5 + cos 2 ϕ 5 ) / 2 1 , d 2 = ( cos ϕ 5 cos 2 ϕ 5 ) / 2 , d 3 = sin ϕ 5 sin 2 ϕ 5 , d 4 = sin ϕ 5 sin 2 ϕ 5 and d 5 = sin 2 ϕ 5 .
When the vector z 5 = a 5 + i b 5 of complex coefficients of DFT for the real input vector x 5 is needed, it can be easily obtained from the output vector y 5 of RDFT, according to (16)
a 5 = a 0 a 1 a 2 a 3 a 4 = y 0 y 1 y 2 y 2 y 1 b 5 = b 0 b 1 b 2 b 3 b 4 = 0 y 4 y 3 y 3 y 4
The algorithm of the RDFT for N = 5 , presented in Figure 3, can be described by the following matrix–vector procedure, in which the matrix R 5 has been factorized:
y 5 = C 5 × 6 C ˜ 6 D 6 A ˜ 6 A ¯ 6 × 5 A ^ 5 x 5
where
A ^ 5 = 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 A ¯ 6 × 5 = 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 A ˜ 6 = 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1
D 6 = 1 0 0 0 0 0 0 d 1 0 0 0 0 0 0 d 2 0 0 0 0 0 0 d 3 0 0 0 0 0 0 d 4 0 0 0 0 0 0 d 5 C ˜ 6 = 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 C 5 × 6 = 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1
According to this algorithm we need only 13 additions and 5 multiplications of real numbers to calculate the output vector y 5 .

6. RDFT Algorithm for N = 6

For N = 6 , the Equation (17) will take the form
y 6 = R 6 x 6
where
R 6 = 1 1 1 1 1 1 1 cos ϕ 6 cos 2 ϕ 6 cos 3 ϕ 6 cos 4 ϕ 6 cos 5 ϕ 6 1 cos 2 ϕ 6 cos 4 ϕ 6 cos 6 ϕ 6 cos 8 ϕ 6 cos 10 ϕ 6 1 cos 3 ϕ 6 cos 6 ϕ 6 cos 9 ϕ 6 cos 12 ϕ 6 cos 15 ϕ 6 0 sin 4 ϕ 6 sin 8 ϕ 6 sin 12 ϕ 6 sin 16 ϕ 6 sin 20 ϕ 6 0 sin 5 ϕ 6 sin 10 ϕ 6 sin 15 ϕ 6 sin 20 ϕ 6 sin 25 ϕ 6
Since ϕ 6 = 2 π / 6 then cos 2 ϕ 6 = cos ϕ 6 , cos 3 ϕ 6 = 1 , cos 4 ϕ 6 = cos ϕ 6 , cos 5 ϕ 6 = cos ϕ 6 , cos 6 ϕ 6 = 1 , cos 8 ϕ 6 = cos ϕ 6 , cos 9 ϕ 6 = 1 , cos 10 ϕ 6 = cos ϕ 6 , cos 12 ϕ 6 = 1 , cos 15 ϕ 6 = 1 and sin 4 ϕ 6 = sin ϕ 6 , sin 5 ϕ 6 = sin ϕ 6 , sin 8 ϕ 6 = sin ϕ 6 , sin 10 ϕ 6 = sin ϕ 6 , sin 12 ϕ 6 = 0 , sin 15 ϕ 6 = 0 , sin 16 ϕ 6 = sin ϕ 6 , sin 20 ϕ 6 = sin ϕ 6 , sin 25 ϕ 6 = sin ϕ 6 , so the R 6 matrix will take the form
R 6 = 1 1 1 1 1 1 1 cos ϕ 6 cos ϕ 6 1 cos ϕ 6 cos ϕ 6 1 cos ϕ 6 cos ϕ 6 1 cos ϕ 6 cos ϕ 6 1 1 1 1 1 1 0 sin ϕ 6 sin ϕ 6 0 sin ϕ 6 sin ϕ 6 0 sin ϕ 6 sin ϕ 6 0 sin ϕ 6 sin ϕ 6
When we calculate the product of this matrix by the input vector x 6 we obtain
y 0 y 1 y 2 y 3 y 4 y 5 = ( x 0 + x 3 ) + ( x 1 + x 5 ) + ( x 2 + x 4 ) ( x 0 x 3 ) + cos ϕ 6 [ ( x 1 + x 5 ) ( x 2 + x 4 ) ] ( x 0 + x 3 ) + cos ϕ 6 [ ( x 1 + x 5 ) ( x 2 + x 4 ) ] ( x 0 x 3 ) ( x 1 + x 5 ) + ( x 2 + x 4 ) sin ϕ 6 [ ( x 1 x 5 ) ( x 2 x 4 ) ] sin ϕ 6 [ ( x 1 x 5 ) + ( x 2 x 4 ) ] =
= ( x 0 + x 3 ) + [ ( x 1 + x 5 ) + ( x 2 + x 4 ) ] ( cos ϕ 6 + 1 ) [ ( x 1 + x 5 ) ( x 2 + x 4 ) ] + [ ( x 0 x 3 ) ( x 1 + x 5 ) + ( x 2 + x 4 ) ] ( cos ϕ 6 1 ) [ ( x 1 + x 5 ) + ( x 2 + x 4 ) ] + [ ( x 0 + x 3 ) + ( x 1 + x 5 ) + ( x 2 + x 4 ) ] ( x 0 x 3 ) ( x 1 + x 5 ) + ( x 2 + x 4 ) sin ϕ 6 [ ( x 2 x 4 ) ( x 1 x 5 ) ] sin ϕ 6 [ ( x 2 x 4 ) + ( x 1 x 5 ) ]
Figure 4 shows a data-flow diagram corresponding to the calculation of the output vector, where d 1 = cos ϕ 6 1 , d 2 = cos ϕ 6 + 1 , d 4 = sin ϕ 6 , and d 5 = sin ϕ 6 .
When the vector z 6 = a 6 + i b 6 of complex coefficients of DFT for the real input vector x 6 is needed, it can be easily obtained from the output vector y 6 of RDFT, according to (15)
a 6 = a 0 a 1 a 2 a 3 a 4 a 5 = y 0 y 1 y 2 y 3 y 2 y 1 b 6 = b 0 b 1 b 2 b 3 b 4 b 5 = 0 y 5 y 4 0 y 4 y 5
The algorithm of the RDFT for N = 6 , presented in Figure 4, can be described by the following matrix-vector procedure, in which the matrix R 6 has been factorized:
y 6 = C 6 D 6 A ˜ 6 A ¯ 6 A ^ 6 x 6
where
A ^ 6 = 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 A ¯ 6 = 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1
A ˜ 6 = 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 D 6 = 1 0 0 0 0 0 0 d 1 0 0 0 0 0 0 d 2 0 0 0 0 0 0 1 0 0 0 0 0 0 d 4 0 0 0 0 0 0 d 5
C 6 = 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1
According to this algorithm we need only 14 additions and 4 multiplications of real numbers to calculate the output vector y 6 .

7. RDFT Algorithm for N = 7

For N = 7 , the Equation (17) will take the form
y 7 = R 7 x 7
where
R 7 = 1 1 1 1 1 1 1 1 cos ϕ 7 cos 2 ϕ 7 cos 3 ϕ 7 cos 4 ϕ 7 cos 5 ϕ 7 cos 6 ϕ 7 1 cos 2 ϕ 7 cos 4 ϕ 7 cos 6 ϕ 7 cos 8 ϕ 7 cos 10 ϕ 7 cos 12 ϕ 7 1 cos 3 ϕ 7 cos 6 ϕ 7 cos 9 ϕ 7 cos 12 ϕ 7 cos 15 ϕ 7 cos 18 ϕ 7 0 sin 4 ϕ 7 sin 8 ϕ 7 sin 12 ϕ 7 sin 16 ϕ 7 sin 20 ϕ 7 sin 24 ϕ 7 0 sin 5 ϕ 7 sin 10 ϕ 7 sin 15 ϕ 7 sin 20 ϕ 7 sin 25 ϕ 7 sin 30 ϕ 7 0 sin 6 ϕ 7 sin 12 ϕ 7 sin 18 ϕ 7 sin 24 ϕ 7 sin 30 ϕ 7 sin 36 ϕ 7
Since ϕ 7 = 2 π / 7 then cos 4 ϕ 7 = cos 3 ϕ 7 , cos 5 ϕ 7 = cos 2 ϕ 7 , cos 6 ϕ 7 = cos ϕ 7 , cos 8 ϕ 7 = cos ϕ 7 , cos 9 ϕ 7 = cos 2 ϕ 7 , cos 10 ϕ 7 = cos 3 ϕ 7 , cos 12 ϕ 7 = cos 2 ϕ 7 , cos 15 ϕ 7 = cos ϕ 7 , cos 18 ϕ 7 = cos 3 ϕ 7 and sin 4 ϕ 7 = sin 3 ϕ 7 , sin 5 ϕ 7 = sin 2 ϕ 7 , sin 6 ϕ 7 = sin ϕ 7 , sin 8 ϕ 7 = sin ϕ 7 , sin 10 ϕ 7 = sin 3 ϕ 7 , sin 12 ϕ 7 = sin 2 ϕ 7 , sin 15 ϕ 7 = sin ϕ 7 , sin 16 ϕ 7 = sin 2 ϕ 7 , sin 18 ϕ 7 = sin 3 ϕ 7 , sin 20 ϕ 7 = sin ϕ 7 , sin 24 ϕ 7 = sin 3 ϕ 7 , sin 25 ϕ 7 = sin 3 ϕ 7 , sin 30 ϕ 7 = sin 2 ϕ 7 , sin 36 ϕ 7 = sin ϕ 7 , so the R 7 matrix will take the form
R 7 = 1 1 1 1 1 1 1 1 cos ϕ 7 cos 2 ϕ 7 cos 3 ϕ 7 cos 3 ϕ 7 cos 2 ϕ 7 cos ϕ 7 1 cos 2 ϕ 7 cos 3 ϕ 7 cos ϕ 7 cos ϕ 7 cos 3 ϕ 7 cos 2 ϕ 7 1 cos 3 ϕ 7 cos ϕ 7 cos 2 ϕ 7 cos 2 ϕ 7 cos ϕ 7 cos 3 ϕ 7 0 sin 3 ϕ 7 sin ϕ 7 sin 2 ϕ 7 sin 2 ϕ 7 sin ϕ 7 sin 3 ϕ 7 0 sin 2 ϕ 7 sin 3 ϕ 7 sin ϕ 7 sin ϕ 7 sin 3 ϕ 7 sin 2 ϕ 7 0 sin ϕ 7 sin 2 ϕ 7 sin 3 ϕ 7 sin 3 ϕ 7 sin 2 ϕ 7 sin ϕ 7
When we calculate the product of this matrix by the input vector x 7 we obtain
y 0 y 1 y 2 y 3 y 4 y 5 y 6 = x 0 + [ ( x 1 + x 6 ) + ( x 2 + x 5 ) + ( x 3 + x 4 ) ] x 0 + cos ϕ 7 ( x 1 + x 6 ) + cos 2 ϕ 7 ( x 2 + x 5 ) + cos 3 ϕ 7 ( x 3 + x 4 ) x 0 + cos 2 ϕ 7 ( x 1 + x 6 ) + cos 3 ϕ 7 ( x 2 + x 5 ) + cos ϕ 7 ( x 3 + x 4 ) x 0 + cos 3 ϕ 7 ( x 1 + x 6 ) + cos ϕ 7 ( x 2 + x 5 ) + cos 2 ϕ 7 ( x 3 + x 4 ) sin 3 ϕ 7 ( x 1 x 6 ) sin ϕ 7 ( x 2 x 5 ) + sin 2 ϕ 7 ( x 3 x 4 ) sin 2 ϕ 7 ( x 1 x 6 ) sin 3 ϕ 7 ( x 2 x 5 ) sin ϕ 7 ( x 3 x 4 ) sin ϕ 7 ( x 1 x 6 ) + sin 2 ϕ 7 ( x 2 x 5 ) + sin 3 ϕ 7 ( x 3 x 4 )
To better understand the construction of the RDFT algorithm for N = 7 , we will introduce the notations t 1 = x 1 + x 6 , t 2 = x 2 + x 5 , t 3 = x 3 + x 4 , t 4 = x 3 x 4 , t 5 = x 2 x 5 , t 6 = x 1 x 6 , t 0 = x 0 + t 1 + t 2 + t 3 and consider the sub-blocks of the output vector y 7 . The first sub-block is
y 1 y 2 y 3 = x 0 x 0 x 0 + cos ϕ 7 cos 2 ϕ 7 cos 3 ϕ 7 cos 2 ϕ 7 cos 3 ϕ 7 cos ϕ 7 cos 3 ϕ 7 cos ϕ 7 cos 2 ϕ 7 t 1 t 2 t 3 =
= x 0 x 0 x 0 + 1 1 1 0 1 1 0 1 1 0 1 1 d 1 ^ 0 0 0 0 d 2 0 0 0 0 d 3 0 0 0 0 d 4 1 1 1 1 0 1 0 1 1 1 1 0 t 1 t 2 t 3
where d 1 ^ = 1 3 ( cos ϕ 7 + cos 2 ϕ 7 + cos 3 ϕ 7 ) , d 2 = 1 3 ( 2 cos ϕ 7 cos 2 ϕ 7 cos 3 ϕ 7 ) , d 3 = 1 3 ( cos ϕ 7 + 2 cos 2 ϕ 7 cos 3 ϕ 7 ) , d 4 = 1 3 ( cos ϕ 7 cos 2 ϕ 7 + 2 cos 3 ϕ 7 ) .
It can also be written as
y 1 y 2 y 3 = t 0 t 0 t 0 + 1 1 1 0 1 1 0 1 1 0 1 1 d 1 0 0 0 0 d 2 0 0 0 0 d 3 0 0 0 0 d 4 1 1 1 1 0 1 0 1 1 1 1 0 t 1 t 2 t 3
where d 1 = 1 3 ( cos ϕ 7 + cos 2 ϕ 7 + cos 3 ϕ 7 ) 1 . The second sub-block is
y 4 y 5 y 6 = sin 2 ϕ 7 sin ϕ 7 sin 3 ϕ 7 sin ϕ 7 sin 3 ϕ 7 sin 2 ϕ 7 sin 3 ϕ 7 sin 2 ϕ 7 sin ϕ 7 t 4 t 5 t 6 =
= 1 0 1 1 1 1 0 1 1 1 1 0 d 5 0 0 0 0 d 6 0 0 0 0 d 7 0 0 0 0 d 8 1 1 1 1 0 1 1 1 0 0 1 1 t 4 t 5 t 6
where d 5 = 1 3 ( sin ϕ 7 + sin 2 ϕ 7 sin 3 ϕ 7 ) , d 6 = 1 3 ( 2 sin ϕ 7 sin 2 ϕ 7 + sin 3 ϕ 7 ) , d 7 = 1 3 ( sin ϕ 7 2 sin 2 ϕ 7 sin 3 ϕ 7 ) , d 8 = 1 3 ( sin ϕ 7 + sin 2 ϕ 7 + 2 sin 3 ϕ 7 ) .
Figure 5 shows a data-flow diagram corresponding to the calculation of the output vector y 7 .
When the vector z 7 = a 7 + i b 7 of complex coefficients of DFT for the real input vector x 7 is needed, it can be easily obtained from the output vector y 7 of RDFT, according to (16)
a 7 = a 0 a 1 a 2 a 3 a 4 a 5 a 6 = y 0 y 1 y 2 y 3 y 3 y 2 y 1 b 7 = b 0 b 1 b 2 b 3 b 4 b 5 b 6 = 0 y 6 y 5 y 4 y 4 y 5 y 6
The algorithm of the RDFT for N = 7 , presented in Figure 5, can be described by the following matrix–vector procedure, in which the matrix R 7 has been factorized:
y 7 = C 7 × 9 C ˜ 9 D 9 A ˜ 9 A ¯ 9 × 7 A ^ 7 x 7
where
A ^ 7 = 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 A ¯ 9 × 7 = 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1
A ˜ 9 = 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 D 9 = 1 0 0 0 0 0 0 0 0 0 d 1 0 0 0 0 0 0 0 0 0 d 2 0 0 0 0 0 0 0 0 0 d 3 0 0 0 0 0 0 0 0 0 d 4 0 0 0 0 0 0 0 0 0 d 5 0 0 0 0 0 0 0 0 0 d 6 0 0 0 0 0 0 0 0 0 d 7 0 0 0 0 0 0 0 0 0 d 8
C ˜ 9 = 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 C 7 × 9 = 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 1 0
According to this algorithm we need only 30 additions and 8 multiplications of real numbers to calculate the output vector y 7 .

8. RDFT Algorithm for N = 8

For N = 8 , the Equation (17) will take the form
y 8 = R 8 x 8
where
R 8 = 1 1 1 1 1 1 1 1 1 cos ϕ 8 cos 2 ϕ 8 cos 3 ϕ 8 cos 4 ϕ 8 cos 5 ϕ 8 cos 6 ϕ 8 cos 7 ϕ 8 1 cos 2 ϕ 8 cos 4 ϕ 8 cos 6 ϕ 8 cos 8 ϕ 8 cos 10 ϕ 8 cos 12 ϕ 8 cos 14 ϕ 8 1 cos 3 ϕ 8 cos 6 ϕ 8 cos 9 ϕ 8 cos 12 ϕ 8 cos 15 ϕ 8 cos 18 ϕ 8 cos 21 ϕ 8 1 cos 4 ϕ 8 cos 8 ϕ 8 cos 12 ϕ 8 cos 16 ϕ 8 cos 20 ϕ 8 cos 24 ϕ 8 cos 28 ϕ 8 0 sin 5 ϕ 8 sin 10 ϕ 8 sin 15 ϕ 8 sin 20 ϕ 8 sin 25 ϕ 8 sin 30 ϕ 8 sin 35 ϕ 8 0 sin 6 ϕ 8 sin 12 ϕ 8 sin 18 ϕ 8 sin 24 ϕ 8 sin 30 ϕ 8 sin 36 ϕ 8 sin 42 ϕ 8 0 sin 7 ϕ 8 sin 14 ϕ 8 sin 21 ϕ 8 sin 28 ϕ 8 sin 35 ϕ 8 sin 42 ϕ 8 sin 49 ϕ 8
Since ϕ 8 = 2 π / 8 then cos 2 ϕ 0 = 0 , cos 3 ϕ 8 = cos ϕ 8 , cos 4 ϕ 8 = 1 , cos 5 ϕ 8 = cos ϕ 8 , cos 6 ϕ 8 = 0 , cos 7 ϕ 8 = cos ϕ 8 , cos 8 ϕ 8 = 1 , cos 9 ϕ 8 = cos ϕ 8 , cos 10 ϕ 8 = 0 , cos 12 ϕ 8 = 1 , cos 14 ϕ 8 = 0 , cos 15 ϕ 8 = cos ϕ 8 , cos 16 ϕ 8 = 1 , cos 18 ϕ 8 = 0 , cos 20 ϕ 8 = 1 , cos 21 ϕ 8 = cos ϕ 8 , cos 24 ϕ 8 = 1 , cos 28 ϕ 8 = 1 , and sin 5 ϕ 8 = sin ϕ 8 , sin 6 ϕ 8 = 1 , sin 7 ϕ 8 = sin ϕ 8 , sin 10 ϕ 8 = 1 , sin 12 ϕ 8 = 0 , sin 14 ϕ 8 = 1 , sin 15 ϕ 8 = sin ϕ 8 , sin 18 ϕ 8 = 1 , sin 20 ϕ 8 = 0 , sin 21 ϕ 8 = sin ϕ 8 , sin 24 ϕ 8 = 0 , sin 25 ϕ 8 = sin ϕ 8 , sin 28 ϕ 8 = 0 , sin 30 ϕ 8 = 1 , sin 35 ϕ 8 = sin ϕ 8 , sin 36 ϕ 8 = 0 , sin 42 ϕ 8 = 1 , sin 49 ϕ 8 = sin ϕ 8 , so the R 8 matrix will take the form
R 8 = 1 1 1 1 1 1 1 1 1 cos ϕ 8 0 cos ϕ 8 1 cos ϕ 8 0 cos ϕ 8 1 0 1 0 1 0 1 0 1 cos ϕ 8 0 cos ϕ 8 1 cos ϕ 8 0 cos ϕ 8 1 1 1 1 1 1 1 1 0 sin ϕ 8 1 sin ϕ 8 0 sin ϕ 8 1 sin ϕ 8 0 1 0 1 0 1 0 1 0 sin ϕ 8 1 sin ϕ 8 0 sin ϕ 8 1 sin ϕ 8
When we calculate the product of this matrix by the input vector x 8 we obtain
y 0 y 1 y 2 y 3 y 4 y 5 y 6 y 7 = [ ( x 0 + x 4 ) + ( x 2 + x 6 ) ] + [ ( x 1 + x 7 ) + ( x 3 + x 5 ) ] ( x 0 x 4 ) + cos ϕ 8 [ ( x 1 + x 7 ) ( x 3 + x 5 ) ] ( x 0 + x 4 ) ( x 2 + x 6 ) ( x 0 x 4 ) + cos ϕ 8 [ ( x 1 + x 7 ) + ( x 3 + x 5 ) ] [ ( x 0 + x 4 ) + ( x 2 + x 6 ) ] [ ( x 1 + x 7 ) + ( x 3 + x 5 ) ] ( x 2 x 6 ) + sin ϕ 8 [ ( x 1 x 7 ) ( x 3 x 5 ) ] ( x 1 x 7 ) ( x 3 x 5 ) ( x 2 x 6 ) + sin ϕ 8 [ ( x 1 x 7 ) + ( x 3 x 5 ) ]
Figure 6 shows a data-flow diagram corresponding to the calculation of the output vector y 8 , where d 3 = cos ϕ 8 and d 5 = sin ϕ 8 .
When the vector z 8 = a 8 + i b 8 of complex coefficients of DFT for the real input vector x 8 is needed, it can be easily obtained from the output vector y 8 of RDFT, according to (15)
a 8 = a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 = y 0 y 1 y 2 y 3 y 4 y 3 y 2 y 1 b 8 = b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7 = 0 y 7 y 6 y 5 0 y 5 y 6 y 7
The algorithm of the RDFT for N = 8 , presented in Figure 6, can be described by the following matrix–vector procedure, in which the matrix R 8 has been factorized:
y 8 = C 8 D 8 A ˜ 8 A ¯ 8 A ^ 8 x 8
where
A ^ 8 = 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 A ¯ 8 = 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1
A ˜ 8 = 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 D 8 = 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 d 3 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 d 5 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
C 8 = 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0
According to this algorithm we need only 20 additions and 2 multiplications of real numbers to calculate the output vector y 8 .

9. RDFT Algorithm for N = 9

For N = 9 , the Equation (17) will take the form
y 9 = R 9 x 9
where
R 9 = 1 1 1 × 4 1 1 × 4 1 4 × 1 A 4 B 4 0 4 × 1 C 4 D 4
and 1 n × k , 0 n × k are n by k submatrices with all entries equal to 1 or 0, respectively. After applying the reduction formulas and taking advantage of the fact that cos 3 ϕ 9 = cos ( 6 π / 9 ) = 0.5 , the component submatrices can be written in the following forms:
A 4 = cos ϕ 9 cos 2 ϕ 9 0.5 cos 4 ϕ 9 cos 2 ϕ 9 cos 4 ϕ 9 0.5 cos ϕ 9 0.5 0.5 1 0.5 cos 4 ϕ 9 cos ϕ 9 0.5 cos 2 ϕ 9
B 4 = cos 4 ϕ 9 0.5 cos 2 ϕ 9 cos ϕ 9 cos ϕ 9 0.5 cos 4 ϕ 9 cos 2 ϕ 9 0.5 1 0.5 0.5 cos 2 ϕ 9 0.5 cos ϕ 9 cos 4 ϕ 9
C 4 = sin 4 ϕ 9 sin ϕ 9 sin 3 ϕ 9 sin 2 ϕ 9 sin 3 ϕ 9 sin 3 ϕ 9 0 sin 3 ϕ 9 sin 2 ϕ 9 sin 4 ϕ 9 sin 3 ϕ 9 sin ϕ 9 sin ϕ 9 sin 2 ϕ 9 sin 3 ϕ 9 sin 4 ϕ 9
D 4 = sin 2 ϕ 9 sin 3 ϕ 9 sin ϕ 9 sin 4 ϕ 9 sin 3 ϕ 9 0 sin 3 ϕ 9 sin 3 ϕ 9 sin ϕ 9 sin 3 ϕ 9 sin 4 ϕ 9 sin 2 ϕ 9 sin 4 ϕ 9 sin 3 ϕ 9 sin 2 ϕ 9 sin ϕ 9
It is easy to see that the matrix B 4 can be obtained from the matrix A 4 by reversing the order of its columns, and the matrix D 4 is the opposite matrix to the matrix obtained from C 4 by reversing the order of its columns. When we calculate the product of the matrix R 9 by the input vector x 9 we obtain
y 0 y 1 y 2 y 3 y 4 y 5 y 6 y 7 y 8 = [ x 0 + ( x 3 + x 6 ) ] + [ ( x 1 + x 8 ) + ( x 2 + x 7 ) + ( x 4 + x 5 ) ] [ x 0 0.5 ( x 3 + x 6 ) ] + cos ϕ 9 [ ( x 1 + x 8 ) ] + cos 2 ϕ 9 [ ( x 2 + x 7 ) ] + cos 4 ϕ 9 [ ( x 4 + x 5 ) ] [ x 0 0.5 ( x 3 + x 6 ) ] + cos 2 ϕ 9 [ ( x 1 + x 8 ) ] + cos 4 ϕ 9 [ ( x 2 + x 7 ) ] + cos ϕ 9 [ ( x 4 + x 5 ) ] [ x 0 + ( x 3 + x 6 ) ] 0.5 [ ( x 1 + x 8 ) + ( x 2 + x 7 ) + ( x 4 + x 5 ) ] [ x 0 0.5 ( x 3 + x 6 ) ] + cos 4 ϕ 9 [ ( x 1 + x 8 ) ] + cos ϕ 9 [ ( x 2 + x 7 ) ] + cos 2 ϕ 9 [ ( x 4 + x 5 ) ] sin 3 ϕ 9 [ ( x 3 x 6 ) ] sin 2 ϕ 9 [ ( x 4 x 5 ) ] sin ϕ 9 [ ( x 2 x 7 ) ] + sin 4 ϕ 9 [ ( x 1 x 8 ) ] sin 3 ϕ 9 [ ( x 4 x 5 ) ( x 2 x 7 ) + ( x 1 x 8 ) ] sin 3 ϕ 9 [ ( x 3 x 6 ) ] sin ϕ 9 [ ( x 4 x 5 ) ] + sin 4 ϕ 9 [ ( x 2 x 7 ) ] + sin 2 ϕ 9 [ ( x 1 x 8 ) ] sin 3 ϕ 9 [ ( x 3 x 6 ) ] + sin 4 ϕ 9 [ ( x 4 x 5 ) ] + sin 2 ϕ 9 [ ( x 2 x 7 ) ] + sin ϕ 9 [ ( x 1 x 8 ) ]
To better understand the construction of the RDFT algorithm for N = 9 , we will introduce the notations t 1 = x 1 + x 8 , t 2 = x 2 + x 7 , t 3 = x 3 + x 6 , t 4 = x 4 + x 5 , t 5 = x 4 x 5 , t 6 = x 3 x 6 , t 7 = x 2 x 7 , t 8 = x 1 x 8 and consider the sub-blocks of the output vector y 8 . The first sub-block is
y 1 y 2 y 4 = x 0 0.5 t 3 x 0 0.5 t 3 x 0 0.5 t 3 + cos ϕ 9 cos 2 ϕ 9 cos 4 ϕ 9 cos 2 ϕ 9 cos 4 ϕ 9 cos ϕ 9 cos 4 ϕ 9 cos ϕ 9 cos 2 ϕ 9 t 1 t 2 t 4 =
= x 0 0.5 t 3 x 0 0.5 t 3 x 0 0.5 t 3 + 1 1 1 0 1 1 0 1 1 0 1 1 d 5 0 0 0 0 d 6 0 0 0 0 d 7 0 0 0 0 d 8 1 1 1 1 0 1 0 1 1 1 1 0 t 1 t 2 t 4
where d 5 = 1 3 ( cos ϕ 9 + cos 2 ϕ 9 + cos 4 ϕ 9 ) , d 6 = 1 3 ( 2 cos ϕ 9 cos 2 ϕ 9 cos 4 ϕ 9 ) , d 7 = 1 3 ( cos ϕ 9 + 2 cos 2 ϕ 9 cos 4 ϕ 9 ) , d 8 = 1 3 ( cos ϕ 9 cos 2 ϕ 9 + 2 cos 3 ϕ 9 ) .
The second sub-block is
y 5 y 7 y 8 = t 4 sin 3 ϕ 9 t 4 sin 3 ϕ 9 t 4 sin 3 ϕ 9 + sin 2 ϕ 9 sin ϕ 9 sin 4 ϕ 9 sin ϕ 9 sin 4 ϕ 9 sin 2 ϕ 9 sin 4 ϕ 9 sin 2 ϕ 9 sin ϕ 9 t 5 t 7 t 8 =
= t 4 sin 3 ϕ 9 t 4 sin 3 ϕ 9 t 4 sin 3 ϕ 9 + 1 1 1 0 1 1 0 1 1 0 1 1 d 9 0 0 0 0 d 10 0 0 0 0 d 11 0 0 0 0 d 12 1 1 1 1 0 1 0 1 1 1 1 0 t 5 t 7 t 8
where d 9 = 1 3 ( sin ϕ 9 sin 2 ϕ 9 + sin 4 ϕ 9 ) , d 10 = 1 3 ( sin ϕ 9 2 sin 2 ϕ 9 sin 4 ϕ 9 ) , d 11 = 1 3 ( 2 sin ϕ 9 + sin 2 ϕ 9 sin 4 ϕ 9 ) , d 12 = 1 3 ( sin ϕ 9 + sin 2 ϕ 9 + 2 sin 4 ϕ 9 ) .
Figure 7 shows a data flow diagram corresponding to the calculation of the output vector y 9 , where d 13 = d 14 = sin 3 ϕ 9 .
When the vector z 9 = a a + i b 9 of complex coefficients of DFT for the real input vector x 9 is needed, it can be easily obtained from the output vector y 9 of RDFT, according to (16)
a 9 = a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 = y 0 y 1 y 2 y 3 y 4 y 4 y 3 y 2 y 1 b 7 = b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7 b 8 = 0 y 8 y 7 y 6 y 5 y 5 y 6 y 7 y 8
The algorithm of the RDFT for N = 9 , presented in Figure 7, can be described by the following matrix–vector procedure, in which the matrix R 9 has been factorized:
y 9 = C 9 × 11 C ˜ 11 × 15 D 15 A ˜ 15 × 11 A ¯ 11 × 9 A ^ 9 x 9
where
A ^ 9 = 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1
A ¯ 11 × 9 = 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0
A ˜ 15 × 11 = 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0
D 15 = 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d 14
C ˜ 11 × 15 = 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
C 9 × 11 = 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0
According to this algorithm, we need only 36 additions and 10 multiplications (and 2 shifts) of real numbers to calculate the output vector y 9 .

10. Discussion

Table 1 compares the number of multiplications (×) and additions (+) of real numbers necessary to determine the DFTs for real data vectors according to the proposed algorithms and Winograd’s algorithms designed specifically for small data lengths N. We compare our solutions with the corresponding Winograd’s algorithms because although these solutions are quite old they are the best in terms of multiplicative complexity. It should be remembered that the hardware multiplier is a very resource-intensive unit. The multiplier is the most resource-intensive and energy-consuming arithmetic unit, occupying a large area of the chip and dissipating a lot of power. Therefore, the use of complex and resource-intensive FPGAs containing a large number of multipliers without a special need is impractical. They use more power, take up more PCB space, and generate more heat than simpler chips. Thus, using less sophisticated chips and lower thermal management overheads translates into reduced processor size, weight, power consumption, and cost, as well as increased reliability as an added benefit.
The advantage of the presented Winograd-type algorithms in comparison with the Cooley–Tukey algorithms is that the critical path in the graph of any of the obtained algorithms contains only one multiplication. If there is more than one multiplication in the critical path of the algorithm, then this will create additional problems for the implementation of computations. As a result of multiplying two n-bit operands, a 2 n -bit product is obtained. The need for repeated multiplication requires an additional amount of manipulations with the operands and therefore requires more time and effort than when we are dealing with only a single multiplication.
It is easy to observe that the numbers of necessary multiplications are the same for the proposed algorithms as in Winograd’s algorithms, but the number of needed additions is smaller in the case of the solutions presented in the article. It must be said that the difference in the number of addition operations for the compared solutions is minimal and is not the main trump card of our paper. Our main goal was to reveal those aspects and features of the organization of calculations of small-size real-valued DFTs that were not disclosed in the available literature.

11. Conclusions

The paper presents a complete set of algorithms for real short-length RDFTs for N from 3 to 9. The corresponding signal flow graphs are also presented. The structure of each such graph, if necessary, can be directly mapped to the VLSI structure. The described algorithms are written in matrix–vector notation, where RDFT matrices are factorized and the factors are sparse matrices. This factorization reduces the number of arithmetic operations. Although the presented algorithms do not have a repeating structure for different lengths of input vectors, in some cases they may be more applicable and convenient in terms of implementation. One way or another, the solutions proposed by us are original and may be helpful. It should be emphasized that the diversity of existing approaches to the optimization of calculations cannot serve as an argument for stopping the search for new solutions, which may be more effective from the point of view of previously neglected criteria. Therefore, any rational approach to solving the current problem has the right to exist because each new look and each new solution of a known issue, which was previously solved by another method, stimulates the development of theory and practice, expands and deepens our knowledge in the relevant field of science or technology and, at least from this point of view, is helpful.

Author Contributions

Conceptualization, A.C.; methodology, A.C. and D.M.-M.; formal analysis, D.M.-M.; writing—original draft preparation, D.M.-M.; writing—review and editing, D.M.-M.; visualization, D.M.-M.; supervision, A.C. All authors have read and agreed to the published version of the manuscript.

Funding

This research received no external funding.

Institutional Review Board Statement

Not applicable.

Informed Consent Statement

Not applicable.

Data Availability Statement

Not applicable.

Conflicts of Interest

The authors declare no conflict of interest.

Abbreviations

The following abbreviations are used in this manuscript:
DFTdiscrete Fourier transform
FFTfast Fourier transform
RDFTreal discrete Fourier transform
FPGAfield programmable gate array
PCBprinted circuit board
VLSIvery large-scale integration

References

  1. Blahut, R.E. Fast Algorithms for Signal Processing; Cambridge University Press: New York, NY, USA, 2010. [Google Scholar]
  2. Pratt, W.K. Digital Image Processing; John Wiley and Sons, Inc.: New York, NY, USA, 1991. [Google Scholar]
  3. McClellan, J.H.; Rader, C.M. Number Theory in Digital Signal Processing; Prentice-Hall, Inc.: Englewood Cliffs, NJ, USA, 1979. [Google Scholar]
  4. Nussbaumer, H.J. Fast Fourier Transform and Convolution Algorithms; Springer: Berlin/Heidelberg, Germany, 1982. [Google Scholar]
  5. Burrus, S.; Parks, T.W.; Potts, J.F. DFT/FFT and Convolution: Algorithms and Implementation; John Wiley & Sons: New York, NY, USA, 1985. [Google Scholar]
  6. Garg, H.K. Digital Signal Processing Algorithms: Number Theory, Convolution, Fast Fourier Transforms, and Applications; CRC Press: Boca Raton, FL, USA, 1998. [Google Scholar]
  7. Bi, G.; Zeng, Y. Transforms and Fast Algorithms for Signal Analysis and Representations; Birkhäuser: Basel, Switzerland, 2004. [Google Scholar]
  8. Cooley, J.W.; Tukey, J.W. An algorithm for the machine calculation of complex Fourier series. Math. Comput. 1965, 19, 297–301. [Google Scholar] [CrossRef]
  9. Gold, B.; Rader, C.M. Digital Processing of Signals; McGraw-Hill: New York, NY, USA, 1969. [Google Scholar]
  10. Rabiner, L.R.; Gold, B. Theory and Application of Digital Signal Processing; Prentice Hall: Englewood Cliff, NJ, USA, 1975. [Google Scholar]
  11. Bogner, R.E.; Constantinides, A.G. Introduction to Digital Filtering; John Wiley & Sons: New York, NY, USA, 1975. [Google Scholar]
  12. Voronenko, Y.; Püschel, M. Algebraic Signal Processing Theory: Cooley-Tukey Type Algorithms for Real DFTs. IEEE Trans. Signal Process. 2009, 57, 205–222. [Google Scholar] [CrossRef]
  13. Martens, J.-B. Discrete Fourier transform algorithms for real valued sequences. IEEE Trans. ASSP 1984, 32, 390–396. [Google Scholar] [CrossRef]
  14. Hu, N.-C.; Ersoy, O.K. Fast computation of real discrete Fourier transform for any number of data points. IEEE Trans. Circuits Syst. 1991, 38, 1280–1292. [Google Scholar] [CrossRef]
  15. Murakami, H. Real-valued decimation-in-time and decimation-in-frequency algorithms. IEEE Trans. Circuits Syst. II Analog. Digit. Signal Process. 1994, 41, 808–816. [Google Scholar] [CrossRef]
  16. Murakami, H. Real-valued fast discrete Fourier transform and cyclic convolution algorithms of highly composite even length. In Proceedings of the 1996 IEEE International Conference on Acoustics, Speech, and Signal Processing Conference Proceedings, Atlanta, GA, USA, 9 May 1996; Volume 3, pp. 1311–1314. [Google Scholar]
  17. Sorensen, H.V.; Jones, D.L.; Heideman, M.T.; Burrus, C.S. A split-radix real-valued fast Fourier transform. In Proceedings of the 3rd European Signal Processing Conference, The Hague, The Netherlands, 2–5 September 1986; pp. 287–290. [Google Scholar]
  18. Sorensen, H.V.; Jones, D.L.; Heideman, M.T.; Burrus, C.S. Realvalued fast Fourier transform algorithms. IEEE Trans. ASSP 1987, 35, 849–863. [Google Scholar] [CrossRef] [Green Version]
  19. Uniyal, P.R. Transforming real-valued sequences: Fast Fourier versus fast Hartley transform algorithms. IEEE Trans. Signal Process. 1994, 42, 3249–3254. [Google Scholar] [CrossRef]
  20. Vernet, J.L. Real signals fast Fourier transform: Storage capacity and step number reduction by means of an odd discrete Fourier transform. Proc. IEEE 1971, 59, 1531–1532. [Google Scholar] [CrossRef]
  21. Heideman, M.T.; Burrus, C.S.; Johnson, H.W. Prime factor FFT algorithms for real-valued series. In Proceedings of the ICASSP’84—IEEE International Conference on Acoustics, Speech, and Signal Processing, San Diego, CA, USA, 19–21 March 1984; pp. 28A.7.1–28A.7.4. [Google Scholar]
  22. Bergland, G.D. A fast Fourier transform algorithm for real-valued series. Commun. ACM 1968, 11, 703–710. [Google Scholar] [CrossRef]
  23. Bergland, G.D. A radix-eight fast Fourier transform subroutine for real-valued series. IEEE Trans. Audio Electroacoust. 1969, 17, 138–144. [Google Scholar] [CrossRef]
  24. Kumaresan, R.; Gupta, P.K. A prime factor FFT algorithm with real valued arithmetic. Proc. IEEE 1985, 73, 1241–1243. [Google Scholar] [CrossRef]
  25. Ersoy, O.K. Real discrete Fourier transform. IEEE Tran. Acoust. Speech Signal Process. 1985, 33, 880–882. [Google Scholar] [CrossRef]
  26. Ersoy, O.K.; Hu, N.C. Fast algorithms for the real discrete Fourier transform. In Proceedings of the ICASSP-88, International Conference on Acoustics, Speech, and Signal Processing, New York, NY, USA, 11–14 April 1988; Volume 3, pp. 1902–1905. [Google Scholar]
  27. Sundararajan, D.; Ahmad, M.O.; Swamy, M.N.S. Fast computation of the discrete Fourier transform of real data. IEEE Trans. Signal Process. 1997, 45, 2010–2022. [Google Scholar] [CrossRef]
  28. Parsons, T.W. A Winograd-Fourier transform algorithm for real valued data. IEEE Trans. Acoust. Speech Signal Process. 1979, 27, 398–402. [Google Scholar] [CrossRef]
  29. Sekhar, B.R.; Prabhu, K.M.M. Radix-2 decimation in frequency algorithm for the computation of the real-valued FFT. IEEE Trans. Signal Process. 1999, 47, 1181–1184. [Google Scholar] [CrossRef]
  30. Yin, X.; Yu, F.; Ma, Z. Resource-efficient pipelined architectures for radix-2 real-valued FFT with real datapaths. IEEE Trans. Circuits Syst. II Express Briefs 2016, 63, 803–807. [Google Scholar] [CrossRef]
  31. Chi, H.-F.; Lai, Z.-H. A cost-effective memory-based real-valued FFT and Hermitian symmetric IFFT processor for DMT-based wire-line transmission systems. In Proceedings of the 2005 IEEE International Symposium on Circuits and Systems (ISCAS), Kobe, Japan, 23–26 May 2005; Volume 6, pp. 6006–6009. [Google Scholar]
  32. Garrido, M.; Parhi, K.K.; Grajal, J. A pipelined FFT architecture for real-valued signals. IEEE Trans. Circuits Syst. I Reg. Pap. 2009, 56, 2634–2643. [Google Scholar] [CrossRef] [Green Version]
  33. Ayinala, M.; Parhi, K.K. Parallel-pipelined radix-22 FFT architecture for real valued signals. In Proceedings of the 2010 Conference Record of the Forty Fourth Asilomar Conference on Signals, Systems and Computers, Pacific Grove, CA, USA, 7–10 November 2010; pp. 1274–1278. [Google Scholar]
  34. Ayinala, M.; Lao, Y.; Parhi, K.K. An in-place FFT architecture for real-valued signals. IEEE Trans. Circuits Syst. II Exp. Briefs 2013, 60, 652–656. [Google Scholar] [CrossRef]
  35. Ayinala, M.; Parhi, K.K. FFT architectures for real-valued signals based on radix- 23 and radix-24 algorithms. IEEE Trans. Circuits Syst. I Reg. Pap. 2013, 60, 2422–2430. [Google Scholar] [CrossRef]
  36. Salehi, S.A.; Amirfattahi, R.; Parhi, K.K. Pipelined architectures for real-valued FFT and Hermitian-symmetric IFFT with real datapaths. IEEE Trans. Circuits Syst. II Exp. Briefs 2013, 60, 507–511. [Google Scholar] [CrossRef]
  37. Lao, Y.; Parhi, K.K. Canonic composite length real-valued FFT. J. Signal Process. Syst. 2018, 90, 1401–1414. [Google Scholar] [CrossRef]
  38. Zode, P.; Thor, A.; Deshmukh, A.Y. Folded FFT architecture for real-valued signals based on radix-23 algorithm. In Proceedings of the 2014 2nd International Conference on Devices, Circuits and Systems (ICDCS), Coimbatore, India, 6–8 March 2014; pp. 1–4. [Google Scholar]
  39. Mao, X.B.; Ma, Z.G.; Yu, F.; Xing, Q.J. A continuous-flow memory-based architecture for real-valued FFT. IEEE Trans. Circuits Syst. II Express Briefs 2017, 64, 1352–1356. [Google Scholar] [CrossRef]
  40. Yuan, M.; Ma, Z.; Yu, F.; Xing, Q. A novel address scheme for continuous-flow parallel memory-based real-valued FFT processor. Electronics 2019, 8, 1042. [Google Scholar] [CrossRef] [Green Version]
  41. Wiechno, T.; Yatsymirskyy, M. Two-stage fast Fourier and Hartley transform of real data sequence. Prz. Elektrotech. 2010, 86, 41–43. [Google Scholar]
Figure 1. Data-flow diagram of the RDFT algorithm for N = 3 .
Figure 1. Data-flow diagram of the RDFT algorithm for N = 3 .
Applsci 12 04700 g001
Figure 2. Data-flow diagram of the RDFT algorithm for N = 4 .
Figure 2. Data-flow diagram of the RDFT algorithm for N = 4 .
Applsci 12 04700 g002
Figure 3. Data-flow diagram of the RDFT algorithm for N = 5 .
Figure 3. Data-flow diagram of the RDFT algorithm for N = 5 .
Applsci 12 04700 g003
Figure 4. Data flow diagram of the RDFT algorithm for N = 6 .
Figure 4. Data flow diagram of the RDFT algorithm for N = 6 .
Applsci 12 04700 g004
Figure 5. Data-flow diagram of the RDFT algorithm for N = 7 .
Figure 5. Data-flow diagram of the RDFT algorithm for N = 7 .
Applsci 12 04700 g005
Figure 6. Data flow diagram of the RDFT algorithm for N = 8 .
Figure 6. Data flow diagram of the RDFT algorithm for N = 8 .
Applsci 12 04700 g006
Figure 7. Data–flow diagram of the RDFT algorithm for N = 9 .
Figure 7. Data–flow diagram of the RDFT algorithm for N = 9 .
Applsci 12 04700 g007
Table 1. Comparison of the number of arithmetic operations for the proposed algorithms and Winograd’s algorithms described in [1].
Table 1. Comparison of the number of arithmetic operations for the proposed algorithms and Winograd’s algorithms described in [1].
NProposed SolutionWinograd’s Small-Lengths DFTs
×+×+
32426
40608
5513517
6414--
7830836
8220226
910361044
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Share and Cite

MDPI and ACS Style

Majorkowska-Mech, D.; Cariow, A. Some FFT Algorithms for Small-Length Real-Valued Sequences. Appl. Sci. 2022, 12, 4700. https://doi.org/10.3390/app12094700

AMA Style

Majorkowska-Mech D, Cariow A. Some FFT Algorithms for Small-Length Real-Valued Sequences. Applied Sciences. 2022; 12(9):4700. https://doi.org/10.3390/app12094700

Chicago/Turabian Style

Majorkowska-Mech, Dorota, and Aleksandr Cariow. 2022. "Some FFT Algorithms for Small-Length Real-Valued Sequences" Applied Sciences 12, no. 9: 4700. https://doi.org/10.3390/app12094700

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop