# Sphere packings of dimensions 5 and above (except 8)

## Introduction

Multidimensional sphere packings have been studied either as a purely geometric problem or with applications in modulation theory. In the latter case, an arbitrary number of dimensions can be obtained by encoding data simultaneously into several orthogonal quadratures, time slots, frequency bands, or, in optical communications, polarizations.

As the dimension increases, the structure of the packings becomes more and more important. The number of points increases exponentially with the dimension, for a given number of bits per dimension, and the process of storing and searching the packing becomes increasingly impractical. If the packing has a regular structure, however, the coordinates of the points can often be represented by mathematical rules instead of a list, which in turn may admit fast search algorithms.

A trivial way to achieve a structured, multidimensional packing is design it as a Cartesian product of lower-dimensional packings. This essentially means that the `N` coordinates are split into `g` groups, and each group is determined independently by an `N`/`g`-dimensional packing. The search process (i.e., decoding in communications applications or encoding in quantization) is also done separately for each group of coordinates. There is no need to tabulate multidimensional packings designed in this manner, since their properties can all be derived from the constituent low-dimensional packings.

A more interesting way to design structured, multidimensional sphere packings is to first form the Cartesian product of a low-dimensional sphere packing (typically 1- or 2-dimensional) with itself a number of times, to achieve the desired dimension, and then to select a subset of the obtained point set by algebraic rules, to achieve a good normalized second moment. Low-dimensional examples include `parity4_8.txt`, which is a hypercube with a single-parity-check code and equivalent to PS-QPSK, and its multilevel generalization SP-QAM, all in 4 dimensions.

In the context of communications, the subset-selection rule can be thought of as *channel coding* and the encoding of data onto the low-dimensional packing as *modulation*. The combination of these two steps is called *coded modulation*. Since the result, in geometric terms, is a multidimensional packing, the whole process can alternatively be viewed as pure (multidimensional) modulation. Indeed, there is no clear-cut distinction between modulation and coding.

For example, consider a binary block code with parameters (`n`,`k`,`d`_{H}), where `n` is the number of coded bits, `k` is the number of information bits, and `d`_{H} is the minimum Hamming distance between codewords. If the bits of the codewords are mapped to ±1, then a sphere packing is obtained with parameters `N` = `n`, `M` = 2^{k}, `d` = 2√`d`_{H}, and `E` = `n`. (In coding theory, the parameter `k` is sometimes called the “dimension”, referring to the finite-field dimension for linear block codes, which is not the same as the corresponding dimension in Euclidean space, which is 2^{k}.) Many families of channel codes have been designed since around 1950 [Golay49], [Hamming50] and there exists a rich literature. The most well-known short block codes, which correspond to relatively low-dimensional sphere packings, are included in this database.

When the block code parameters `n` and `k` increase, the number of codewords quickly becomes too large to be represented by coordinates in a database of sphere packings. Parameters for a few such codes are listed in the table below, without actually storing the corresponding packings, just to indicate the enormous sizes that are typical for high-dimensional sphere packings designed in this manner. This part of the table is intentionally kept short.

## Database

File | N | M | d | E | E_{n} | κ | Lat | β | E_{b} | CFM [dB] | γ [dB] | G [dB] | Comment |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|

simplex7_8 | 7 | 8 | 7.31371 | 23.402 | 0.4375 | 1 | Y | 0.857143 | 7.80067 | 9.0309 | 2.34083 | 0.341991 | |

hamming7_8 | 7 | 8 | 4 | 7 | 0.4375 | 1 | Y | 0.857143 | 2.33333 | 9.0309 | 2.34083 | 0.341991 | (7,3,4) dual Hamming code, equivalent to the simplex. |

hamming7_16 | 7 | 16 | 3.4641 | 7 | 0.583333 | 1 | Y | 1.14286 | 1.75 | 7.78151 | 2.34083 | 0.821313 | The famous (7,4,3) Hamming code [Golay49], [Hamming50], mapped onto a hypercube. First published in [Shannon48pt1]. |

sphere7_8192 | 7 | 8192 | 2 | 26.25 | 6.5625 | 1.05143 | Y | 3.71429 | 2.01923 | -2.73001 | -3.05186 | 0.325423 | A spherical subset of the cubic lattice [Calderbank90]. |

simplex15_16 | 15 | 16 | 16.9706 | 135 | 0.46875 | 1 | Y | 0.533333 | 33.75 | 12.0412 | 3.29059 | 0.765378 | |

hamming15_16 | 15 | 16 | 5.65685 | 15 | 0.46875 | 1 | Y | 0.533333 | 3.75 | 12.0412 | 3.29059 | 0.765378 | (15,4,8) Dual Hamming code, equivalent to the simplex. |

simplex16_17 | 16 | 17 | 18.2107 | 156.061 | 0.470588 | 1 | Y | 0.510933 | 38.1803 | 12.3045 | 3.36753 | 0.806573 | |

simplex24_25 | 24 | 25 | 28.2843 | 384 | 0.48 | 1 | Y | 0.386988 | 82.6899 | 13.9794 | 3.83578 | 1.0786 | The 24-dimensional simplex. |

