cn_update_phi#

sionna.phy.fec.ldpc.cn_update_phi(msg_v2c: torch.Tensor, mask: torch.Tensor, llr_clipping: float | None = None) torch.Tensor[source]#

Check node update function implementing the boxplus operation.

This function implements the (extrinsic) check node update function based on the numerically more stable “_phi” function (cf. [Ryan]). It calculates the boxplus function over all incoming messages msg excluding the intrinsic (=outgoing) message itself. The exact boxplus function is implemented by using the “_phi” function as in [Ryan].

The function implements

\[y_{j \to i} = \alpha_{j \to i} \cdot \phi \left( \sum_{i' \in \mathcal{N}(j) \setminus i} \phi \left( |x_{i' \to j}|\right) \right)\]

where \(\phi(x)=-\operatorname{log}\left(\operatorname{tanh}\left(\frac{x}{2}\right)\right)\) and \(y_{j \to i}\) denotes the message from check node (CN) j to variable node (VN) i and \(x_{i \to j}\) from VN i to CN j, respectively. Further, \(\mathcal{N}(j)\) denotes all indices of connected VNs to CN j and

\[\alpha_{j \to i} = \prod_{i' \in \mathcal{N}(j) \setminus i} \operatorname{sign}(x_{i' \to j})\]

is the sign of the outgoing message. For further details we refer to [Ryan].

Note that for numerical stability clipping can be applied.

Parameters:
  • msg_v2c (torch.Tensor) – Tensor of shape [batch_size, num_nodes, max_degree] representing v2c messages.

  • mask (torch.Tensor) – Tensor of shape [num_nodes, max_degree] indicating valid edges.

  • llr_clipping (float | None) – Clipping value used for internal processing. If None, no internal clipping is applied.