1 Introduction

Let \({\mathbb {F}}_{q}=\texttt {GF}(q)\) be a finite field with q elements, where q is a power of a prime p [1]. An error-correcting code \({\mathcal {C}}(n, k, d)\) defined over \({\mathbb {F}}_{q}\) is a k-dimensional subspace of \({\mathbb {F}}_{q}^{n}\) consisting of \(q^{k}\) q-ary codewords with the minimum Hamming distance being d. The information rate \({\mathcal {R}}\) of the code \({\mathcal {C}}\) which describes the efficiency with which information is transferred by a given coding scheme is usually defined as the ratio of \(\log _{q}{|{\mathcal {C}}|}\) information symbols to the coded n symbols. Consider the composite field \(\texttt {GF}(q^{n})\) defined over \(\texttt {GF}(q)\). The base field \(\texttt {GF}(q)\) over which the composite field is defined is called the ground field. The composite field \(\texttt {GF}(q^{n})\) is in fact an extension field defined over the ground field \(\texttt {GF}(q)\).

A linear block code \({\mathcal {C}}(n, k)\) is conventionally designed to consider user messages of fixed k-symbol at a time and encode them into n symbols for transmission, which is in fact a fixed-rate coding. Under this conventional block coding, the information rate of the resultant code is being fixed at k/n. However, in the design of many practical error-control coding systems, the use of codes that can accommodate variable rates is desired. The adaptive modulation technique is used in wireless systems, where fading is very common, to achieve reliable and efficient communication [2]. Besides the adaptive modulation technique, automatic repeat-request protocol is also an integral part of modern wireless communication systems. These techniques require channel codes which are flexible with regard to code rate and blocklength. In such scenarios, use of error-correcting codes with all possible interest rates is more appropriate [3, 4]. Recently, constructions of codes supporting wide range of rates received more attention [5,6,7,8,9,10,11,12].

The present paper, motivated by the above-mentioned problem, attempts to construct two \(q^{n}\)-ary error-correcting codes which collectively lead to the encoding and decoding of q-ary user messages of lengths 1, 2, \(\ldots\), kn, simultaneously, with a common encoder and decoder, where and here after \(q = p^{\lambda }\) for some positive number \(\lambda\). To facilitate this objective, this paper considers a \(p^{\lambda }\)-ary message-block, of user symbols, of length \(\ell = \ell _{1}+\ell _{2}+ \cdots +\ell _{s} \le s\lambda\) with \(\ell _{i}\) denoting the length of the ith segment of the message-block such that \(1\le \ell _{i} \le \lambda\), where \(\lambda = \left\{ \begin{array}{ccc} k &{},&{} \text{ for } s=1 \\ n &{},&{} \text{ for } s=k \end{array}\right.\). To make variable-rate feature simpler, a code \({\mathcal {C}}(n, k, d)\) defined over the composite field \(\texttt {GF}((p^{\lambda })^{n})\) termed as ‘mother’ code, and codes \({\mathcal {C}}_{1}(\lambda , 1), {\mathcal {C}}_{2}(\lambda , 2), \ldots , {\mathcal {C}}_{\lambda }(\lambda , \lambda )\) defined over the ground field \(\texttt {GF}(p^{\lambda })\) termed as ‘children’ codes are considered. Each message-segment of length \(\ell _{i}\) is encoded using the child code \({\mathcal {C}}_{\ell _{i}}\) over \(\texttt {GF}(p^{\lambda })\) to obtain an \(\lambda\)-length vector, and the resulting s encoded-message segments are further channel encoded by the mother code \({\mathcal {C}}\) defined over \(\texttt {GF}((p^{\lambda })^{n})\).

In sequel, employing the proposed coding procedures, the longer data symbols at the output of source encoder can be broken up flexibly in to blocks of s, and/or \(s+1,\ldots\), and/or \(s\lambda p^{\lambda }\)-ary symbols and then each block is encoded independently for transmission, which is in contrast to conventionally encoding messages of fixed block-size. Consequently, together with mother and children codes, the proposed coding schemes determine multiple-rate codes that support the following variable code rates:

$$\begin{aligned} {\mathcal {R}}_{s} &= \frac{\log _{q^{n}}{|{\mathcal {C}}_{\ell _{1}}\times {\mathcal {C}}_{\ell _{2}}\times \cdots \times {\mathcal {C}}_{\ell _{s}}|}}{n} = \frac{s}{n^{2}}, \frac{s+1}{n^{2}}, \ldots , \frac{s\lambda }{n^{2}} \end{aligned}$$

retaining the constant code length n and distance d, where \(1\le \ell _{i} \le \lambda\). The procedure (correspond to the case \(\lambda =n\)) outlined as above is in fact an extension to the multiple-rate coding procedure (for the case of \(\lambda =k\)) introduced by the author in an earlier paper [12], which is presented in Sect. 3 along with an illustrative example. The mother and children codes, respectively called inner and outer codes, considered in this paper are chosen from the class of rank distance codes introduced by Gabidulin in [13].

The rest of the paper is structured as follows. The following section reviews the basic definitions and preliminary results needed. The multiple-rate code construction that correspond to the case of \(\lambda =k\) handling multiple-rates \(1/n^{2}, 2/n^{2},\ldots , k/n^{2}\) simultaneously is presented in Sect. 3; the coding procedure is demonstrated with an example given in Sect. 4. While the coding procedure for the case of \(\lambda = k\) results in low coding rates, Sect. 5 describes an enhanced multiple-rate coding procedure (the case of \(\lambda =n\)) that supports wide range of information rates including the rates \(1/n, 2/n, \ldots , k/n\); it is also provided with an associated decoding technique. Section 6 provides an example of a multiple-rate code construction in support of the coding procedure described in Sect.  5 and finally, the paper concludes in Sect. 7.

2 Preliminaries

This preliminary section briefly summarizes some fundamentals of the class of rank distance codes [13] and basic definitions concerning the dual bases [14] of interest to this paper.

2.1 Rank distance codes

Let \(\mathbf{a} = (a_{1}, a_{2}, \ldots , a_{n}) \in [\texttt {GF}(q^{N})]^{n}\), \(n\le N\). The rank norm \(||\mathbf{a}||\) of a is defined as the maximum number of linearly independent coordinates over \(\texttt {GF}(q^{N})\). The rank distance between two vectors \(\mathbf{x}\) and \(\mathbf{y}\) of \([\texttt {GF}(q^{N})]^{n}\) is the norm of the difference of these vectors \(||\mathbf{x} - \mathbf{y}||\). The rank norm induces a metric called rank metric (or rank distance) on \([\texttt {GF}(q^{N})]^{n}\). The rank distance of a code is then defined as the minimal rank distance between the codewords. As opposed to the so-called Hamming metric [15], the rank metric considered to be an ideal metric as it acknowledges the linear dependency of the code symbols of the alphabet, especially when the symbols are from higher dimensional Galois field [16].

Equipped with the rank metric, the class of rank distance (RD) codes are defined as subsets of an n-dimensional space \([\texttt {GF}(q^{N})]^{n}\) of n-vectors over an extension field \(\texttt {GF}(q^{N})\). Rank distance codes over finite field extensions were introduced in different representations under various frameworks [13, 16,17,18]. The rank distance codes have been well studied in terms of properties, bounds and decoding [19,20,21]. This paper considers a subclass of rank metric codes introduced by Gabidulin in 1985 [13]; of particular interest are the codes (nkd) attaining equality in the Singleton-like bound \(d\le n-k+1\) in rank metric, called maximum rank distance (MRD) codes.

Definition 2.1 An (nkd) MRD code is generated by the \(k\times n\) matrix:

$$\begin{aligned} \mathbf{G} &= \left( \begin{array}{cccc} g_{1} &{}\quad g_{2} &{}\quad \cdots &{}\quad g_{n} \\ g_{1}^{q} &{}\quad g_{2}^{q} &{}\quad \cdots &{}\quad g_{n}^{q} \\ \vdots &{}\quad \vdots &{}\quad \ddots &{}\quad \vdots \\ g_{1}^{q^{k-1}} &{}\quad g_{2}^{q^{k-1}} &{}\quad \cdots &{}\quad g_{n}^{q^{k-1}} \end{array} \right) \end{aligned}$$

where \(g_{1},~ g_{2}, \ldots , g_{n}\in \texttt {GF}(q^{N})\) are linearly independent over \(\texttt {GF}(q)\). The paper considers the case when \(n=N\).

2.2 Self-complementary bases

Consider two bases \({\varvec{{\alpha }}} = \{\alpha _{1}, \alpha _{2}, \ldots , \alpha _{n}\}\) and \({{\varvec{\beta }}} = \{\beta _{1},\beta _{2}, \ldots , \beta _{n}\}\) of \(\texttt {GF}(q^{n})\) over \(\texttt {GF}(q)\). They are called dual (or complementary) bases if \(\mathbf{tr}(\alpha _{i}\beta _{j}) = \delta _{ij}\), where \(\mathbf{tr}\) is the trace from \(\texttt {GF}(q^{n})\) to \(\texttt {GF}(q)\) defined as \(\mathbf{tr}(\alpha ) = \alpha + \alpha ^{q} + \cdots + \alpha ^{q^{n-1}}\) and \(\delta _{i,j}\) \((1 \le i,j \le n)\) is kroneker delta function. A basis \(\{\alpha _{1},\alpha _{2}, \ldots , \alpha _{n}\}\) of \(\texttt {GF}(q^{n})\) over \(\texttt {GF}(q)\) is called self-dual or self-complementary if

$$\begin{aligned} \mathbf{tr}(\alpha _{i}\alpha _{j}) &= \left\{ \begin{array}{ccc} 1,&{}\quad i = j \\ 0,&{}\quad i \ne j \end{array}\right. . \end{aligned}$$

A self-complementary basis exists in every extension \(\texttt {GF}(q^{n})\) of \(\texttt {GF}(q)\) where q is even or both q and n are odd [22]. In this paper, self-complementary bases are used in defining generator and parity-check matrices of codes. A criteria for the existence of self-complementary bases is obtained in [23], where it has been established that \(\texttt {GF}(q^{n})\) has a self-complementary normal basis if and only if n is odd or \(n \equiv 2~ (\text{ mod } \text{4 })\) and q is even.

Symbols, notations and nomenclature

  • While this paper refers a q-ary linear code \({\mathcal {C}}\) defined over the field \({\mathbb {F}}_{q}=\texttt {GF}(q)\) with the parameters n, k and d as \({\mathcal {C}}(n, k, d)_{q}\) or simply by \({\mathcal {C}}(n, k, d)\) throughout the article, the same is sometimes denoted by \({\mathcal {C}}(n, k)_{q}\) or simply \({\mathcal {C}}(n, k)\) when the code is not required to perform error correction.

  • For arbitrary vectors \(\mathbf{a} = \left( \mathrm {a}_{1}, \mathrm {a}_{2}, \ldots , \mathrm {a}_{\ell _{1}}\right) \in {\mathbb {F}}_{q}^{\ell _{1}}\) and \(\mathbf{b} = \left( \mathrm {b}_{1}, \mathrm {b}_{2}, \ldots , \mathrm {b}_{\ell _{2}}\right) \in {\mathbb {F}}_{q}^{\ell _{2}}\), the concatenation of \(\mathbf{a}\) and \(\mathbf{b}\) is \(\left( \mathrm {a}_{1}, \mathrm {a}_{2}, \ldots , \mathrm {a}_{\ell _{1}}, \mathrm {b}_{1},\mathrm {b}_{2}, \ldots , \mathrm {b}_{\ell _{2}} \right)\) of length \(\ell _{1} + \ell _{2}\) and abbreviated as \(\left( \mathbf{a},~ \mathbf{b}\right) \in {\mathbb {F}}_{q}^{\ell _{1}} \times {\mathbb {F}}_{q}^{\ell _{2}}\).

  • Let \(\mathbf{c}=(c_{1}, c_{2}, \ldots , c_{\ell _{3}})\in {\mathbb {F}}_{q}^{\ell _{3}}\) be arbitrary. It is known that \({\mathbb {F}}_{q^{\ell _{3}}}\) is isomorphic (as a vector space over \({\mathbb {F}}_{q}\)) to the vector space \({\mathbb {F}}_{q}^{\ell _{3}}\). Consequently, the vector \((c_{1}, c_{2}, \ldots , c_{\ell _{3}}) \in {\mathbb {F}}_{q}^{\ell _{3}}\) can be considered as an element of \({\mathbb {F}}_{q^{\ell _{3}}}\). By abuse of notation, this paper uses the vector notation \(\mathbf{c}\) also to represent the (isomorphic) element of \({\mathbb {F}}_{q^{\ell _{3}}}\) as an isomorphism \(\mathbf{c} \leftrightarrow (c_{1}, c_{2}, \ldots , c_{\ell _{3}})\) where applicable.

3 Multiple-rate codes: Construction-I

Consider the composite field \(\texttt {GF}((p^{k})^{n})\) defined over the subfield \(\texttt {GF}(p^{k})\), where k and n are such that \(n>k>1\). Let \(\beta\) be a root of an irreducible polynomial of degree n over \(\texttt {GF}(p^{k})\). Then \(\texttt {GF}(q^{n}) = \{0, \beta , \beta ^{2}, \ldots , \beta ^{q^{n}-1} \}\), where \(q=p^{k}\). In order to be able to perform field operations in the ground field \(\texttt {GF}(p^{k})\), consider a primitive element \(\alpha\) in \(\texttt {GF}(p^{k})\) so that \(\texttt {GF}(p^{k}) = \{0, \alpha , \alpha ^{2}, \ldots , \alpha ^{p^{k}-1}\}\). Define the mother code \({\mathcal {C}}(n,~ k,~ d)\) over the composite field \(\texttt {GF}(q^{n})\) with the following generator matrix:

$$\begin{aligned} \mathbf{G} &= \left( \begin{array}{cccccc} \beta _{1} &{}\quad \beta _{2} &{}\quad \cdots &{}\quad \beta _{n} \\ \beta _{1}^{q} &{}\quad \beta _{2}^{q} &{}\quad \cdots &{}\quad \beta _{n}^{q} \\ \vdots &{}\quad \vdots &{}\quad \ddots &{}\quad \vdots \\ \beta _{1}^{q^{k-1}} &{}\quad \beta _{2}^{q^{k-1}} &{}\quad \cdots &{}\quad \beta _{n}^{q^{k-1}} \\ \end{array} \right) \quad \end{aligned}$$

where \(\{\beta _{1}, \beta _{2}, \ldots , \beta _{n}\}\) is some basis in \(\texttt {GF}(q^{n})\). Clearly, the \(k\times n\) matrix \(\mathbf{G}\) defines an \({\mathcal {C}}(n,~ k,~ d)\) MRD code. Further, define k children codes \({\mathcal {C}}_{i}(k,~ i)\) over the ground field \(\texttt {GF}(p^{k})\) with the generator matrix \(\mathbf{G}_{i}\) (\(i = 1,2, \ldots , k\)):

$$\begin{aligned} \mathbf{G}_{i} &= \left( \begin{array}{cccccc} \alpha _{1} &{}\quad \alpha _{2} &{}\quad \cdots &{}\quad \alpha _{k} \\ \alpha _{1}^{p} &{}\quad \alpha _{2}^{p} &{}\quad \cdots &{}\quad \alpha _{k}^{p} \\ \vdots &{}\quad \vdots &{}\quad \ddots &{}\quad \vdots \\ \alpha _{1}^{p^{i-1}} &{}\quad \alpha _{2}^{p^{i-1}} &{}\quad \cdots &{}\quad \alpha _{k}^{p^{i-1}} \\ \end{array} \right) \end{aligned}$$

where \(\alpha _{1}, \alpha _{2}, \ldots , \alpha _{k}\) is a self-complementary basis in \(\texttt {GF}(p^{k})\). Clearly, each child code \({\mathcal {C}}_{i}(k,~ i)_{p^{k}}\) is an i-dimensional MRD code of length k. Note that, \({\mathcal {C}}_{i}\subseteq [\texttt {GF}(p^{k})]^{k}\) and \({\mathcal {C}}_{i}=[\texttt {GF}(p^{k})]^{k}\) when \(i=k\).

The concept of a linear code \({\mathcal {C}}\) together with its dual \({\mathcal {C}}^{\perp }\) having trivial intersection \({\mathcal {C}}\cap {\mathcal {C}}^{\perp } = \{ \mathbf{0} \}\), called as linear code with a complementary dual (in short, LCD), was first introduced by Massey in [24]. In 2004 [25], it was discovered that certain class of MRD codes defined over \(\texttt {GF}(2^{n})\) are LCD codes [26, 27]; more recently, the result is obtained for the case of MRD codes over \(\texttt {GF}(q^{n})\): MRD codes generated by self-complementary basis in \(\texttt {GF}(q^{n})\) are LCD codes [28]. Consequently, each MRD code \({\mathcal {C}}_{i}\) (child code) defined by \(\mathbf{G}_{i}\) as above is an LCD code. These children codes are then associated with the linear mapping \(\varPi _{{\mathcal {C}}_{i}}: [\texttt {GF}(q)]^{k} \rightarrow {\mathcal {C}}_{i}\) given by \(\varPi _{{\mathcal {C}}_{i}} = \mathbf{G}_{i}^\mathbf{T}(\mathbf{G}_{i}{} \mathbf{G}_{i}^\mathbf{T})^{-1}\mathbf{G}_{i}\). By the very notion of LCD codes, \({\mathcal {C}}_{i}\) is an LCD code just when \([\texttt {GF}(q)]^{n}\) is the direct sum of \({\mathcal {C}}_{i}\) and \({\mathcal {C}}_{i}^{\perp }\): \([\texttt {GF}(q)]^{n} = {\mathcal {C}}_{i}\oplus {\mathcal {C}}_{i}^{\perp }\). Further, a necessary and sufficient condition for a code \({\mathcal {C}}_{i}\) defined by \(\mathbf{G}_{i}\) to be LCD is that \(\mathbf{G}_{i}{} \mathbf{G}_{i}^\mathbf{T}\) is non-singular [24].

The orthogonal projectors associated with the children codes play a crucial role in the decoding of user messages of different length. The family of mother and children codes defined as above can be used to encode and decode user messages of length \(i=1,2, \ldots , k\) - the encoding procedure [12] is presented in the following subsection for completeness.

3.1 Encoding

For \(1 \le \ell \le k\), let \(\mathbf{m}_{\ell }=(m_{1}, m_{2},\ldots , m_{\ell })\in [\texttt {GF}(p^{k})]^{\ell }\) be a message of length \(\ell\) that is to be transmitted over the noisy \(q^{n}\)-ary channel. First encode the \(\ell\)-length message \(\mathbf{m}_{\ell }\) using the \(\ell\)th child code \({\mathcal {C}}_{\ell }(k,~ \ell )_{p^{k}}\) to obtain a k-length codeword, say \(\mathbf{m}_{\ell k}' = (m_{\ell 1}', m_{\ell 2}',\ldots , m_{\ell k}')\). The orthogonal projectors will be used to recover \(\mathbf{m}_{\ell }\) from \(\mathbf{m}_{\ell k}'= \mathbf{m}_{\ell }{} \mathbf{G}_{\ell }\) on reception of error-free \(\mathbf{m}_{\ell k}'\), which will be discussed shortly.

Let \(\beta _{1}',\beta _{2}',\ldots , \beta _{k}' \in \texttt {GF}(q^{n})\) be distinctly chosen such that \(\beta _{1}',\beta _{2}',\ldots , \beta _{k}'\) \(\notin\) \(\texttt {GF}(p^{k})\). Consider adding a k-length vector \((\beta _{\ell }', \beta _{\ell }', \ldots , \beta _{\ell }') \in [\texttt {GF}(q^{n})]^{k}\) to the child codeword \(\mathbf{m}_{\ell k}' \in [\texttt {GF}(p^{k})]^{k}\) associated to the message \(\mathbf{m}_{\ell }\) - resulting in a k-length vector \(\mathbf{m}_{\ell k}'' \in [\texttt {GF}(q^{n})]^{k}\):

$$\begin{aligned} \mathbf{m}_{\ell k}'' &= \mathbf{m}_{\ell k}' ~+~ \underbrace{(\beta _{\ell }', \beta _{\ell }', \ldots , \beta _{\ell }')}_{{\small {k\, \hbox { components}}}} \end{aligned}$$