biortho16_32 | 16 | 32 | 1.41421 | 1 | 0.5 | 1 | Y | 0.625 | 0.2 | 12.0412 | 3.9794 | 1.60137 | A hyperoctahedron, used in biorthogonal modulation. |

RM16_32 | 16 | 32 | 5.65685 | 16 | 0.5 | 1 | Y | 0.625 | 3.2 | 12.0412 | 3.9794 | 1.60137 | (16,5,8) Reed–Muller code, equivalent to biortho16_32. |

biortho24_48 | 24 | 48 | 1.41421 | 1 | 0.5 | 1 | Y | 0.465414 | 0.179052 | 13.8021 | 4.4599 | 1.82658 | A hyperoctahedron, used in biorthogonal modulation. |

NR15_256 | 15 | 256 | 4.47214 | 15 | 0.75 | 1 | N | 1.06667 | 1.875 | 10 | 4.25969 | 2.611 | The (15,8,5) Nordstrom–Robinson code, a nonlinear binary code [Nordstrom67], [Goethals71], [Hammons94]. |

NR16_256 | 16 | 256 | 4.89898 | 16 | 0.666667 | 1 | N | 1 | 2 | 10.7918 | 4.77121 | 3.0103 | (16,8,6) extended Nordstrom–Robinson code [Goethals71], [Hammons94]. |

golay11_729 | 11 | 729 | 2.23607 | 7.33333 | 1.46667 | 1.04545 | Y | 1.72905 | 0.771136 | 5.74031 | 2.09779 | 1.60449 | The ternary (11,6,5) Golay code, one of the few “perfect” codes [Golay49], mapped onto a sequence of 3-PAM symbols. |

golay12_729 | 12 | 729 | 2.44949 | 8 | 1.33333 | 1.04167 | Y | 1.58496 | 0.84124 | 6.53213 | 2.51172 | 1.76091 | The ternary (12,6,6) extended Golay code [Conway99, p. 85]. |

BCH15_32 | 15 | 32 | 5.2915 | 15 | 0.535714 | 1 | Y | 0.666667 | 3 | 11.4613 | 3.67977 | 1.36912 | (15,5,7) BCH code [Bose60]. |

BCH15_128 | 15 | 128 | 4.47214 | 15 | 0.75 | 1 | N | 0.933333 | 2.14286 | 10 | 3.67977 | 1.80739 | (15,7,5) BCH code [Bose60]. |

hamming15_2048 | 15 | 2048 | 3.4641 | 15 | 1.25 | 1 | Y | 1.46667 | 1.36364 | 7.78151 | 3.42423 | 2.46456 | (15,11,3) Hamming code [Hamming50]. |

BCH16_32 | 16 | 32 | 5.65685 | 16 | 0.5 | 1 | Y | 0.625 | 3.2 | 12.0412 | 3.9794 | 1.60137 | (16,5,8) extended BCH code. |

BCH16_128 | 16 | 128 | 4.89898 | 16 | 0.666667 | 1 | N | 0.875 | 2.28571 | 10.7918 | 4.19129 | 2.222 | (16,7,6) extended BCH code. |

4iMDPM-PS-QPSK16_2048 | 16 | 2048 | 2 | 6 | 1.5 | 1 | Y | 1.375 | 0.545455 | 7.26999 | 2.63241 | 1.51248 | A generalized PPM packing [Eriksson14b]. |

hamming16_2048 | 16 | 2048 | 4 | 16 | 1 | 1 | N | 1.375 | 1.45455 | 9.0309 | 4.39333 | 3.2734 | (16,11,4) extended Hamming code [Hamming50]. Also, a Reed–Muller code. |

golay23_4096 | 23 | 4096 | 5.2915 | 23 | 0.821429 | 1 | N | 1.04348 | 1.91667 | 11.4613 | 5.62551 | 3.9377 | The binary (23,12,7) Golay code, one of the few “perfect” codes [Golay49]. |

golay24_4096 | 24 | 4096 | 5.65685 | 24 | 0.75 | 1 | N | 1 | 2 | 12.0412 | 6.0206 | 4.25969 | (24,12,8) extended Golay code [Goethals71], [Millar13]. |

cube24_16777216 | 24 | 16777216 | 2 | 24 | 6 | 1 | Y | 2 | 1 | 3.0103 | 0 | 0 | Hypercube. |

slepian24_... | 24 | 1.1·10^{10} | 1.41421 | 12 | 6 | 1 | N | 2.78056 | 0.359639 | 3.0103 | 1.43103 | 2.91606 | A constant-radius packing constructed by Slepian [Gilbert52]. |

Hamming255_... | 255 | 2.3·10^{74} | 3.4641 | 255 | 21.25 | 1 | Y | 1.93725 | 1.03239 | 7.78151 | 4.63278 | 4.5175 | The (255,247,3) Hamming code [Golay49], [Hamming50]. |

RS2040_... | 2040 | 3.7·10^{575} | 8.24621 | 2040 | 30 | 1 | Y | 1.87451 | 1.06695 | 15.3148 | 12.0231 | 11.7931 | The 256-ary (255,239,17) Reed–Solomon code, which encodes a block of 1912 data bits into 2040 coded bits, has been standardized in many systems for fiber-optical communications [ITU_G.975], [Karlsson16]. |