1- import numba
21import numpy as np
32
43from python_polar_coding .polar_codes .fast_ssc import FastSSCNode
54
6- # LLR = 1000 is high enough to be considered as +∞ for RC-SCAN decoding
7- INFINITY = 1000
5+ from .functions import compute_beta_one_node , compute_beta_zero_node
86
97
108class RCSCANNode (FastSSCNode ):
119
1210 def compute_leaf_beta (self ):
13- """Do nothing.
11+ """Do nothing for ZERO and ONE nodes .
1412
1513 Unlike SC-based decoders SCAN decoders does not make decisions
1614 in leaves.
1715
1816 """
17+ if self .is_zero or self .is_one :
18+ return
1919
2020 def initialize_leaf_beta (self ):
2121 """Initialize BETA values on tree building.
@@ -27,9 +27,9 @@ def initialize_leaf_beta(self):
2727 return
2828
2929 if self ._node_type == RCSCANNode .ZERO_NODE :
30- self ._beta = self . _compute_zero_node_beta (self .alpha )
30+ self ._beta = compute_beta_zero_node (self .alpha )
3131 if self ._node_type == RCSCANNode .ONE_NODE :
32- self ._beta = self . _compute_one_node_beta (self .alpha )
32+ self ._beta = compute_beta_one_node (self .alpha )
3333
3434 def get_node_type (self ):
3535 """Get the type of RC SCAN Node.
@@ -45,23 +45,3 @@ def get_node_type(self):
4545 if np .all (self ._mask == 1 ):
4646 return RCSCANNode .ONE_NODE
4747 return RCSCANNode .OTHER
48-
49- @staticmethod
50- @numba .njit
51- def _compute_zero_node_beta (llr ):
52- """Compute beta values for ZERO node.
53-
54- https://arxiv.org/pdf/1510.06495.pdf Section III.C.
55-
56- """
57- return np .ones (llr .size , dtype = np .double ) * INFINITY
58-
59- @staticmethod
60- @numba .njit
61- def _compute_one_node_beta (llr ):
62- """Compute beta values for ONE node.
63-
64- https://arxiv.org/pdf/1510.06495.pdf Section III.C.
65-
66- """
67- return np .zeros (llr .size , dtype = np .double )
0 commit comments