1. Introduction
PAC codes are a class of linear block codes designed to improve the performance of polar codes by combining channel polarization with convolutional coding [
1]. It has been shown that PAC codes can perform better than polar codes [
1], in some instances performing close to the theoretical limits for finite-length codes.
Given the potential of PAC codes for applications requiring extreme reliability at short block-lengths, it is of interest to investigate various aspects of PAC codes that may be important in practice. In this paper, we study systematic encoding and shortening of PAC codes. Systematic encoding is of interest mainly because it provides a better bit error rate (BER) performance compared to non-systematic encoding. Code shortening is important as a means of providing flexibility is choosing the code length. The BER advantage of systematic coding is illustrated in
Figure 1 for a PAC code of length
and rate
on an additive Gaussian noise channel with binary modulation. A better BER performance is important in concatenation schemes where an outer code corrects the bit errors left over by an inner PAC code.
In
Section 2, we give a definition of PAC codes and their non-systematic encoding. In
Section 3, we develop a method for systematic encoding of PAC codes. In
Section 4, we indicate how the systematic encoding method of
Section 3 can be used for shortening PAC codes.
Throughout, we restrict attention to PAC codes over the binary field . All algebraic operations are over vector spaces over . will denote row vectors of length N over and will denote matrices with N rows and M columns. For any and , let denote the subvector . For any , , and , let denote the matrix obtained after deleting the rows of not in and columns of not in . The notation denotes a vector or matrix all of whose elements are 0 and denotes an identity matrix.
2. PAC Codes
A PAC code over is a linear block code parametrized by where N is a code block length, K is a code dimension, is a data index set, is a frozen word, and is a convolution impulse response with , , with subject to design for . The data index set is a subset of with size . The parameter will be called the span of the impulse response . The span of any impulse response that we consider here will be bounded by the block length N. Sometimes, when the span cannot or need not be shown explicitly, we will write to denote an impulse response, with the understanding that for i greater than or equal to the span of .
An encoder for a PAC code encodes data words into codewords by computing a convolution followed by a polar transform. In the convolution step, a convolution input word is prepared by setting and , and a convolution is applied to to obtain a polar transform input word . ( denotes the complement of in .) In the polar transform step, the codeword is obtained by computing , where is the polar transform matrix, defined as the nth Kronecker power of a kernel matrix .
The convolution step
involves the computation
where
is interpreted as 0 if
. In the following analysis, we will represent the convolution alternatively as a linear transformation
where
is an upper-triangular Toeplitz matrix of the form
The first row of is determined by and the rows that follow are shifted versions of the first row. Please note that if then becomes the identity matrix and PAC codes contain polar codes as a special case. To exclude this possibility, PAC codes are often defined with the condition that . However, for purposes of the present paper, there is no need to place such a restriction on m.
The encoding operation for PAC codes can be defined more compactly by defining a generator matrix . Then, the encoder implements the mapping after preparing the vector in the same way as above. A direct implementation of the transform , without exploiting the structure in , has complexity , while the two-step encoder described above has complexity for the convolution operation and for the polar transform. Since PAC codes typically have , the complexity of implementing using the triangular factorization results in significant cost savings. Below, as we develop a systematic PAC encoder, we will exploit this triangular factorization for reducing complexity.
3. Systematic Encoding
The above encoder for a PAC code is non-systematic in the sense that the data word does not appear transparently as part of the codeword . The goal in this paper is to give a systematic encoding method so that there is a subset of coordinates such that .
We will consider instances of the systematic encoding problem for PAC codes that are characterized by a collection of parameters
where
is an invertible upper-triangular Toeplitz matrix,
is the polar transform matrix (which is an invertible lower-triangular matrix),
and
are subsets of
with sizes
K and
, respectively,
is a fixed vector, and
is a data word. Given such an instance, a systematic encoder seeks a solution to the set of equations
More specifically, a systematic PAC encoder seeks to determine the missing part
of the codeword
subject to the conditions (
3). To analyze this problem, rewrite
in terms of
as
where
and
denote the complements of
and
in
, respectively. Substituting
and
into (
4), and solving for
, we obtain a formal solution as
which is valid if and only if the matrix
is invertible. (Please note that
is a square matrix since the size of
equals the size of
by definition.) One way to ensure that
is invertible is to choose
and
as complementary sets so that
becomes a principal submatrix
of
. (Since
is the product of two invertible matrices, it is invertible; hence, all its principal submatrices are invertible.) We summarize this result as follows.
Proposition 1. The systematic encoding problem (3) for PAC codes has a solution whenever , and the solution is given by Thus, in principle, we have already provided a solution to the systematic encoding problem for any PAC code. However, the complexity of solving the systematic encoding problem by computing
using (
6) involves
arithmetic operations (additions and multiplications in
), which may be prohibitively complex for many applications.
In the rest of this section, we develop a low-complexity systematic encoder for PAC codes under the assumption that the data index set
is chosen so that
is satisfied. This condition is not as restrictive as it may appear since it is satisfied by the preferred choices for the data index set
, such as when
is chosen according to a polar coding design rule or a Reed-Muller design rule [
1].
For clarity, we restate the systematic encoding problem considered in the rest of this section as follows. Given a data word
and a data index set
for which
, find a codeword
so that
Proposition 2. The systematic encoding problem (7) can be solved by a method consisting of the following three steps. (i) Generate an auxiliary word by computing . (ii) Compute a convolution input-output pair so that(iii) Obtain the systematic codeword by computing the polar transform . Proof. The second and third steps ensure that
, with
. Therefore,
is a codeword in the PAC code. Moreover, we have
since
,
, and
. Thus,
is also satisfied, confirming that the encoding method is systematic.☐
The above systematic encoding method calculates although systematic encoding does not explicitly call for the calculation of . On the other hand, the calculation of proves (implicitly) that a solution to the systematic encoding problem exists.
Next, we examine the complexity of each step of the systematic encoding method of Proposition 2.
Proposition 3. The first and third steps of the method in Proposition 2 each have complexity .
Proof. The third step
is a polar transform operation, which is known to have complexity
[
2] thanks to the recursive structure of the polar transform. As for the first step, a direct computation of
(without exploiting the special structure of the polar transform) has complexity
. A better method is to embed the calculation
in a polar transform operation, as in systematic encoding of polar codes [
3,
4,
5]. To that end, we recall that the inverse of the polar transform
is itself,
i.e.,. This, combined with the condition that
, implies that
. To see this last point, note that for any two matrices
and
,
and let
and
. Therefore, we have
. Now, prepare a vector
by setting
and
, apply a polar transform
, and extract
from
by setting
. This yields the desired result since
☐
Proposition 4. The system of equations (8) in the second step of Proposition 2 can be solved by a sequential method of complexity for a PAC code with a convolution impulse response (where by definition of PAC codes). Proof. To develop a sequential method that solves (
8), we begin by rewriting the convolution Equation (
1) as follows
where we used
and have defined
as an
ith
feed-forward variable. Please also note that in (
9), we have used the convention that
for
.
Observe that, for each
, either
or
. In the former case, we obtain
from the constraint
; in the latter case, we obtain
from
. Given the value of one of the elements of the pair
, the other can be found from the relation
. Also, observe that
depends only on the knowledge of
. These observations suggest a sequential method for carrying out the second step of Proposition 2. The sequential method begins with
with
. Either
and
where
is the first element of the auxiliary word
; or
and
where
is the first element of the frozen word
. In either case, we can compute
before proceeding to the next step of the sequential method. In general, the
ith step of the sequential method begins with
available from the
th step and one determines the missing element of the pair
using the relation
. Thus, this method solves the system of equations (
8). The method also provides a proof of existence and uniqueness of the solution.
The complexity of the sequential method given above is dominated by the complexity of calculating the feed-forward variables . From the definition of , it is clear that can be calculated using at most m multiplications and additions in . Thus, the overall complexity is .
Remark 1. An inspection of the above proof will show that the sequential method of Proposition 4 can be used to solve the system of equations (8) for any IUT matrix ; the Toeplitz property is not essential. The complexity
of the sequential method of Proposition 4 corresponds to a significant savings if
. If
is not true, it may be worth working with the inverse of
. To discuss this, we first cite a well-known result, see e.g., [
6].
Proposition 5. The class of all N-by-N IUT Toeplitz matrices form a group under matrix multiplication. Let be an IUT Toeplitz matrix with its first row given by . (If has span , then for .) Then, is an IUT Toeplitz matrix with first row given by where and for .
Proposition 5 allows us to recast the convolution problem (
8) in an inverted form: Compute a convolution input-output pair
so that
The inverted problem (
10) has the same form as the original problem (
8) with the roles of
and
reversed. Therefore, it can be solved using the same sequential method described above. There may be an advantage in solving the inverted problem if the span of the first row of
is shorter than that of
. For example, let
be an IUT Toeplitz matrix with first row
, with a span of 15. The inverse
is the IUT Toeplitz matrix with first row
, which has a span of 11.
We end this section by noting that for hardware implementations of the convolution operation in PAC encoding (both for systematic and non-systematic cases), one can use shift-register circuits that are commonly used in encoding algebraic codes. In particular, the convolution operation
(or, equivalently the transform
) can be implemented as shown in
Figure 2. A version of the same circuit, with the left-most stage eliminated, generates the feed-forward variable
at point
when
is provided as input at point
A.
4. Shortening of PAC Codes
PAC codes have native lengths that are powers of two,
for some
. In many applications, it is necessary to adjust the code length to some desired value other than
. One method for adjusting code length is code shortening in which a portion
of the codeword
is constrained to a predetermined value, say zero, and is not transmitted, effectively reducing the code length from
N to
. A common method of code shortening for polar codes is to choose the set
so that
[
7,
8]. The systematic encoding method for PAC codes presented above can be used to implement such a shortening method.
Suppose we desire shortening of a PAC code in connection with non-systematic encoding. We partition the index set
into three disjoint sets: a data index set
, a frozen index set
, and a shortening index set
subject to the condition
. Then, we apply the systematic encoding method presented above to the problem
In other words, the data word is treated as if it is part of the frozen part of the convolution input word , and the part of the codeword is treated as if it is the data part of the codeword in a systematic PAC code.
If on the other hand, we desire to shorten a systematic PAC code, then the index set
is partitioned into a data index set
, a frozen index set
, and a shortening index set
subject to the condition
, and we apply the above systematic encoding method to the problem
In other words, we treat as if all of it is data in a systematic PAC code.