## 3 Proposed SAGE Estimation Algorithm
\begin{split}\mathrm{E}\Big{[}\tilde{x}_{S}^{(k)}(n_{2})\Big{]}= \sum_{m_{2}=-\alpha\psi\in\Omega}^{M-1}&\sum_{\alpha\in\Omega} \exp\Bigl{[}d_{S}^{(k)}(m_{2})=\alpha\Big{]}\mathbf{z}_{1}^{(k)},\mathbf{z}_{ 2}^{(k)},\widehat{\mathrm{H}}_{1}^{(k)}(\zeta),\widehat{\mathrm{H}}_{2}^{(k) }(\zeta)\Bigr{)}\,\Bigr{]},\\ &\times\exp(-j2\pi n_{2}\varphi(m_{2})/M)\end{split} \] (33) where \(\varphi(m_{2})\) is the subcarrier that modulates the \(m_{2}\)th data symbol of the \(g\)th block. As a result, the a posteriori expectation of the matrix \(\mathrm{S}^{(k)}=\Bigl{[}\mathcal{S}^{(k)}\mathcal{S}^{(k)\dagger}\Bigr{]}\), with \(\mathcal{S}^{(k)}\) being represented in (19), is determined by substituting each element in the matrix with the associated a posteriori expectation computed in (33). * Presuming that the information symbols are statistically independent, we can show that \(\mathbf{B}_{2}\) and \(\mathbf{B}_{4}\) are effectively described by \(\mathbf{B}_{1}^{\dagger}\mathbf{B}_{1}\) and \(\mathbf{B}_{3}^{\dagger}\mathbf{B}_{3}\). * Each time we update \(\widehat{\mathrm{H}}_{1}^{(k)}(\zeta)\) and \(\widehat{\mathrm{H}}_{2}^{(k)}(\zeta)\), we need to reevaluate the a posteriori probability \(\Pr\Bigl{[}d_{S}^{(k)}(m_{2})=\alpha\Big{]}\mathbf{z}_{1}^{(k)},\mathbf{z}_{2 }^{(k)},\widehat{\mathrm{H}}_{1}^{(k)}(\zeta),\widehat{\mathrm{H}}_{2}^{(k)}( \zeta)\Bigr{)}\,\Bigr{]}\). This requires a channel decoder reboot, which substantially increases the sophistication of the data processing. For this reason, we used the embedded estimating strategy [58; 69] to eliminate this complication cost. When \(\widehat{\mathrm{H}}_{1}^{(k)}(\zeta)\) and \(\widehat{\mathrm{H}}_{2}^{(k)}(\zeta)\) are updated, the channel decoder does not start again, but instead recalls the extrinsic and a priori probabilities from the last time it was run. The presented SAGE estimation method has lower costs in this context. * The preliminary measurements for \(\mathrm{H}_{1}^{(k)}\) and \(\mathrm{H}_{2}^{(k)}\) are deduced, employing (31a) and (31b), by assigning the matrices of the \(\mathbf{B}_{1}\) and \(\mathbf{B}_{3}\) to the contribution of the training symbols alone. * We provided an estimate of the computational load of the provided estimator in terms of the total number of floating-point operations (flps). Using the same methodology as that described in [21; 70; 71], we assumed that: the addition and multiplication of two complex numbers needs two and six flops, respectively; the multiplication of two complex matrices whose dimensions are \(\alpha_{1}\times\alpha_{2}\) and \(\alpha_{2}\times\alpha_{3}\) needs \(\delta\alpha_{1}\alpha_{2}\alpha_{3}\) flps; the addition/subtraction of two complex matrices, each with dimension \(\alpha_{1}\times\alpha_{2}\) requires \(2\alpha_{1}\alpha_{2}\) flps; and the inverse of a complex matrix with dimension \(\alpha_{1}\times\alpha_{1}\) needs \(\alpha_{3}^{3}\) flops. Using the preceding presumptions in (31b), the number of flps, \(\Lambda\), per iteration per user of the proposed approach is written as \[\Lambda = 2\alpha_{1}+8\alpha_{1}\alpha_{2}+5|\Omega|\alpha_{1}\alpha_{2}\] (34) \[+ \alpha_{2}^{3}+8\alpha_{2}^{2}+16\alpha_{1}\alpha_{2}.\]Here, \(\alpha_{1}=G(N+\
u)+L+2\approx GN\) and \(\alpha_{2}=3(L-1)\approx 3L\). Bearing in mind that \(\alpha_{1}\gg\alpha_{2}\), the approximated value \(\Lambda\) is  
\[\Lambda\quad\approx\alpha_{1}\alpha_{2}(1+5|\Omega|). \tag{35}\]  
We examined a quantitative case with \(G=10\), \(N=128\), \(|\Omega|=4\), and \(L=6\), with an FPGA capable of ten Teraflops of computing power. This produces a run-time of 0.22 _u_sec, which is rapid enough for the majority of applications.