process_cnode_flood Subroutine

public subroutine process_cnode_flood(buffer_c_to_e, m_inout, buffer_c_to_v, llr_updated, s, 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_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