LDPC Decoder object
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | cnum | 
                 Number of Check Nodes  | 
        |||
| integer, | public | :: | vnum | 
                 Number of variable nodes  | 
        |||
| integer, | public | :: | Ne | 
                 Number of edges  | 
        |||
| type(TEdgeList), | public, | allocatable | :: | c_to_e(:) | 
                 For each check node, the list of its connected edges  | 
        ||
| type(TEdgeList), | public, | allocatable | :: | v_to_e(:) | 
                 For each variable node, the list of its connected edges  | 
        ||
| type(TEdgeList), | public, | allocatable | :: | c_to_v(:) | 
                 For each check node, the list of its connected variable nodes  | 
        ||
| type(TEdgeList), | public, | allocatable | :: | v_to_c(:) | 
                 For each variable node, the list of its connected check nodes  | 
        ||
| real(kind=wp), | public, | allocatable | :: | B_buffer(:) | 
                 Support buffer for node processing (backwards partial results)  | 
        ||
| real(kind=wp), | public, | allocatable | :: | F_buffer(:) | 
                 Support buffer for node processing (forward partial results)  | 
        
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | N | 
 Number of edges  | 
        ||
| integer, | intent(in) | :: | e_to_v(N) | 
 each location contains the index of the variable node connected to the edge corresponding to that location  | 
        ||
| integer, | intent(in) | :: | e_to_c(N) | 
 each location contains the index of the check node connected to the edge corresponding to that location  | 
        
The resulting Decoder object
Destructor method for the TDecoder object It will just deallocate whatever was allocated.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(TDecoder) | :: | decoder | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(TDecoder) | :: | this | 
Check the array of LLRs (or LAPPRs) against the syndrome
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(TDecoder) | :: | this | 
 Decoder  | 
        |||
| real(kind=wp), | intent(in) | :: | llr(this%vnum) | 
 Array of LLR (or LAPPR)  | 
        ||
| logical, | intent(in) | :: | synd(this%cnum) | 
 Syndrome  | 
        
Evaluate the syndrome from a word
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(TDecoder) | :: | this | 
 Decoder  | 
        |||
| logical, | intent(in) | :: | word(this%vnum) | 
 Word  | 
        
Syndrome
Iteratively decode array of LLR (or LAPPRs) based on syndrome
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(TDecoder) | :: | this | 
 Decoder  | 
        |||
| real(kind=wp), | intent(in) | :: | llr_channel(this%vnum) | 
 Array of LLRs (or LAPPRs) obtained from the channel  | 
        ||
| real(kind=wp), | intent(out) | :: | llr_updated(this%vnum) | 
 Array of processed LLRs (or LAPPRs)  | 
        ||
| logical, | intent(in) | :: | synd(this%cnum) | 
 Syndrome  | 
        ||
| integer, | intent(inout) | :: | N_iterations | 
 Maximum number of iterations (in), actual number of iterations (out)  |