# Improvement of Fast Simplified Successive-Cancellation Decoder for Polar Codes
## 3 Proposed Method
### Detailed Description
If the \(\mathbf{\beta}_{v}\) values of all frozen leaf nodes are zero, the FC condition is satisfied. Then, the local process at this R-other node can be simplified to that of an R-1 node and the sub-tree surrounded by the grey box in Figure 3a can be pruned, forming a Fast-ISSC pruned tree. The result is shown in Figure 3b. Otherwise, the local process still follows the SC decoding rules. ```
1:\(T\), \(\mathbf{F}\)
2:\(m=\log_{2}N\)
3:\(T_{m}[j].Flag=1\); // \(f_{j}==1\)
4:\(T_{m}[j].Flag=2\); // \(f_{j}==0\)
5:for\(i=m-1\) down to 0 do
6:\(K=2^{i}\)
7:for\(j=0\) to \(K-1\)do
8:\(l=T_{i}[j].left;r=T_{i}[j].right\)
9:if\(T_{i+1}[l].Flag==1\) and \(T_{i+1}[r].Flag==1\)then
10:\(T_{i}[j].Flag=1\) // R-0 code
11:elseif\(T_{i+1}[l].Flag==2\) and \(T_{i+1}[r].Flag==2\)then
12:\(T_{i}[j].Flag=2\) // R-1 code
13:elseif\(T_{i+1}[l].Flag==1\) and \(T_{i+1}[r].Flag==2\) and \(K==N/2\)then
14:\(T_{i}[j].Flag=4\)//Rep code, length = 2
15:elseif\(T_{i+1}[l].Flag==4\) and \(T_{i+1}[r].Flag==2\)then
16:\(T_{i}[j].Flag=5\) //SPC code, length = 4
17:elseif\(T_{i+1}[l].Flag==5\) and \(T_{i+1}[r].Flag==2\)then
18:\(T_{i}[j].Flag=5\) //SPC code, length > 4
19:elseif\(T_{i+1}[l].Flag==1\) and \(T_{i+1}[r].Flag==4\)then
20:\(T_{i}[j].Flag=6\) //Rep code, length = 4
21:elseif\(T_{i+1}[l].Flag==1\) and \(T_{i+1}[r].Flag==6\)then
22:\(T_{i}[j].Flag=6\) //Rep code, length > 4
23:else
24:\(T_{i}[j].Flag=3\) //R-other node
25:endif
26:endfor
```  
**Algorithm 2**Node state initialization. ```
1:\(\mathbf{\alpha}_{v}\), \(\min\Pi_{v}\), \(\max\Pi_{v}\), \(F\)
2:\(Flag\_check\), \(\hat{\mathbf{\beta}}_{v}\)
3:\(\hat{\mathbf{\beta}}_{v}=\text{h}(\mathbf{\alpha}_{v})\); \(\hat{\mathbf{\mu}}=\hat{\mathbf{\beta}}_{v}\hat{\mathbf{G}}_{m-d_{v}}\)
4:\(sum=0\)
5:for\(i=\min\Pi_{v}\) to \(\max\Pi_{v}\)do
6:if\(f_{i}==1\)then
7:if\(\hat{\mathbf{\hat{\mu}}}_{i}\
eq 0\)then
8:\(sum=sum+1\)
9:endif
10:endif
11:endfor
12:if\(sum==0\)then
13:\(Flag\_check\) = 1
14:endif
```  
**Algorithm 3**Frozen-bit check (FC). Algorithm 3 summarizes the FC procedure implemented on the R-other nodes. The initialization value of Flag_check is set to zero, and indicates whether the FC is successful. Bit estimates: If the current node is a right node, its \(\mathbf{\beta}_{v}\) is passed to its parent, where it is combined with the \(\mathbf{\beta}_{v}\) of the brother node and passed through the upper level until the root node is reached. The process for calculation of \(\mathbf{\beta}_{v}\) is given in Algorithm 4. The systematic polar code is adopted in this paper, as it is well suited to a fast decoder; the root node \(\mathbf{\beta}_{v}\) constitutes the decoder output. In the case of systematic polar codes, in addition to improvement of the bit error rate (BER), it is not necessary to apply an inverse transformation on \(\mathbf{\beta}_{v}\), unlike in the case of non-systematic polar codes. ```
1:Data: current node \(T_{\lambda}[index]\)
2:\(parent=\left\lfloor\frac{index}{2}\right\rfloor\)
3:if\(index\) is odd then
4:if\(i\) is even then
5:\(\mathbf{\beta}_{v}[2i-1]=\mathbf{\beta}_{v_{\gamma}}[i]\oplus\mathbf{\beta}_{v_{\gamma}}[i]\)
6:else
7:\(\mathbf{\beta}_{v}[2i]=\mathbf{\beta}_{v_{\gamma}}[i]\)
8:endif
9:endif
10:if\(parent\) is odd then
11:Beta_Compute \((T_{\lambda-1}[parent])\)
12:endif
```  
**Algorithm 4**Beta_compute \((T_{\lambda}[index])\).