The padding is done so that the coder can handle multiple rates simultaneously. Assume that the fixed k-length vector \((\beta _{\ell }', \beta _{\ell }', \ldots , \beta _{\ell }')\) is known both at the encoder and decoder. Note that \(\mathbf{m}_{\ell k}' \in {\mathcal {C}}_{\ell }(k,~ \ell )\) and \(\mathbf{m}_{\ell k}'' \notin {\mathcal {C}}_{\ell }(k,~ \ell )\); that is, \(\mathbf{m}_{\ell k}'' \in [\texttt {GF}(q^{n})]^{k}\). Finally, the \(q^{n}\)-ary k-length vector \(\mathbf{m}_{\ell k}''\) is further encoded by the mother code \({\mathcal {C}}(n,~ k,~ d)\) through \(\mathbf{G}\) to obtain an n-length codeword \(\mathbf{c}\) for transmission.

In summary, the information symbols of distinct lengths are subsequently channel encoded by the respective child code and the mother code. Consequently, the derived multiple-rate code, denoted by \({\mathcal {C}}_{ MR}^{(1)}(n, \{1, 2, \ldots , k\}_{q}, d)_{q^{n}}\), supports the rates \({\mathcal {R}}_{1} = \frac{\log _{q^{n}}|{\mathcal {C}}_{\ell }|}{n}\), \(\ell =1, 2, \ldots , k\); \((1/n^{2} \le {\mathcal {R}}_{1} \le k/n^{2})\). In this way, the mother code is designed along with the children codes to support multiple rates.

4 Example—Coding for \({\mathcal {C}}_{ MR}^{(1)}(5, \{1, 2, 3\}_{8}, 3)_{8^{5}}\)

Take \(n=5\), \(k=3\), and \(q=2^{3}\). Let \(\alpha\) be a primitive element in \(\texttt {GF}(2^{3})\) satisfying \(\alpha ^{3}+\alpha +1=0\). Consider \(\texttt {GF}(8^{5}) = \{0, \beta , \beta ^{2}, \ldots , \beta ^{8^{5}-1}\}\), where \(\beta \in \texttt {GF}(8^{5})\) is a root of the primitive polynomial \(x^{5}+x^{2}+x+\alpha ^{3}\) over \(\texttt {GF}(8)\).

$$\begin{aligned} \text{ Define }~ \mathbf{G} &= \left[ \begin{array}{ccccc} 1 &{}\quad \beta &{}\quad \beta ^{2} &{}\quad \beta ^{3} &{}\quad \beta ^{4}\\ 1 &{}\quad \beta ^{8} &{}\quad \beta ^{16} &{}\quad \beta ^{24} &{}\quad \beta ^{32}\\ 1 &{}\quad \beta ^{16} &{}\quad \beta ^{32} &{}\quad \beta ^{48} &{}\quad \beta ^{64} \end{array} \right] \quad \end{aligned}$$

where \(\beta\) is a primitive element in \(\texttt {GF}(8^{5})\). The generator matrix \(\mathbf{G}\) generates the ‘mother’ MRD code \({\mathcal {C}}(5, 3, 3)_{8^{5}}\). The ‘children’ MRD codes \({\mathcal {C}}_{1}(3,~ 1)_{2^{3}}\), \({\mathcal {C}}_{2}(3,~ 2)_{2^{3}}\) and \({\mathcal {C}}_{3}(3,~ 3)_{2^{3}}\) defined respectively by the generator matrices \(\mathbf{G}_{1}\), \(\mathbf{G}_{2}\) and \(\mathbf{G}_{3}\) along with their associated orthogonal projectors are below:

$$\begin{aligned} \mathbf{G}_{1} &= \left[ \begin{array}{cccc} \alpha ^{3}&\quad \alpha ^{6}&\quad \alpha ^{5} \end{array} \right] ; \quad \varPi _{{\mathcal {C}}_{1}} = \left[ \begin{array}{cccc} \alpha ^{6} &{}\quad \alpha ^{2} &{}\quad \alpha \\ \alpha ^{2} &{}\quad \alpha ^{5} &{}\quad \alpha ^{4} \\ \alpha &{}\quad \alpha ^{4} &{}\quad \alpha ^{3} \end{array} \right] \quad \quad \\ \mathbf{G}_{2} &= \left[ \begin{array}{cccc} \alpha ^{3} &{}\quad \alpha ^{6} &{}\quad \alpha ^{5} \\ \alpha ^{6} &{}\quad \alpha ^{5} &{}\quad \alpha ^{3} \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{2}} = \left[ \begin{array}{cccc} \alpha &{}\quad \alpha &{}\quad \alpha ^{4} \\ \alpha &{}\quad \alpha ^{2} &{}\quad \alpha ^{2} \\ \alpha ^{4} &{}\quad \alpha ^{2} &{}\quad \alpha ^{4} \end{array} \right] \\ \text{ and }~ \mathbf{G}_{3} &= \left[ \begin{array}{cccc} \alpha ^{3} &{}\quad \alpha ^{6} &{}\quad \alpha ^{5} \\ \alpha ^{6} &{}\quad \alpha ^{5} &{}\quad \alpha ^{3} \\ \alpha ^{5} &{}\quad \alpha ^{3} &{}\quad \alpha ^{6} \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{3}} = \left[ \begin{array}{cccc} 1 &{}\quad 0 &{}\quad 0 \\ 0 &{}\quad 1 &{}\quad 0 \\ 0 &{}\quad 0 &{}\quad 1 \end{array} \right] . \end{aligned}$$

The parity-check matrix \(\mathbf{H}_{i}\) associated with the generator matrix \(\mathbf{G}_{i}\) and the orthogonal projector \(\varPi _{{\mathcal {C}}_{i}^{\perp }}\) of the dual code \({\mathcal {C}}_{i}^{\perp }\) (\(i=1, 2, 3\)) are obtained as

$$\begin{aligned} \mathbf{H}_{1} &= \left[ \begin{array}{cccc} \alpha ^{6} &{}\quad \alpha ^{5} &{}\quad \alpha ^{3} \\ \alpha ^{5} &{}\quad \alpha ^{3} &{}\quad \alpha ^{6} \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{1}^{\perp }} = \left[ \begin{array}{cccc} \alpha ^{2} &{}\quad \alpha ^{2} &{}\quad \alpha \\ \alpha ^{2} &{}\quad \alpha ^{4} &{}\quad \alpha ^{4} \\ \alpha &{}\quad \alpha ^{4} &{}\quad \alpha \end{array} \right] \quad \quad \\ \mathbf{H}_{2}&= \left[ \begin{array}{cccc} \alpha ^{5}&\quad \alpha ^{3}&\quad \alpha ^{6} \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{2}^{\perp }} = \left[ \begin{array}{cccc} \alpha ^{3} &{}\quad \alpha &{}\quad \alpha ^{4} \\ \alpha &{}\quad \alpha ^{6} &{}\quad \alpha ^{2} \\ \alpha ^{4} &{}\quad \alpha ^{2} &{}\quad \alpha ^{5} \end{array} \right] \\ \text{ and }~ \mathbf{H}_{3}&= \left[ \begin{array}{cccc} 0 &{}\quad 0 &{}\quad 0 \\ \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{3}^{\perp }} = \left[ \begin{array}{cccc} 0 &{}\quad 0 &{}\quad 0 \\ 0 &{}\quad 0 &{}\quad 0 \\ 0 &{}\quad 0 &{}\quad 0 \end{array} \right] . \end{aligned}$$

Take \(\beta _{1}'=\beta\), \(\beta _{2}'=\beta ^{2}\), and \(\beta _{3}'=\beta ^{3}\) for instance. Since \(k=3\), we have \(1~\le ~\ell ~\le ~3\) so that message \(\mathbf{m} = (\mathbf{m}_{1\ell }) \in [\texttt {GF}(q)]^{\ell }\) of length \(\ell =1\) or 2 or 3 can be encoded for transmission over the \(8^{5}\)-ary channel.

  1. (a)

    For \(\ell\) = 1: consider \(\mathbf{m} = (\mathbf{m}_{11}) = (\alpha )\). The q-ary message \(\mathbf{m}_{11}\) is encoded by the child code \({\mathcal {C}}_{1}(3,~ 1)_{2^{3}}\) and \(\mathbf{m}_{13}'\) is obtained as follows:

    $$\begin{aligned} \mathbf{m}{} \mathbf{G}_{1}&= (\alpha )\mathbf{G}_{1} = \left( \begin{array}{ccc} \alpha ^{4}, &{}\quad 1, &{}\quad \alpha ^{6} \\ \end{array} \right) ~\leftrightarrow ~ \mathbf{m}_{13}' \end{aligned}$$

    By adding \(\left( \begin{array}{ccc} \beta _{1}', &{}\quad \beta _{1}', &{}\quad \beta _{1}' \\ \end{array} \right)\), \(\mathbf {m}_{13}''\) = \(\mathbf{m}_{13}'\) + \(\left( \begin{array}{ccc} \beta _{1}',&{}\quad \beta _{1}',&{}\quad \beta _{1}' \\ \end{array} \right)\) = \(\left( \begin{array}{ccc} \alpha ^{4}, &{}\quad 1, &{}\quad \alpha ^{6} \\ \end{array} \right)\) + \(\left( \begin{array}{ccc} \beta ,&{}\quad \beta ,&{}\quad \beta \\ \end{array} \right)\) = \((\beta ^{31491},\beta ^{32373},\beta ^{1493})\). Then the \(8^{5}\)-ary message \(\mathbf{m}''\) = \((\mathbf{m}_{13}'')\) = \((\beta ^{31491},\beta ^{32373},\beta ^{1493})\) is finally channel encoded with the mother code \({\mathcal {C}}(5, 3, 3)_{8^{3}}\) to obtain c (say): \(\mathbf{c} = \mathbf{m}''{} \mathbf{G} = (\mathbf{m}_{13}'')\mathbf{G}\) = \((\beta ^{25415}\), \(\beta ^{19646}\), \(\beta ^{7654}\), \(\beta ^{4579}\), \(\beta ^{17386})\).

  2. (b)

    For \(\ell\) = 2: consider \(\mathbf{m} = (\mathbf{m}_{12}) = \left( \alpha , ~0\right)\). This time the child code \({\mathcal {C}}_{2}(3,~ 2)_{2^{3}}\) is used to encode \(\mathbf{m}_{12}\). Consequently, \(\mathbf{m}_{13}'\) is obtained as follows:

    $$\begin{aligned} \mathbf{m}{} \mathbf{G}_{2}&= \left( \alpha , ~0\right) \mathbf{G}_{2} = \left( \begin{array}{ccc} \alpha ^{4}, &{}\quad 1, &{}\quad \alpha ^{6} \\ \end{array} \right) \leftrightarrow ~ \mathbf{m}_{13}'. \end{aligned}$$

    By adding \(\left( \begin{array}{ccc} \beta _{2}', &{}\quad \beta _{2}', &{}\quad \beta _{2}' \\ \end{array} \right)\), \(\mathbf{m}_{13}'' = \mathbf{m}_{13}' + \left( \begin{array}{ccc} \beta _{2}', &{}\quad \beta _{2}', &{}\quad \beta _{2}' \\ \end{array} \right) = \left( \begin{array}{ccc} \alpha ^{4}, &{}\quad 1, &{}\quad \alpha ^{6} \\ \end{array} \right)\) + \(\left( \begin{array}{ccc} \beta ^{2}, &{}\quad \beta ^{2}, &{}\quad \beta ^{2} \\ \end{array} \right)\) = \(\left( \begin{array}{ccc} \beta ^{108}, &{}\quad \beta ^{31979}, &{}\quad \beta ^{12734} \\ \end{array} \right)\) which is encoded with \({\mathcal {C}}(5, 3, 3)_{8^{3}}\) to obtain \(\mathbf{c} = \mathbf{m}''{} \mathbf{G} = (\mathbf{m}_{13}'')\mathbf{G}\) = \(\left( \begin{array}{ccccc} \beta ^{30215},&\quad \beta ^{24825},&\quad \beta ^{25147},&\quad \beta ^{17463},&\quad \beta ^{8804} \end{array} \right)\).

  3. (c)

    For \(\ell\) = 3: consider \(\mathbf{m} = (\mathbf{m}_{13}) = \left( \alpha , {\alpha ^2}, {\alpha ^3}\right)\). The code \({\mathcal {C}}_{3}(3,~ 3)_{2^{3}}\) is used to encode \(\mathbf {m}_{13}\) to obtain \(\mathbf{m}_{13}'\):

    $$\begin{aligned} \mathbf{m}{} \mathbf{G}_{3}&= \left( \alpha , {\alpha ^2}, {\alpha ^3}\right) \mathbf{G}_{3} = \left( \alpha ^{4}, \alpha ^{6}, \alpha ^{4}\right) \leftrightarrow \mathbf{m}_{13}'. \end{aligned}$$

    By adding \(\left( \begin{array}{ccc} \beta _{3}', &{}\quad \beta _{3}', &{}\quad \beta _{3}' \\ \end{array} \right)\), \(\mathbf{m}_{13}''\) = \(\mathbf{m}_{13}'\) + \(\left( \begin{array}{ccc} \beta '_{3},&\quad \beta '_{3},&\quad \beta '_{3} \end{array} \right)\) = \(\left( \alpha ^{4}, \alpha ^{6}, \alpha ^{4}\right)\) + \(\left( \begin{array}{ccc} \beta ^{3},&\quad \beta ^{3},&\quad \beta ^{3} \end{array} \right)\) = \(\left( \beta ^{10094}, \beta ^{31339}, \beta ^{10094}\right)\) so that \(\mathbf{m}'' = (\mathbf{m}_{13}'')\) is encoded by \({\mathcal {C}}(5, 3, 3)_{8^{5}}\) as \(\mathbf{c} = \mathbf{m}''{} \mathbf{G} = (\mathbf{m}_{13}'')\mathbf{G} = \left( \beta ^{31399}, \beta ^{13222}, \beta ^{10733}, \beta ^{24757}, \beta ^{23790}\right)\).

Remark 1

Observe that, in the above coding procedure, the \(p^{k}\)-ary information symbols of arbitrary blocklength (up to k) is subsequently channel encoded by the respective child code and the mother code. In doing so, the derived multiple-rate code \({\mathcal {C}}_{ MR}^{(1)}\) restricts the message alphabets for the user information symbols of length \(\ell \le k\) to be from the ‘smaller’ ground field \(\texttt {GF}(p^{k})\) rather than from the ‘bigger’ composite field \(\texttt {GF}({(p^{k})}^{n})\) - that is, \(\mathbf{m}_{\ell } \in [\texttt {GF}(p^{k})]^{\ell }\) but \(\mathbf{c} \in [\texttt {GF}(q^{n})]^{n}\). Although this turns out to be the reason for the lower information rates \(1/n^{2}, 2/n^{2},\ldots , k/n^{2}\), the coding procedure can be extended to attain a wide range of rates including the code rates \(1/n, 2/n, \ldots , k/n\) as detailed in the following section. In that, the composite field \(\texttt {GF}(q^{n})\) is considered over \(\texttt {GF}(p^{n})\) instead of \(\texttt {GF}(p^{k})\). Also, n children codes are used instead of k.

5 Multiple-rate codes: Construction-II

Considering the composite field \(\texttt {GF}((p^{k})^{n})\), the constructed multiple-rate code \({\mathcal {C}}_{ MR}^{(1)}(n, \{1, 2, \ldots , k\}_{q}, d)_{q^{n}}\) supports the encoding of variable-length messages; though the coding scheme introduced enabled multiple-rate feature, the efficiency of the derived multiple-rate code is severely affected by having lower code rates \({\mathcal {R}}_{1} = 1/n^{2}, 2/n^{2}, \ldots , k/n^{2}\)—rates much lower than that of the mother and children codes involved. In contrast to this lower multiple code-rate support, this section presents an improvement of the coding scheme, in that, by considering the composite field \(\texttt {GF}((p^{n})^{n})\), it derives a multiple-rate code that not only handles the encoding and decoding of user messages of arbitrary lengths, also provides the support of higher code rates \({\mathcal {R}}_{k} = k/n^{2}, (k+1)/n^{2}, \ldots , kn/n^{2}\) up to the fixed rates supported by the mother and children codes, where k is the dimension of the mother code in both the coding schemes.

Consider the code \({\mathcal {C}}(n,~ k,~ d)\) defined over the composite field \(\texttt {GF}(q^{n})\) with \(q=p^{n}\), where k and n are such that \(n\ge k\ge 1\). Let \(\beta\) be a root of a primitive polynomial of degree n over \(\texttt {GF}(q)\). Clearly, \(\texttt {GF}(q^{n}) = \{0, \beta , \beta ^{2}, \ldots , \beta ^{q^{n}-1} \}\). Let \(\alpha\) be a primitive element in \(\texttt {GF}(q)\) so that \(\texttt {GF}(q) = \{0, \alpha , \alpha ^{2}, \ldots , \alpha ^{q-1}\}\). Further, in order to manage variable-length encoding of user messages, consider defining n children codes \({\mathcal {C}}_{i}(n,~ i)\) for \(i = 1,2, \ldots , n\) over the ground field \(\texttt {GF}(p^{n})\) with the generator matrix \(\mathbf{G}_{i}\):

$$\begin{aligned} \mathbf{G}_{i}&= \left( \begin{array}{cccccc} \alpha _{1} &{}\quad \alpha _{2} &{}\quad \cdots &{}\quad \alpha _{n} \\ \alpha _{1}^{p} &{}\quad \alpha _{2}^{p} &{}\quad \cdots &{}\quad \alpha _{n}^{p} \\ \vdots &{}\quad \vdots &{}\quad \ddots &{}\quad \vdots \\ ~\alpha _{1}^{p^{i-1}} &{}\quad ~\alpha _{2}^{p^{i-1}} &{}\quad \cdots &{}\quad ~\alpha _{n}^{p^{i-1}} \\ \end{array} \right) \end{aligned}$$

where \(\alpha _{1}, \alpha _{2}, \ldots , \alpha _{n}\) is a self-complementary basis in \(\texttt {GF}(p^{n})\). In contrast to the previous construction, each child code \({\mathcal {C}}_{i}(n,~ i)_{p^{n}}\) is an i-dimensional MRD code of length n, rather than of length k. Further, \({\mathcal {C}}_{i}\subseteq [\texttt {GF}(p^{n})]^{n}\) and \({\mathcal {C}}_{i}=[\texttt {GF}(p^{n})]^{n}\) when \(i=n\). Moreover, the child code \({\mathcal {C}}_{i}\) obtained by \(\mathbf{G}_{i}\) is an LCD code [26, 27].

The nest of mother and children codes defined respectively over \(\texttt {GF}(q^{n})\) and \(\texttt {GF}(p^{n})\) as above can then be used to encode and decode \(p^{n}\)-ary user messages of lengths from k to kn simultaneously; the procedure is explained in the following subsections. The orthogonal projectors associated with the children (LCD) codes play a crucial role in the decoding of encoded user messages of variable lengths.

5.1 Encoding

For \(1\le \ell _{1}, \ell _{2}, \ldots , \ell _{k} \le n\), consider \(\mathbf{m}=(\mathbf{m}_{1\ell _{1}}, \mathbf{m}_{2\ell _{2}},\ldots , \mathbf{m}_{k\ell _{{k}}})\in [\texttt {GF}(q)]^{\ell _{1}}\times [\texttt {GF}(q)]^{\ell _{2}}\times \cdots \times [\texttt {GF}(q)]^{\ell _{k}}\) as the actual \(p^{n}\)-ary message-block of length \(\ell = \ell _{1} + \ell _{2} + \cdots + \ell _{k}\), that is to be transmitted over the noisy \(q^{n}\)-ary channel, where \(\mathbf{m}_{i\ell _{i}}=(m_{i1}, m_{i2},\ldots , m_{i\ell _{i}})\in [\texttt {GF}(q)]^{\ell _{i}}\) and \(\ell = k, k+1, \ldots , kn\).

For each \(i=1,2, \ldots , k\), encode the ith message-segment \(\mathbf{m}_{i\ell _{i}}\) (of the user message-block \(\mathbf{m}\)) of length \(\ell _{i}\) using the child code \({\mathcal {C}}_{\ell _{i}}(n,~ \ell _{i})\) to obtain an n-length vector \(\mathbf{m}_{in}'\) (say). Then, by considering a vector \((m_{i1}', m_{i2}',\ldots , m_{in}')\) in \([\texttt {GF}(q)]^{n}\) also as a symbol element \(\mathbf{m}_{in}'\) in \(\texttt {GF}(q^{n})\), one obtains the k-length children-encoded vector-block \(\mathbf{m}'= (\mathbf{m}_{1n}', \mathbf{m}_{2n}',\ldots , \mathbf{m}_{kn}') \in [\texttt {GF}(q^{n})]^{k}\). The complementary-dual property of the children codes considered plays an important role in the decoding of user messages of different lengths; in that, the orthogonal projectors will be used to recover \(\mathbf{m}_{i\ell _{i}}\) from \(\mathbf{m}_{in}'\).

Further, in order for the coder to handle multiple rates efficiently, an element \(\beta _{\ell _{i}}' \in \texttt {GF}(q^{n})\) is added to (the ith children encoded-segment) \(\mathbf{m}_{in}' \in \texttt {GF}(q^{n})\) - resulting in an element \(\mathbf{m}_{in}''\) of \(\texttt {GF}(q^{n})\):

$$\begin{aligned} \quad \mathbf{m}_{1n}'' &= \mathbf{m}_{1n}' ~+~ \beta _{\ell _{1}}' \\ \mathbf{m}_{2n}'' &= {} \mathbf{m}_{2n}' ~+~ \beta _{\ell _{2}}' \\&\vdots&\\ \text{ and }\quad \mathbf{m}_{kn}'' &= {} \mathbf{m}_{kn}' ~+~ \beta _{\ell _{k}}'\quad \quad \end{aligned}$$

where \(\beta _{\ell _{i}}'\) \(\leftrightarrow\) \(\left( \alpha _{\ell _{i}}',\alpha _{\ell _{i}}',\ldots , \alpha _{\ell _{i}}'\right) \in [\texttt {GF}(p^{n})]^{n}\) and \(\alpha _{1}',\alpha _{2}',\ldots , \alpha _{n}' \in \texttt {GF}(p^{n})\) are distinctly chosen such that \(\alpha _{1}',\alpha _{2}',\ldots , \alpha _{n}' \notin \texttt {GF}(p)\). Note that \(\mathbf{m}_{in}' \leftrightarrow \mathbf{m}_{i\ell _{i}}{} \mathbf{G}_{\ell _{i}}\) and \(\beta _{\ell _{i}}'\in \texttt {GF}(q^{n})\) is purposefully added to the \(\mathbf{m}_{in}'\in \texttt {GF}(q^{n})\) that was previously encoded by the child code \({\mathcal {C}}_{\ell _{i}}(n,~ \ell _{i})\); this padding of \(\beta _{\ell _{i}}'\) to \(\mathbf{m}_{in}'\) helps the decoder to identify the correct child code \({\mathcal {C}}_{\ell _{i}}(n,~ \ell _{i})\) that is used for encoding. Observe that \(\mathbf{m}_{in}' \leftrightarrow (m_{i1}', m_{i2}',\ldots , m_{in}') \in {\mathcal {C}}_{\ell _{i}}(n,~ \ell _{i})\) and \(\mathbf{m}_{in}'' = \mathbf{m}_{in}' + \beta _{\ell _{i}}' \leftrightarrow (m_{i1}'', m_{i2}'',\ldots , m_{in}'')\notin {\mathcal {C}}_{\ell _{i}}(n,~ \ell _{i})\) except for \(\ell _{i}=n\). Let \(\mathbf{m}''\) = \((\mathbf{m}_{1n}''\), \(\mathbf{m}_{2n}''\),\(\ldots , \mathbf{m}_{kn}'')\). Clearly, \(\mathbf{m}'' \in [\texttt {GF}(q^{n})]^{k}\). Finally, the resultant k-length vector \(\mathbf{m}''\) is channel encoded conventionally by the mother code \({\mathcal {C}}(n,~ k,~ d)\) through \(\mathbf{G}\) to obtain an n-length \(q^{n}\)-ary codeword \(\mathbf{c}\) for transmission. Assume that the fixed element \(\beta _{\ell _{i}}'\) is known both at the encoder and decoder.

The improved multiple-rate encoding procedure presented above comprised of \(n+1\) codes - a mother code over the ‘bigger’ composite field and n children codes over the ‘smaller’ ground field. The coding scheme is depicted via the block diagram as shown in Fig. 1. The diagram depicts the typical sequential components of the proposed coding scheme. The coding procedure actually consists of inner- and outer- encodings that can be described by three mappings as discussed below. Firstly, the outer-encoding is carried out by k (out of n children to operate on k blocks) children codes, which encode q-ary messages of length \(\ell _{i}\) into codewords of length n; this results in k n-tuples over \(\texttt {GF}(q)\). This outer-encoding by the children codes is described by the mapping \({\mathcal {E}}_{i}: \left[ \texttt {GF}(q)\right] ^{\ell _{i}} \rightarrow {\mathcal {C}}_{\ell _{i}}\) given by \(\mathbf{m}_{i\ell _{i}} \mapsto \mathbf{m}_{in}'\). Noting that there is a one-to-one correspondence between the elements of the fields \([\texttt {GF}(q)]^{n}\) and \(\texttt {GF}(q^{n})\), n-tuples of \({\mathcal {C}}_{\ell _{i}}\subseteq [\texttt {GF}(q)]^{n}\) are mapped as symbols of \(\texttt {GF}(q^{n})\) through the bijection \(\texttt {g}: \left[ \texttt {GF}(q)\right] ^{n} \rightarrow \texttt {GF}(q^{n})\). Finally, the inner encoder \({\mathcal {C}}\) channel encodes the respective coded-symbols of length k conventionally into a codeword of length n over \(\texttt {GF}(q^{n})\) for transmission; this inner-encoding is specified by \({\mathcal {E}}: {\mathcal {C}}_{\ell _{1}}\times {\mathcal {C}}_{\ell _{2}}\times \cdots \times {\mathcal {C}}_{\ell _{k}} \rightarrow {\mathcal {C}}\) defined as \((\texttt {g}(\mathbf{m}_{1n}'), \texttt {g}(\mathbf{m}_{2n}'), \ldots , \texttt {g}(\mathbf{m}_{kn}')) \mapsto {\mathbf{c}}\). Note that \({\mathcal {C}}_{\ell _{i}} \subseteq [\texttt {GF}(q)]^{n}\) and \({\mathcal {C}} \subseteq [\texttt {GF}(q^{n})]^{n}\).

Fig. 1
figure 1

Block diagram showing steps involved in the proposed multiple-rate coding scheme

5.2 Decoding

Assume that an n-length vector \(\mathbf{r}= \mathbf{c}+\mathbf{e}\) over \(\texttt {GF}(q^{n})\) is received when \(\mathbf{c}\in {\mathcal {C}}\) was transmitted. The receiver then employs the decoding technique of the mother code \({\mathcal {C}}(n,~ k,~ d)\) to \(\mathbf{r}\) - decoding conventionally. As long as the rank of the error-vector e is less than or equal to \(\lfloor \frac{d-1}{2}\rfloor\), the decoder outputs the k-length vector \(\mathbf{m}''\) = \((\mathbf{m}_{1n}'', \mathbf{m}_{2n}'',\ldots , \mathbf{m}_{kn}'')\). The problem now for the receiver is to recover the actual \(\ell\)-length message \(\mathbf{m}\) from the k-length vector \(\mathbf{m}''\).

Recall that \(\mathbf{m}_{in}'' = \mathbf{m}_{in}' + \beta _{\ell _{i}}'\) with \(\mathbf{m}_{in}' \in \texttt {GF}(q^{n})\). The recovery of variable-length message-segments \(\mathbf{m}_{1\ell _{1}}, \mathbf{m}_{2\ell _{2}}, \ldots , \mathbf{m}_{k\ell _{k}}\) is carried out in two stages: in the first stage, the fixed element \(\beta _{\ell _{i}}'\) is identified (and hence the child code \({\mathcal {C}}_{\ell _{i}}\)) to obtain \(\mathbf{m}_{in}'\) from \(\mathbf{m}_{in}''\); secondly, the receiver uses the orthogonal projector associated with the child code \({\mathcal {C}}_{\ell _{i}}\) to recover the ith message-segment \(\mathbf{m}_{i\ell _{i}}\) from \(\mathbf{m}_{in}'\) as detailed below.

For \(\ell _{i}=1, 2, \ldots , n-1\): (for fixed i)

$$\begin{aligned} \mathrm{(1)} \quad \mathbf{let}\quad \mathbf{m}_{in}^{(0)} &= \mathbf{m}_{in}'' - \beta _{\ell _{i}}'. \quad \quad \quad \\ \mathrm{(2)} \quad \mathbf{set}\quad \mathbf{m}_{in}^{(1)} &= \mathbf{m}_{in}^{(0)}\varPi _{{\mathcal {C}}_{\ell _{i}}}; \\ \mathbf{m}_{in}^{(2)} &= \mathbf{m}_{in}^{(0)}\varPi _{{\mathcal {C}}_{\ell _{i}}^{\perp }}, \end{aligned}$$

where \(\mathbf{m}_{in}^{(0)} ~\leftrightarrow ~ \mathbf{m}_{in}'' - \beta _{\ell _{i}}'\). As long as \(\mathbf{m}_{in}^{(1)} = \mathbf{m}_{in}^{(0)} \in {\mathcal {C}}_{\ell _{i}}\) and \(\mathbf{m}_{in}^{(2)} = \mathbf{0}\) (an n-length zero-vector), upon decoding the n-length vector \(\mathbf{m}_{in}^{(1)}\) by the child code \({\mathcal {C}}_{\ell _{i}}(n,~ \ell _{i})\), the decoder outputs the actual message vector \(\mathbf{m}_{i\ell _{i}}\) (this second decoding by the child code \({\mathcal {C}}_{\ell _{i}}\) can be avoided if \(\mathbf{G}_{\ell _{i}}\) is in standard form). On the other hand, when the conditions are not met during the search till \(\ell _{i}=n-1\), the length \(\ell _{i}\) of the user message \(\mathbf{m}_{i\ell _{i}}\) must be n in this case and \(\mathbf{m}_{in}'\) should be \(\mathbf{m}_{in}^{(0)} = \mathbf{m}_{in}'' - \beta _{n}'\). The user message \(\mathbf{m}_{i\ell _{i}}\) can then be retrieved from \(\mathbf{m}_{in}'\) (this second decoding by the child code \({\mathcal {C}}_{n}\) can be avoided if \(\mathbf{G}_{n}\) is in standard form). In this way, for each \(i =1,2, \ldots , k\), the ith message-segment \(\mathbf{m}_{i\ell _{i}}\) (of length \(\ell _{i}\)) is recovered from the children-encoded message \(\mathbf{m}_{in}'\) (of length n) to obtain the actual \(\ell\)-length message-block \(\mathbf{m}= (\mathbf{m}_{1\ell _{1}}, \mathbf{m}_{2\ell _{2}},\ldots , \mathbf{m}_{k\ell _{k}}) \in [\texttt {GF}(q)]^{\ell _{1}}\times [\texttt {GF}(q)]^{\ell _{2}}\times \cdots \times [\texttt {GF}(q)]^{\ell _{k}}\) transmitted.

In addition to the conventional decoding by the mother code, the associated decoding procedure presented employs orthogonal projectors in the recovery of k message-segments from the mother-decoded vector. Eventually, the mother code is designed along with the children codes to support multiple rates. Consequently, the derived code, termed as the multiple-rate MRD code and denoted by \({\mathcal {C}}_{ MR}^{(2)}(n, \{k, k+1, \ldots , kn\}_{q}, d)_{q^{n}}\), facilitates transmission of user messages of arbitrary lengths \(\ell\) over \(\texttt {GF}(q)\) at rates \({\mathcal {R}}_{k} = \frac{\log _{q^{n}}|{\mathcal {C}}_{ MR}^{(2)}|}{n} = \frac{\log _{q^{n}}(q^{\ell })}{n} = \frac{\log _{q}(q^{\ell })}{n^{2}} = \frac{\ell }{n^{2}}\), where \(\ell = \ell _{1} + \ell _{2} + \cdots + \ell _{k}\). Since \(\ell =k, k+1, \ldots , n, n+1, \ldots , 2n, 2n+1, \ldots , kn\), we have \({\mathcal {R}}_{k} = \frac{k}{n^{2}}, \frac{k+1}{n^{2}}, \ldots , \frac{kn}{n^{2}}\).

By the very construction of the multiple-rate code \({\mathcal {C}}_{MR}^{(2)}\), its encoder can be described by the systematic encoding map: while a \(q^{n}\)-ary \({\mathcal {C}}(n, k, d)\)-code is given by an injective map \({\mathcal {E}}': \left[ \texttt {GF}(q^{n})\right] ^{k} \rightarrow \left[ \texttt {GF}(q^{n})\right] ^{n}\) from the \(q^{n}\)-ary symbols of length k to \(q^{n}\)-ary symbols of length n, the derived code \({\mathcal {C}}_{MR}^{(2)}\) has an associated encoding map \({\mathcal {E}}'': \left[ \texttt {GF}(q)\right] ^{\ell } \rightarrow \left[ \texttt {GF}(q^{n})\right] ^{n}\) from the q-ary strings of length \(\ell\) to \(q^{n}\)-ary symbols of length n.

Unlike the traditional fixed-rate coding schemes, in the proposed coding scheme, the q-ary information symbols of arbitrary blocklength (from k to kn) is encoded twice in two stages—first by the respective child/outer code encoding in k segments and the subsequent encoding of the resultant k-length vector (over \(\texttt {GF}(q^{n})\)) followed by the mother/inner code—to allow room for multiple-rate transmission over the noisy channel. In that, as opposed to the fixed-rate codes, the proposed multiple-rate code allows the message alphabets for the user information symbols of length \(\ell\) to be from across the ‘smaller’ ground field \(\texttt {GF}(q)\) and the ‘bigger’ composite field \(\texttt {GF}(q^{n})\). In a sense, the proposed coding procedure generalizes the conventional coding procedure of fixed k/n-rate coding and constructs codes operating at rates up to k/n. The mother code and n children (LCD) codes considered in this paper can be any linear error-correcting codes defined respectively over the composite field \(\texttt {GF}(q^{n})\) and \(\texttt {GF}(q)\), not necessarily MRD codes—they are merely used to facilitate the presentation of the proposed multiple-rate coding procedure; however, the LCD-property for the children codes and the padding of distinct elements to the children-encoded vectors are essential for the proposed (multiple-rate) decoding strategy.

6 Example—Coding for \({\mathcal {C}}_{ MR}^{(2)}(4, \{2, 3, 4, 5, 6, 7, 8\}_{16}, 3)_{16^{4}}\)

Consider \(q=2^{4}\), \(k=2\), and \(n=4\). Let \(\beta \in \texttt {GF}(16^{4})\) be a root of the primitive polynomial \(x^{4}+ x^{2}+\alpha x+ \alpha ^{2}\) over \(\texttt {GF}(16)\), where \(\alpha\) is a primitive element in \(\texttt {GF}(2^{4})\) satisfying \(\alpha ^{4}+\alpha +1=0\) [29]. Consider the ‘mother’ MRD code \({\mathcal {C}}(4, 2, 3)_{16^{4}}\) with the following generator matrix:

$$\begin{aligned} \mathbf{G}&= \left[ \begin{array}{cccc} 1 &{}\quad \beta &{}\quad \beta ^2 &{}\quad \beta ^3 \\ 1 &{}\quad \beta ^{16} &{}\quad \beta ^{32} &{}\quad \beta ^{48} \\ \end{array} \right] \end{aligned}$$

where \(\beta\) is a primitive element in \(\texttt {GF}(16^{4})\). Generator matrices for ‘children’ MRD codes \({\mathcal {C}}_{1}(4,~ 1)_{2^{4}}\), \({\mathcal {C}}_{2}(4,~ 2)_{2^{4}}\), \({\mathcal {C}}_{3}(4,~ 3)_{2^{4}}\) and \({\mathcal {C}}_{4}(4,~ 4)_{2^{4}}\) along with their associated orthogonal projectors:

$$\begin{aligned} \mathbf{G}_{1}&= \left[ \begin{array}{cccc} \alpha ^3&\quad \alpha ^7&\quad \alpha ^{12}&\quad \alpha ^{13} \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{1}} = \left[ \begin{array}{cccc} \alpha ^6 &{}\quad \alpha ^{10} &{}\quad 1 &{}\quad \alpha \\ \alpha ^{10} &{}\quad \alpha ^{14} &{}\quad \alpha ^4 &{}\quad \alpha ^5 \\ 1 &{}\quad \alpha ^4 &{}\quad \alpha ^9 &{}\quad \alpha ^{10} \\ \alpha &{}\quad \alpha ^5 &{}\quad \alpha ^{10} &{}\quad \alpha ^{11} \end{array} \right] \quad \quad \\ \mathbf{G}_{2}&= \left[ \begin{array}{cccc} \alpha ^3 &{} \quad \alpha ^7 &{}\quad \alpha ^{12} &{}\quad \alpha ^{13} \\ \alpha ^6 &{}\quad \alpha ^{14} &{}\quad \alpha ^9 &{}\quad \alpha ^{11} \end{array}\right] ;\quad \varPi _{{\mathcal {C}}_{2}} = \left[ \begin{array}{cccc} \alpha ^4 &{}\quad 1 &{}\quad 0 &{}\quad \alpha ^5 \\ 1 &{}\quad \alpha ^2 &{}\quad \alpha ^5 &{}\quad 1 \\ 0 &{}\quad \alpha ^5 &{}\quad \alpha &{}\quad 1 \\ \alpha ^5 &{}\quad 1 &{}\quad 1 &{}\quad \alpha ^8 \end{array} \right] \\ \mathbf{G}_{3} &= \left[ \begin{array}{cccc} \alpha ^3 &{}\quad \alpha ^7 &{}\quad \alpha ^{12} &{}\quad \alpha ^{13} \\ \alpha ^6 &{}\quad \alpha ^{14} &{}\quad \alpha ^9 &{}\quad \alpha ^{11} \\ \alpha ^{12} &{}\quad \alpha ^{13} &{}\quad \alpha ^3 &{}\quad \alpha ^7 \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{3}} = \left[ \begin{array}{cccc} \alpha ^{14} &{}\quad \alpha ^5 &{}\quad 1 &{}\quad \alpha ^8 \\ \alpha ^5 &{}\quad \alpha ^9 &{}\quad \alpha ^2 &{}\quad \alpha ^{10} \\ 1 &{}\quad \alpha ^2 &{}\quad \alpha ^{11} &{}\quad \alpha ^5 \\ \alpha ^8 &{}\quad \alpha ^{10} &{}\quad \alpha ^5 &{}\quad \alpha ^{6} \end{array} \right] \\ \text{ and }~ \mathbf{G}_{4}&= \left[ \begin{array}{cccc} \alpha ^3 &{}\quad \alpha ^7 &{}\quad \alpha ^{12} &{}\quad \alpha ^{13} \\ \alpha ^6 &{}\quad \alpha ^{14} &{}\quad \alpha ^{9} &{}\quad \alpha ^{11} \\ \alpha ^{12} &{}\quad \alpha ^{13} &{}\quad \alpha ^{3} &{}\quad \alpha ^{7} \\ \alpha ^9 &{}\quad \alpha ^{11} &{}\quad \alpha ^{6} &{}\quad \alpha ^{14} \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{4}} = \left[ \begin{array}{cccc} 1 &{}\quad 0 &{}\quad 0 &{}\quad 0\\ 0 &{}\quad 1 &{}\quad 0 &{}\quad 0\\ 0 &{}\quad 0 &{}\quad 1 &{}\quad 0\\ 0 &{}\quad 0 &{}\quad 0 &{}\quad 1 \end{array} \right] . \end{aligned}$$

Further, parity-check matrix \(\mathbf{H}_{i}\) associated with the generator matrix \(\mathbf{G}_{i}\) and orthogonal projector \(\varPi _{{\mathcal {C}}_{i}^{\perp }}\) of the dual code \({\mathcal {C}}_{i}^{\perp }\) (\(i=1, 2, 3, 4\)) are given below:

$$\begin{aligned} \mathbf{H}_{1}&= \left[ \begin{array}{cccc} \alpha ^6 &{}\quad \alpha ^{14} &{}\quad \alpha ^9 &{}\quad \alpha ^{11} \\ \alpha ^{12} &{}\quad \alpha ^{13} &{}\quad \alpha ^3 &{}\quad \alpha ^7 \\ \alpha ^9 &{}\quad \alpha ^{11} &{}\quad \alpha ^6 &{}\quad \alpha ^{14} \end{array} \right] ; \quad \varPi _{{\mathcal {C}}_{1}^{\perp }} = \left[ \begin{array}{cccc} \alpha ^{13} &{}\quad \alpha ^{10} &{}\quad 1 &{}\quad \alpha \\ \alpha ^{10} &{}\quad \alpha ^{3} &{}\quad \alpha ^4 &{}\quad \alpha ^5 \\ 1 &{}\quad \alpha ^4 &{}\quad \alpha ^7 &{}\quad \alpha ^{10} \\ \alpha &{}\quad \alpha ^5 &{}\quad \alpha ^{10} &{}\quad \alpha ^{12} \end{array} \right] \quad \quad \\ \mathbf{H}_{2}&= {} \left[ \begin{array}{cccc} \alpha ^{12} &{}\quad \alpha ^{13} &{}\quad \alpha ^3 &{}\quad \alpha ^7 \\ \alpha ^9 &{}\quad \alpha ^{11} &{}\quad \alpha ^6 &{}\quad \alpha ^{14} \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{2}^{\perp }} = \left[ \begin{array}{cccc} \alpha &{}\quad 1 &{}\quad 0 &{}\quad \alpha ^5 \\ 1 &{}\quad \alpha ^8 &{}\quad \alpha ^5 &{}\quad 1 \\ 0 &{}\quad \alpha ^5 &{}\quad \alpha ^4 &{}\quad 1 \\ \alpha ^5 &{}\quad 1 &{}\quad 1 &{}\quad \alpha ^2 \end{array} \right] \\ \mathbf{H}_{3}&= {} \left[ \begin{array}{cccc} \alpha ^9&\quad \alpha ^{11}&\quad \alpha ^6&\quad \alpha ^{14} \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{3}^{\perp }} = \left[ \begin{array}{cccc} \alpha ^3 &{}\quad \alpha ^5 &{}\quad 1 &{}\quad \alpha ^8 \\ \alpha ^5 &{}\quad \alpha ^7 &{}\quad \alpha ^2 &{}\quad \alpha ^{10} \\ 1 &{}\quad \alpha ^2 &{}\quad \alpha ^{12} &{}\quad \alpha ^5 \\ \alpha ^8 &{}\quad \alpha ^{10} &{}\quad \alpha ^5 &{}\quad \alpha ^{13} \end{array} \right] \\ \text{ and }~ \mathbf{H}_{4}&= {} \left[ \begin{array}{cccc} 0 &{}\quad 0 &{}\quad 0 &{}\quad 0 \\ \end{array} \right] ;\quad \varPi _{{\mathcal {C}}_{4}^{\perp }} = \left[ \begin{array}{cccc} 0 &{}\quad 0 &{}\quad 0 &{}\quad 0 \\ 0 &{}\quad 0 &{}\quad 0 &{}\quad 0 \\ 0 &{}\quad 0 &{}\quad 0 &{}\quad 0 \\ 0 &{}\quad 0 &{}\quad 0 &{}\quad 0 \end{array} \right] . \end{aligned}$$

Take \(\beta _{1}' =\beta ^{51362} ~\leftrightarrow ~ \left( \begin{array}{cccc} ~\alpha , &{}\quad ~\alpha , &{}\quad ~\alpha , &{}\quad ~\alpha \, \\ \end{array} \right)\)\(\beta _{2}' =\beta ^{25148} ~\leftrightarrow ~ \left( \begin{array}{cccc} \alpha ^2, &{}\quad \alpha ^2, &{}\quad \alpha ^2, &{}\quad \alpha ^2 \\ \end{array} \right)\)\(\beta _{3}' =\beta ^{55731} ~\leftrightarrow \left( \begin{array}{cccc} \alpha ^3, &{}\quad \alpha ^3, &{}\quad \alpha ^3, &{}\quad \alpha ^3 \\ \end{array} \right)\), and \(\beta _{4}' =\beta ^{20779} ~\leftrightarrow \left( \begin{array}{cccc} \alpha ^4,&\quad \alpha ^4,&\quad \alpha ^4,&\quad \alpha ^4 \end{array} \right)\) for instance. The proposed multi-rate coding procedure is demonstrated in the following subsections in several cases.

6.1 Encoding for \({\mathcal {C}}_{ MR}^{(2)}(4, \{2, 3, 4, 5, 6, 7, 8\}_{16}, 3)_{16^{4}}\)

Since \(k=2\), we have \(1~\le ~\ell _{1},~\ell _{2}~\le ~4\) so that message \(\mathbf{m} = (\mathbf{m}_{1\ell _{1}},~ \mathbf{m}_{2\ell _{2}}) \in [\texttt {GF}(q)]^{\ell _{1}} \times [\texttt {GF}(q)]^{\ell _{2}}\) of lengths \(\ell _{1}\) and \(\ell _{2}=1\) or 2 or 3 or 4 can be encoded for transmission over the \(16^{4}\)-ary channel.

  1. (1)

    For \(\ell _{1}\) = \(\ell _{2}\) = \(\ell\) : consider \(\mathbf{m} = (\mathbf{m}_{13},~ \mathbf{m}_{23}) = ((\alpha , \alpha ^{2}, \alpha ^{3}),(1, \alpha , \alpha ^{2}))\). The q-ary message \(\mathbf{m}_{13}\) and \(\mathbf{m}_{23}\) is encoded by the child code \({\mathcal {C}}_{3}(4,~ 3)_{2^{4}}\) and \(\mathbf{m}_{14}', \mathbf{m}_{24}'\) is obtained as follows:

    $$\begin{aligned} \mathbf{m}_{13}{} \mathbf{G}_{3}&= {} (\alpha , ~\alpha ^{2}, ~\alpha ^{3})\mathbf{G}_{3} = \left( \begin{array}{cccc} \alpha ^{10}, &{}\quad \alpha ^{8}, &{}\quad \alpha ^{12}, &{}\quad \alpha ^{4} \\ \end{array} \right) ~\leftrightarrow ~ \mathbf{m}_{14}' \quad \\ \mathbf{m}_{23}{} \mathbf{G}_{3}&= {} (~1,~\alpha ,~\alpha ^{2})\mathbf{G}_{3} ~= \left( \begin{array}{cccc} \alpha ^{9}, &{}\quad \alpha ^{7}, &{}\quad \alpha ^{11}, &{}\quad \alpha ^{3} \\ \end{array}\right) ~\leftrightarrow ~ \mathbf{m}_{24}' \end{aligned}$$

    which correspond to the elements \(\beta ^{1853}\) and \(\beta ^{32436}\) of \(\texttt {GF}(16^4)\). Thus \(\mathbf {m}_{14}''\) = \(\mathbf{m}_{14}'\) + \(\beta _{3}'\) = \(\beta ^{1853}\) + \(\beta ^{55731}\) = \(\beta ^{61931}\) and \(\mathbf {m}_{24}''\) = \(\mathbf{m}_{24}'\) + \(\beta _{3}'\) = \(\beta ^{32436}\) + \(\beta ^{55731}\) = \(\beta ^{26814}\). Then the \(q^{n}\)-ary message \(\mathbf{m}'' = (\mathbf{m}_{14}'',~ \mathbf{m}_{24}'') = (\beta ^{61931},~ \beta ^{26814})\) is finally channel encoded with mother code \({\mathcal {C}}(4, 2, 3)_{16^{4}}\) to obtain \(\mathbf{c}_{1}\) (say):

    $$\begin{aligned} \quad \quad \mathbf{m}''{} \mathbf{G}&= {} (\mathbf{m}_{14}'',~ \mathbf{m}_{24}'')\mathbf{G} ~= \left( \begin{array}{cccc} \beta ^{41174},&\quad \beta ^{34647},&\quad \beta ^{65220},&\quad \beta ^{7249} \end{array}\right) = \mathbf{c}_{1}. \end{aligned}$$
  2. (2)

    For \(\ell _{1}\) \(\ne\) \(\ell _{2}\): consider \(\mathbf{m} = (\mathbf{m}_{13},~ \mathbf{m}_{22}) = \left( (\alpha , ~{\alpha ^2}, ~{\alpha ^3}), (~1, ~{\alpha ^2})\right)\). This time the child code \({\mathcal {C}}_{3}(4,~ 3)_{2^{4}}\) and \({\mathcal {C}}_{2}(4,~ 2)_{2^{4}}\) are used to encode \(\mathbf{m}_{13}\) and \(\mathbf{m}_{22}\). Consequently, \(\mathbf{m}_{14}'\) and \(\mathbf{m}_{24}'\) are obtained as follows:

    $$\begin{aligned} \mathbf{m}_{13}{} \mathbf{G}_{3}&= {} (~\alpha ,~\alpha ^{2},~\alpha ^{3})\mathbf{G}_{3} = \left( \begin{array}{cccc} \alpha ^{10}, &{}\quad \alpha ^{8}, &{}\quad \alpha ^{12}, &{}\quad \alpha ^{4} \\ \end{array} \right) ~\leftrightarrow ~ \mathbf{m}_{14}' \\ \mathbf{m}_{22}{} \mathbf{G}_{2}&= {} (~1,~\alpha ^{2})\mathbf{G}_{2} \quad \quad ~= \left( \begin{array}{cccc} \alpha ^{4}, &{}\quad \alpha ^{9} &{}\quad \alpha ^{3} &{}\quad \alpha \\ \end{array} \right) ~\leftrightarrow ~ \mathbf{m}_{24}' \end{aligned}$$

    Let \(\mathbf {m}_{14}''\) = \(\mathbf{m}_{14}'\) + \(\beta _{3}'\) = \(\beta ^{1853}\) + \(\beta ^{55731}\) = \(\beta ^{61931}\) and \(\mathbf {m}_{24}''\) = \(\mathbf{m}_{24}'\) + \(\beta _{2}'\) = \(\beta ^{28078}\) + \(\beta ^{25148}\) = \(\beta ^{41364}\). Thus

    $$\begin{aligned} \mathbf{m}''{} \mathbf{G}& = (\mathbf{m}_{14}'',~ \mathbf{m}_{24}'')\mathbf{G} = \left( \begin{array}{cccc} \beta ^{43269},&\quad \beta ^{31541},&\quad \beta ^{1865},&\quad \beta ^{61449} \end{array}\right) = \mathbf{c}_{2}. \end{aligned}$$

6.2 Decoding for \({\mathcal {C}}_{ MR}^{(2)}(4, \{2, 3, 4, 5, 6, 7, 8\}_{16}, 3)_{16^{4}}\)

By employing the mother code \({\mathcal {C}}(4, 2, 3)_{16^{4}}\), the transmitted codeword \(\mathbf{c}_{j}\) (for fixed j) can be recovered from a received vector \(\mathbf{r} = \mathbf{c}_{j} + \mathbf{e}\), as long as the error-vector \(\mathbf{e}\) is of rank at most 1. After retrieving the transmitted codeword \(\mathbf{c}_{j}\) and hence the message \(\mathbf{m}''\), the receiver then employs the orthogonal projectors and recovers the actual user message (\(\mathbf{m}_{1\ell _{1}}\), \(\mathbf{m}_{2\ell _{2}}\)) of length \(\ell _{1}\) + \(\ell _{2}\) from \(\mathbf{m}''\) (\(1\le \ell _{1}, ~\ell _{2} \le 4\)) as discussed below.

Case 1: Recovering (\(\mathbf{m}_{13}\), \(\mathbf{m}_{23}\)) from \(\mathbf{c}_{1}\):

(1) \(\ell _{1} = \ell _{2} = 1\):

$$\begin{aligned} \mathbf{m}^{(0)}_{14}&= {} \mathbf{m}_{14}'' - \beta _{1}' = \beta ^{61931} - \beta ^{51362} = \beta ^{3857} ~\leftrightarrow \left( \begin{array}{cccc} \alpha ^{13},&\quad \alpha ^{12},&\quad \alpha ^{8},&\quad \alpha ^{14} \end{array}\right) ; \quad \quad \quad \\ \mathbf{m}^{(1)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{1}} ~= \left( ~\alpha ^6,~\alpha ^{10},~1,~\alpha \right) ;\\ \mathbf{m}^{(2)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{1}^{\perp }} = \left( ~1,~\alpha ^3,~\alpha ^2,~\alpha ^7\right) , \text{ and } \\ \mathbf{m}^{(0)}_{24}&= {} \mathbf{m}_{24}'' - \beta _{1}' = \beta ^{26814} - \beta ^{51362} = \beta ^{49939} ~\leftrightarrow \left( \begin{array}{cccc} 0,&\quad 1,&\quad \alpha ^{2},&\quad \alpha \end{array}\right) ;\\ \mathbf{m}^{(1)}_{24}&= {} \mathbf{m}^{(0)}_{24} \varPi _{{\mathcal {C}}_{1}} ~= \left( \alpha ^{10},\alpha ^{14},\alpha ^4,\alpha ^5\right) ;\\ \mathbf{m}^{(2)}_{24}&= {} \mathbf{m}^{(0)}_{24} \varPi _{{\mathcal {C}}_{1}^{\perp }} = \left( \alpha ^{10},\alpha ^3,\alpha ^{10},\alpha ^2\right) . \end{aligned}$$

As the conditions are not met for either \(\ell _{1}=1\) or \(\ell _{2}=1\), the decoder moves to the next step.

(2) \(\ell _{1}\) = \(\ell _{2}\) = 2:

$$\begin{aligned} \mathbf{m}^{(0)}_{14}&= {} \mathbf{m}_{14}'' - \beta _{2}' = \beta ^{61931} - \beta ^{25148} = \beta ^{21810} ~\leftrightarrow \left( \alpha ^6,\alpha ^{11},\alpha ^2,\alpha ^3\right) ; \quad \quad \quad \\ \mathbf{m}^{(1)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{2}} ~= \left( \begin{array}{cccc} \alpha ^{6},&\alpha ,&\alpha ,&\alpha ^{9} \end{array}\right) ; \\ \mathbf{m}^{(2)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{2}^{\perp }} = \left( \begin{array}{cccc} 0,&\quad \alpha ^{6},&\quad \alpha ^{5},&\quad \alpha \end{array}\right) , \text{ and } \\ \mathbf{m}^{(0)}_{24}&= {} \mathbf{m}_{24}'' - \beta _{2}' = \beta ^{26814} - \beta ^{25148} = \beta ^{8972} ~~\leftrightarrow \left( ~1,~0,~\alpha ^8,~\alpha ^4\right) ; \\ \mathbf{m}^{(1)}_{24}&= {} \mathbf{m}^{(0)}_{24} \varPi _{{\mathcal {C}}_{2}} ~= \left( ~\alpha ^{14},\alpha ^{12},~\alpha ^{14},\alpha ^{6}\right) ; \\ \mathbf{m}^{(2)}_{24}&= {} \mathbf{m}^{(0)}_{24} \varPi _{{\mathcal {C}}_{2}^{\perp }} = \left( \begin{array}{ccccc} \alpha ^{3},&\quad \alpha ^{12},&\quad \alpha ^{6},&\quad \alpha ^{12} \end{array}\right) . \end{aligned}$$

Again, as the required conditions are not met for either \(\ell _{1}=2\) or \(\ell _{2}=2\), the decoder goes to the next step.

(3) \(\ell _{1}\) = \(\ell _{2}\) = 3:

$$\begin{aligned} \mathbf{m}^{(0)}_{14}&= {} \mathbf{m}_{14}'' - \beta _{3}' = \beta ^{61931} - \beta ^{55731} = \beta ^{1853} ~\leftrightarrow \left( \alpha ^{10},\alpha ^8,\alpha ^{12},\alpha ^4\right) ; \quad \quad \quad \\ \mathbf{m}^{(1)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{3}} ~= \left( \begin{array}{cccc} \alpha ^{10},&\quad \alpha ^8,&\quad \alpha ^{12},&\quad \alpha ^4 \end{array}\right) ; \\ \mathbf{m}^{(2)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{3}^{\perp }} = \left( \begin{array}{cccc} 0,&\quad 0,&\quad 0,&\quad 0 \end{array}\right) , \text{ and } \\ \mathbf{m}^{(0)}_{24}&= {} \mathbf{m}_{24}'' - \beta _{3}' = \beta ^{26814} - \beta ^{55731} = \beta ^{32436} ~\leftrightarrow \left( \alpha ^9,\alpha ^7,\alpha ^{11},\alpha ^3\right) ; \\ \mathbf{m}^{(1)}_{24}&= {} \mathbf{m}^{(0)}_{24} \varPi _{{\mathcal {C}}_{3}} ~= \left( \begin{array}{cccc} \alpha ^{9},&\quad \alpha ^7,&\quad \alpha ^{11},&\quad \alpha ^3 \end{array}\right) ; \\ \mathbf{m}^{(2)}_{24}&= {} \mathbf{m}^{(0)}_{24} \varPi _{{\mathcal {C}}_{3}^{\perp }} = \left( \begin{array}{cccc} 0,&\quad 0,&\quad 0,&\quad 0 \end{array}\right) , \end{aligned}$$

where \(\beta ^{1853} \leftrightarrow \left( \alpha ^{10},\alpha ^{8},\alpha ^{12},\alpha ^{4}\right) = \mathbf{m}^{(0)}_{14}\) and \(\beta ^{32436} \leftrightarrow \left( \alpha ^9,\alpha ^7,\alpha ^{11},\alpha ^3\right) = \mathbf{m}^{(0)}_{24}\). In this case, conditions are met at \(\ell _{1}=3\) and \(\ell _{2}=3\) so that the child code \({\mathcal {C}}_{3}(4, 3)_{16}\) is used and \(\mathbf{m} = \left( (\alpha , {\alpha ^2}, {\alpha ^3}), (1,\alpha , {\alpha ^2})\right)\) is recovered from (\(\mathbf{m}_{14}^{(1)}\), \(\mathbf{m}_{24}^{(1)}\)) and hence \(\mathbf{m} = (\mathbf{m}_{13}, \mathbf{m}_{23}) = \left( (\alpha , {\alpha ^2}, {\alpha ^3}), (1,\alpha , {\alpha ^2})\right)\).

Case 2: Recovering (\(\mathbf{m}_{13}\), \(\mathbf{m}_{22}\)) from \(\mathbf{c}_{2}\):

(1) \(\ell _{1}\) = \(\ell _{2}\) = 1:

$$\begin{aligned} \mathbf{m}^{(0)}_{14}&= {} \mathbf{m}_{14}'' - \beta _{1}' = \beta ^{61931} - \beta ^{51362} = \beta ^{3857} ~\leftrightarrow \left( \alpha ^{13},\alpha ^{12},\alpha ^8,\alpha ^{14}\right) ; \quad \quad \quad \\ \mathbf{m}^{(1)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{1}} ~=\left( \begin{array}{cccc} \alpha ^6,&\quad \alpha ^{10},&\quad 1,&\quad \alpha \end{array}\right) ;\\ \mathbf{m}^{(2)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{1}^{\perp }} = \left( \begin{array}{cccc} 1,&\quad \alpha ^3,&\quad \alpha ^2,&\quad \alpha ^7 \end{array}\right) , \text{ and }\\ \mathbf{m}^{(0)}_{24}&= {} \mathbf{m}_{24}'' - \beta _{1}' = \beta ^{41364} - \beta ^{51362} = \beta ^{34121} ~\leftrightarrow \left( \begin{array}{cccc} \alpha ,&\quad \alpha ^{7},&\quad \alpha ^{14},&\quad \alpha ^{4} \end{array}\right) ;\\ \mathbf{m}^{(1)}_{24}&= {} \mathbf{m}^{(0)}_{24} \varPi _{{\mathcal {C}}_{1}} ~= \left( \begin{array}{cccc} 0,&\quad 0,&\quad 0,&\quad 0 \end{array}\right) ; \\ \mathbf{m}^{(2)}_{24}&= {} \mathbf{m}^{(0)}_{24} \varPi _{{\mathcal {C}}_{1}^{\perp }} = \left( \begin{array}{cccc} \alpha ,&\quad \alpha ^7,&\quad \alpha ^{14},&\quad \alpha ^4 \end{array}\right) . \end{aligned}$$

As the conditions are not satisfied for either \(\ell _{1}=1\) or \(\ell _{2}=1\), the decoder moves to the next step.

(2) \(\ell _{1}\) = \(\ell _{2}\) = 2:

$$\begin{aligned} \mathbf{m}^{(0)}_{14}&= {} \mathbf{m}_{14}'' - \beta _{2}' = \beta ^{61931} - \beta ^{25148} = \beta ^{21810} \leftrightarrow \left( \begin{array}{cccc} \alpha ^6,&\quad \alpha ^{11},&\quad \alpha ^2,&\quad \alpha ^3 \end{array}\right) ; \quad \quad \\ \mathbf{m}^{(1)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{2}} ~= \left( \begin{array}{cccc} \alpha ^6,&\quad \alpha ,&\quad \alpha ,&\quad \alpha ^9 \end{array}\right) ;\\ \mathbf{m}^{(2)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{2}^{\perp }} = \left( \begin{array}{cccc} 0,&\quad \alpha ^6,&\quad \alpha ^5,&\quad \alpha \end{array}\right) , \text{ and }\\ \mathbf{m}^{(0)}_{24}&= {} \mathbf{m}_{24}'' - \beta _{2}' = \beta ^{41364} - \beta ^{25148} = \beta ^{28078} \leftrightarrow \left( \begin{array}{cccc} \alpha ^4,&\quad \alpha ^9,&\quad \alpha ^3,&\quad \alpha \end{array}\right) ; \\ \mathbf{m}^{(1)}_{24}&= {} \mathbf{m}^{(0)}_{24} \varPi _{{\mathcal {C}}_{2}} ~= \left( \begin{array}{cccc} \alpha ^4,&\quad \alpha ^9,&\quad \alpha ^3,&\quad \alpha \end{array}\right) ; \\ \mathbf{m}^{(2)}_{24}&= {} \mathbf{m}^{(0)}_{24} \varPi _{{\mathcal {C}}_{2}^{\perp }} = \left( \begin{array}{cccc} 0,&\quad 0,&\quad 0,&\quad 0 \end{array}\right) , \end{aligned}$$

where \(\beta ^{28078} \leftrightarrow \left( \alpha ^{4},\alpha ^{9},\alpha ^{3},\alpha \right) = \mathbf{m}^{(0)}_{24}\). Here, the conditions are satisfied for \(\ell _{2}=2\) but not for \(\ell _{1}=2\), the decoder moves to next step for \(\ell _{1}\).

(3) \(\ell _{1}\) = 3:

$$\begin{aligned} \quad \mathbf{m}^{(0)}_{14}&= {} \mathbf{m}_{14}'' - \beta _{3}' = \beta ^{61931} - \beta ^{55731} = \beta ^{1853} ~\leftrightarrow \left( \begin{array}{cccc} \alpha ^{10},&\quad \alpha ^8,&\quad \alpha ^{12},&\quad \alpha ^4 \end{array}\right) ; \\ \mathbf{m}^{(1)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{3}} ~= \left( \begin{array}{cccc} \alpha ^{10},&\quad \alpha ^8,&\quad \alpha ^{12},&\quad \alpha ^4 \end{array}\right) ; \\ \mathbf{m}^{(2)}_{14}&= {} \mathbf{m}^{(0)}_{14} \varPi _{{\mathcal {C}}_{3}^{\perp }} = \left( \begin{array}{cccc} 0,&\quad 0,&\quad 0,&\quad 0 \end{array}\right) , \end{aligned}$$

where \(\beta ^{1853} \leftrightarrow \left( \alpha ^{10},\alpha ^{8},\alpha ^{12},\alpha ^{4}\right) = \mathbf{m}^{(0)}_{14}\).

The requirements are met at \(\ell _{1}=3\) and \(\ell _{2}=2\); consequently, the children codes \({\mathcal {C}}_{3}(4, 3)_{16}\) and \({\mathcal {C}}_{2}(4, 2)_{16}\) are used and \(\mathbf{m} = \left( (\alpha , {\alpha ^2}, {\alpha ^3}), (1,\alpha ^2)\right)\) is recovered from (\(\mathbf{m}_{14}^{(1)}\), \(\mathbf{m}_{24}^{(1)}\)) and finally, \(\mathbf{m} = (\mathbf{m}_{13},~ \mathbf{m}_{22}) = \left( (\alpha , {\alpha ^2}, {\alpha ^3}), (1,\alpha ^2)\right)\).

The above example demonstrates the proposed multi-rate encoding and decoding procedure for \({\mathcal {C}}_{ MR}^{(2)}(4, \{2, 3, 4, 5, 6, 7, 8\}_{16}, 3)_{16^{4}}\). If in case, a 3-dimensional ‘mother’ code \({\mathcal {C}}(4, 3, 2)_{16^{4}}\) defined by

$$\begin{aligned} \mathbf{G}&= {} \left[ \begin{array}{cccc} 1 &{}\quad \beta &{}\quad \beta ^{2} &{}\quad \beta ^{3}\\ 1 &{}\quad \beta ^{16} &{}\quad \beta ^{32} &{}\quad \beta ^{48}\\ 1 &{}\quad \beta ^{32} &{}\quad \beta ^{48} &{}\quad \beta ^{64} \end{array}\right] \end{aligned}$$

is employed along with the ‘children’ codes \({\mathcal {C}}_{1}(4,~ 1)_{2^{4}}\), \({\mathcal {C}}_{2}(4,~ 2)_{2^{4}}\), \({\mathcal {C}}_{3}(4,~ 3)_{2^{4}}\) and \({\mathcal {C}}_{4}(4,~ 4)_{2^{4}}\), we will have \(1~\le ~\ell _{1}, \ell _{2}, \ell _{3}~\le ~4\), so that the multi-rate code \({\mathcal {C}}_{ MR}^{(2)}(4, \{3, 4, 5, 6, 7, 8, 9, 10, 11, 12\}_{16}, 2)_{16^{4}}\) can be used to encode and decode user messages \(\mathbf{m} = (\mathbf{m}_{1\ell _{1}}, \mathbf{m}_{2\ell _{2}}, \mathbf{m}_{3\ell _{3}})\in [\texttt {GF}(q)]^{\ell _{1}} \times [\texttt {GF}(q)]^{\ell _{2}} \times [\texttt {GF}(q)]^{\ell _{3}}\) of length \(\ell = 3, 4, 5, 6, 7, 8, 9, 10, 11, 12\) for transmission over a \(16^{4}\)-ary noiseless channel.

7 Conclusions

Over the communication systems, data transmissions frequently demand codes with variable code rates. In order to address this issue, this paper proposes two multiple-rate coding schemes that employ existing error-correcting codes and enable variable-rate coding; in that, codes that can efficiently encode and decode variable-length message segments while retaining a constant code length are considered. In fact, it considers an existing fixed k/n-rate error-correcting code over a composite field \(\texttt {GF}(q^{n})\) and employs (1) k children codes of different rates \(1/n, 2/n, \ldots , k/n\) defined over the ground field \(\texttt {GF}(q)\) [under construction-I: \(q=p^{k}\)]; (2) n children codes of different rates \(1/n, 2/n, \ldots , n/n\) defined over the ground field \(\texttt {GF}(q)\) [under construction-II: \(q=p^{n}\)] to encode and decode variable block sized user messages. Employing the combination of mother and children codes, the proposed schemes derive two multiple-rate codes over \(\texttt {GF}(q^{n})\) which simultaneously encode and decode information symbols over \(\texttt {GF}(q)\) of various lengths ranging (1) from 1 to k [under construction-I: \(q=p^{k}\)] (2) from k to kn [under construction-II: \(q=p^{n}\)], enabling multiple-rate feature. While the first construction facilitates transmission for information rates \(1/n^{2}, 2/n^{2},\ldots , k/n^{2}\), the second construction adds support for the transmission of more flexible rates \(k/n^{2}, (k+1)/n^{2}, \ldots , kn/n^{2}\). Decoding of coded messages of different lengths is achieved using children’s codes orthogonal projectors. The authors are considering further development of multiple-rate codes that can handle variable-length codeword sets, in addition to the support of variable message-length.