# All-Integer Quantization for Low-Complexity Min-Sum Successive Cancellation Polar Decoder
## 2 Background and System Model
### Successive Cancellation Decoding Algorithm  
The underlying concept of the decoding algorithm, known as successive cancellation, focuses on enhancing the reliability of subsequent bits to retrieve the message from corrupted codewords. In order to estimate the decoded vector \(\hat{u}_{1}^{N}\), it is essential to calculate the random variables from the channel outputs as LLRs before commencing the decoding process. According to the SC decoder, the process consists of \(n+1\) stages and \(N\) levels. To consider each unit of the decoder, let \(i\in\{1,2,\ldots,N\}\) and \(j\in\{1,2,\ldots,n+1\}\). Within the SC decoding algorithm calculations, the LLR can be denoted as \(L_{ij}\). Let vector \(y_{1}^{N}\) be the  
Figure 1: Implementation of polar encoder with complexity \(O(N\log N)\).  
channel output. The initial LLR is denoted by \(L_{i,n+1}=\ln(\frac{P(\psi_{ii}=0)}{P(\psi_{ii}=1)})\), where \(\ln\) represents the natural logarithm. Prior to implementing the SC decoding algorithm, the initial LLR \(L_{i,n+1}\) needs to undergo rearrangement through bit-reversal permutation. The transition probabilities within the conventional SC decoding algorithm can be calculated using the following equations:  
\[L_{ij}=\begin{cases}f(L_{i,j+1},L_{i+2^{i-1}j+1}),&\lfloor\frac{i-1}{2^{i-1}} \rfloor\text{mod }2=0,\\ g(\hat{u}_{i-2^{i-1}j},L_{i-2^{i-1}j+1},L_{i,j+1}),&\text{otherwise},\end{cases} \tag{2}\]  
\[f(L_{a},L_{b})=2\tanh^{-1}\biggl{(}\tanh\biggl{(}\frac{L_{a}}{2}\biggr{)}\tanh \biggl{(}\frac{L_{b}}{2}\biggr{)}\biggr{)}, \tag{3}\]  
\[g(\hat{u}_{s},L_{c},L_{a})=(\ 1-2h_{s})\ \cdot(\ L_{c})\ +L_{a}, \tag{4}\]  
\[\hat{u}_{ij+1}=\begin{cases}\hat{u}_{ij}\oplus\hat{u}_{i+2^{i-1}j^{i}}\ \ \lfloor\frac{i-1}{2^{i-1}}\rfloor\text{mod}2=0,\\ \hat{u}_{ij},&\text{otherwise},\end{cases} \tag{5}\]  
where stage \(j\) and level \(i\) are represented by individual identifiers: \(a\), \(b\), \(c\), and \(s\). The identifier \(a\) is defined as \((i,j+1)\), \(b\) as \((i+2^{j-1},j+1)\), \(c\) as \((i-2^{j-1},j+1)\), and \(s\) as \((i-2^{j-1},j)\). The SC decoding algorithm is executed as a recursive process. Subsequently, the preceding bit is employed to update the transition probability in (4). To determine the updated bit corresponding to the prior decoded bit, refer to (5). The estimated bits \(\{\hat{u}_{1},\hat{u}_{2},\ldots,\hat{u}_{N}\}\) are sequentially determined using the following equation:  
\[\hat{u}_{i}=\begin{cases}0,&\text{if }L_{i,1}\geq 0\text{ and }i\in\mathcal{A},\\ 1,&\text{if }L_{i,1}<0\text{ and }i\in\mathcal{A},\\ u_{i}=0,&i\in\mathcal{A}^{c}.\end{cases} \tag{6}\]  
For finalizing the SC decoding process, the recovered information can be derived from \(\{\hat{u}_{1},\hat{u}_{2},\ldots,\hat{u}_{i},\ldots,\hat{u}_{N}\}\), where \(i\in\mathcal{A}\). In the context of hardware implementation, the \(g\) function in (4) primarily features an adder-subtracter influenced by the updated bit \(\hat{u}_{s}\). Conversely, the hardware complexity arises with the \(f\) function in (3). Despite this, approximating the \(f\) function can be achieved using a minimization function resembling techniques found in LDPC codes [20]. The \(f\) function can be approximated as  
\[f(L_{a},L_{b})\approx\text{sign}(L_{a})\text{sign}(L_{b})\text{min}(|L_{a}|,|L _{b}|). \tag{7}\]  
In comparison to conventional SC decoding, the performance of the min-sum algorithm for SC decoding, as discussed in [2], exhibits slight performance degradation for moderate code lengths and a larger gap for longer codes.