Generic processing function, it works both for variable- and for check- nodes - for variable nodes, f_plus_kind is a simple addition routine - for check nodes, f_plus_kind can be: + the "box plus" for exact message passing + the min abs with sign product for the min-sum algorithm + whatever you want for your approximation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(TEdgeList), | intent(in) | :: | buffer_c_to_e |
List of edges connected to the current check node |
||
| real(kind=wp), | intent(inout) | :: | m_inout(:) |
Input messages, updated with the output messages |
||
| type(TEdgeList), | intent(in) | :: | buffer_c_to_v |
List of variable nodes connected to the current check node |
||
| real(kind=wp), | intent(inout) | :: | llr_updated(:) |
LLRs to read and update |
||
| logical, | intent(in) | :: | s |
Syndrome value of the current check node |
||
| real(kind=wp), | intent(inout), | optional, | target | :: | B_buffer(2:buffer_c_to_v%N) |
pre-allocated backwords buffer for partial message processing results |
| real(kind=wp), | intent(inout), | optional, | target | :: | F_buffer(buffer_c_to_v%N-1) |
pre-allocated forward buffer for partial message processing results |