# Optical-OFDM VLC System: Peak-to-Average Power Ratio Enhancement and Performance Evaluation
## 3 Assessment Criteria Employed to Judge the Effectiveness of MCM Approaches
### Computational Complexity  
The concept of computational complexity relates to the number of operations needed for both the IFFT/FTT at the transmitter and receiver [45; 46]. Table 3 presents the computational complexity of the previously mentioned approaches [9; 22]. The ACO, Flip, and DCO-OFDM computational complexity is \(O(Nlog_{2}N)\) for both the transmitter and receiver. For ADO and two-layer LACO-OFDM, the transmitter complexity is \(2O(Nlog_{2}N)\), while the receiver complexity is \(3O(Nlog_{2}N)\). In the case of ASCO-OFDM and three-layer LACO-OFDM, the transmitter complexity is \(3O(Nlog_{2}N)\), and the receiver complexity is \(5O(Nlog_{2}N)\).  
The FFT operation typically exhibits a complexity of \(O(Nlog_{2}N)\) when using a standard Cooley-Tukey radix-2 FFT algorithm [22]. The IFFT operation is quite similar to the FFT, differing mainly in scaling factors, and it also has a complexity of \(O(Nlog_{2}N)\). The big \(O\) notation is a mathematical tool used to classify the limiting behavior of a function as its running time or resource usage scales with the input size. The number of multiplications and additions needed to compute the FFT/IFFT transform is often referred to as the computational hardware complexity. The quantities of multiplications \(M_{FFT/IFFT}\) and additions \(S_{FFT/IFFT}\) required to compute the real-valued FFT can be expressed as follows. However, the actual values for \(M_{FFT/IFFT}\) and \(S_{FFT/IFFT}\) would depend on the specific FFT/IFFT implementation and the size of the input data [9; 47].  
\[M_{FFT/IFFT}=N*log_{2}N-3N+4, \tag{30}\]  
\[S_{FFT/IFFT}=3N*log_{2}N-3N+4, \tag{31}\]  
\begin{table}
\begin{tabular}{c c c c} \hline \hline
**MCM TECHNIQUE** & **Complexity** & **TX** & **RX** \\ \hline DCO-OFDM & \(2\) O(Nlog\({}_{2}N\)) & O(Nlog\({}_{2}N\)) & O(Nlog\({}_{2}N\)) \\ \hline ACO-OFDM & \(2\) O(Nlog\({}_{2}N\)) & O(Nlog\({}_{2}N\)) & O(Nlog\({}_{2}N\)) \\ \hline FLIP-OFDM & \(2\) O(Nlog\({}_{2}N\)) & O(Nlog\({}_{2}N\)) & O(Nlog\({}_{2}N\)) \\ \hline ASCO-OFDM & \(8\) O(Nlog\({}_{2}N\)) & \(3\) O(Nlog\({}_{2}N\)) & \(5\) O(Nlog\({}_{2}N\)) \\ \hline ADO-OFDM & \(5\) O(Nlog\({}_{2}N\)) & \(2\) O(Nlog\({}_{2}N\)) & \(3\) O(Nlog\({}_{2}N\)) \\ \hline LACO,2-OFDM & \(5\) O(Nlog\({}_{2}N\)) & \(2\) O(Nlog\({}_{2}N\)) & \(3\) O(Nlog\({}_{2}N\)) \\ \hline LACO,3-OFDM & \(8\) O(Nlog\({}_{2}N\)) & \(3\) O(Nlog\({}_{2}N\)) & \(5\) O(Nlog\({}_{2}N\)) \\ \hline LACO,4-OFDM & \(11\) O(Nlog\({}_{2}N\)) & \(4\) O(Nlog\({}_{2}N\)) & \(7\) O(Nlog\({}_{2}N\)) \\ \hline \hline \end{tabular}
\end{table}
Table 3: The computational complexity of different O-OFDM approaches for both the transmitter and receiver components.  
These equations illustrate that the number of \(M_{\text{FFT}/IFFT}\) and \(S_{FFT/IFFT}\) for the FFT operations grow logarithmically with the input data size, which is a key characteristic of FFT's efficiency in handling large datasets. As the size of the FFT/IFFT increases, the computational complexity increases, as illustrated in Figure 10. Notably, this increase in computational demand aligns with an improvement in spectral efficiency, as depicted in Figure 8. As a result, the authors opted to use a 1024 FFT/IFFT size in their simulation analysis, as it represents an optimal choice that strikes a balance between obtaining high SE and minimizing computational complexity [43; 47].  
Figure 10: The computational complexities across different O-OFDM approaches with varying FFT/IFFT sizes at both the transmitter and receiver: (**a**) transmitter, (**b**) receiver, and (**c**) total computational complexity for the different approaches.  
Table 4 provides the number of the number of \(M_{FFT/IFFT}\) and \(S_{FFT/IFFT}\) operations for the mentioned schemes when the IFFT/FFT size is 1024. This table should clearly summarise the computational complexities of these techniques for this specific input size.