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_x_to_y |
List of edges "y" connected to node "x" |
||
integer, | intent(in) | :: | Ne |
Number of edges |
||
real(kind=wp), | intent(in) | :: | m_in(Ne) |
Input messages |
||
real(kind=wp), | intent(out) | :: | m_out(Ne) |
Output messages |
||
procedure(f_real_real) | :: | f_plus_kind |
Function with 2 real inputs and one real output used to perform the combination of input messages to output messages |
|||
real(kind=wp), | intent(out), | optional | :: | total |
f_plus_kind applied to all input messages |
|
real(kind=wp), | intent(inout), | optional, | target | :: | B_buffer(2:buffer_x_to_y%N) |
pre-allocated backwords buffer for partial message processing results |
real(kind=wp), | intent(inout), | optional, | target | :: | F_buffer(buffer_x_to_y%N-1) |
pre-allocated forward buffer for partial message processing results |