process_xnode Subroutine

public subroutine process_xnode(buffer_x_to_y, Ne, m_in, m_out, f_plus_kind, total, B_buffer, F_buffer)

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

Arguments

Type IntentOptional 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


Called by

proc~~process_xnode~~CalledByGraph proc~process_xnode process_xnode proc~process_cnode process_cnode proc~process_cnode->proc~process_xnode proc~process_vnode process_vnode proc~process_vnode->proc~process_xnode proc~decode TDecoder%decode proc~decode->proc~process_cnode proc~decode->proc~process_vnode