The Voronoi Region of the Barnes-Wall Lattice $\Lambda_{16}$

We give a detailed description of the Voronoi region of the Barnes-Wall lattice $\Lambda_{16}$, including its vertices, relevant vectors, and symmetry group. The exact value of its quantizer constant is calculated, which was previously only known approximately. To verify the result, we estimate the same constant numerically and propose a new very simple method to quantify the variance of such estimates, which is far more accurate than the commonly used jackknife estimator.

This generator matrix is scaled down by a linear factor of √ 2 (or, equivalently, a volume factor of 256) compared with the generator matrix for the same lattice in [5,Fig. 4.10]. Some lattice parameters depend on the scaling of the lattice.
A. 0-faces The Voronoi region has 201 343 200 vertices, which belong to six equivalence classes listed as v 1 , v 2 , . . . , v 6 in Tab. I. Equivalence is defined by the rotations Aut(Λ 16 ) that take Λ 16 into Λ 16 . If translation by a lattice vector is considered as another equivalence operation, v 2 becomes equivalent to v 4 and v 3 to v 5 , reducing the six equivalence classes to only four. The vertices are located at a squared distance from the origin of 3/2, 10/9, or 1. Hence, the covering radius is 3/2, as already known [3], [5,Section 4.10].

D. 3-to 14-faces
In dimensions 3 to 14, there are 6 052 classes of faces, which we will not describe in detail here. Some of their properties are summarized in Tab. II, where we show the number of face classes under Aut(Λ 16 ), numbers of child faces (i.e., subfaces of dimension d − 1) and vertices for the faces in all dimensions d = 0, 1, . . . , 16. Further information is available as supplementary material [12].

E. 15-faces
The 15-faces, or facets, all lie halfway between the origin and another lattice vector, orthogonal to the line between them. There are in total 65 760 such facet-defining nonzero vectors, or relevant vectors. They belong to two equivalence classes at different distances from the origin (see Tab. I). The ones closest to the origin are the minimal vectors at a squared distance of 2, which were found already in [1]. The packing radius is half of their length, i.e., √ 2/2. There are 4 320 such vectors, which is the kissing number of the lattice. There are also 61 440 other relevant vectors, which have a squared length of 3.
The facets belonging to the 4 320 minimal vectors each have 7 704 child faces and 1 046 430 vertices of all six classes, while the remaining 61 440 facets have 828 child faces and 26 160 vertices equivalent to either v 2 , v 4 , v 5 , or v 6 .

F. 16-face
Having enumerated all inequivalent d-faces for d = 0, 1, . . . , 15 and computed their volumes and second moments using the recursion relations in [13,Sec. 3], a complete characterization of the 16-face is obtained. Using [11], we estimate that the Voronoi region has between 1 · 10 14 and 3 · 10 14 faces across all dimensions.
Next, the covariance matrix or second moment tensor is computed as where the (unnormalized) second moment U = tr U = 207 049 815 983 4 287 303 820 800 and I 16 the 16×16 identity matrix. After proper normalization, the quantizer constant is obtained as where n = 16 is the lattice's dimension and V = 1/16 is the volume of its Voronoi region, which yields G = U √ 2 ≈ 0.068 297 622 489 318 7 .
To verify our enumeration of face classes, we use the recursion relations in [13,Sec. 3] to calculate the volume of the Voronoi region, which agrees with the expected value of 1/16. We also verify the result (5) numerically in Sec. IV.

III. THE SYMMETRY GROUP OF Λ 16
The symmetries of Λ 16 are generated by products of sign changes, permutations and the matrix where is a Hadamard matrix. There are 2 048 sign changes, which can be described as a product of three subgroups S 1 , S 2 and S 3 . The first subgroup S 1 contains all even numbers of sign changes of component pairs (x i , x i+1 ) for i = 1, 3, . . . 15, and has order 128. S 2 changes the signs of an even number of the first and last 4 odd components (x i , x 16−i ), i = 1, 3, 5, 7. This subgroup has order 8. Finally, S 3 is of order 2 and changes the signs of the components (x 1 , x 3 , x 5 , x 7 ).
here given in cycle notation for compactness. The complete subgroup P can be generated using various subsets of these permutations, for example The full automorphism group Aut(Λ 16 ) can be generated by combining H with the generators of S 1 , S 2 , and S 3 and one of the sets of generators of P. Remarkably, it can also be generated by just two matrices. The first is the 16 × 16 permutation matrix M 1 corresponding to p 3 . The second is a matrix which is built using (7) with a sign change of the last row, i.e., with the Hadamard matrix

IV. NUMERICAL VERIFICATION AND ERROR ESTIMATES
To validate (3), we estimate U by Monte-Carlo integration over the Voronoi region. We also estimate the variance of the estimate of U , for which we use a different method than the "jackknife estimator" in [15]. In this section, we first describe our estimate of U and the variance thereof, then motivate why we prefer our variance estimator over the jackknife, and finally compare our numerical estimate of G for Λ 16 with the true value in (5).
The Monte-Carlo estimate of U iŝ where x 1 , . . . , x N are N independent random vectors uniformly distributed in the Voronoi region of Λ.
To estimate varÛ , we first note that since the vectors x i are independent and identically distributed, varÛ =  In the fifth column, we visualize the number of face classes (y-axis) containing a certain number of vertices (x-axis). The last column shows the same information for the numbers of faces instead of face classes, which have been approximated using [11]. (1/N ) var x 2 , where x is a single random vector with the same distribution as x i . Therefore, our estimate of varÛ , denoted by varÛ , is defined by Applying the standard unbiased variance estimator of var x 2 in (13) yields or after normalization as in (4) The variance estimator (15) follows directly from fundamental laws of probability. What is surprising is that a different estimator has been used, unchallenged, in most, or perhaps all, previous works involving numerical estimates of lattice second moments [15]- [17]. To rectify this 39-year old misconception, we now elaborate on why (15) is more accurate.
The jackknife works by partitioning the independent randomly selected vectors x 1 , . . . , x N into g groups, computing the average squared length within each group, and finally computing the sample variance of these g averages [ Fig. 2: Histograms of two estimates of the standard deviation of the estimated second momentÛ of the cubic lattice. The exact standard deviation (varÛ ) 1/2 , which can be calculated analytically for the cubic lattice, reveals that the proposed estimator (12) is much more accurate than the jackknife with 100 groups. (4)]. This method brings at least two disadvantages: First, the estimated variance depends on how the list x 1 , . . . , x N is ordered; reordering the list would yield a different variance estimate, although the estimated second moment (12) remains the same. And second, the variance of vectors within a group is ignored. The proposed estimator (15) suffers from neither of these disadvantages.
To quantify the accuracy of both variance estimators, we numerically estimate the second moment of the cubic lattice Z n for n = 3. The second moment of Z n is U = E[ x 2 ] = n/12, and the variance ofÛ can be calculated exactly as varÛ = (1/N ) var We generated N = 100 000 vectors uniformly in the Voronoi region of Z 3 , which is the unit cube, computedÛ using (12), and estimated the variance ofÛ using the two methods. For the jackknife, we used a group size of g = 100 as in [15]. Both estimators were run 10 000 times, each time with N new random vectors. Fig. 2 shows histograms of the resulting estimates of the standard deviation, together with the exact value. It can be observed that (12) in this example is more than an order of magnitude more accurate than the jackknife with g = 100.
The accuracy of the jackknife improves with increasing g, and it is most accurate when each group consists of a single sample, i.e., when g = N . In this extreme case, the jackknife simplifies into (15)-but this is not how the jackknife was applied in previous studies [15]- [17].
Having established the usefulness of the new variance estimator, we proceed to estimate the quantizer constant G of Λ 16 with high accuracy. Numerically evaluating (12) and (16) for the mean and (15) and (17) for the standard deviation, using N = 4 · 10 12 random 16-dimensional vectors, we obtain The difference betweenĜ and the exact G in (5) is only 0.7 standard deviations, which may serve as a numerical verification of the face hierarchy. The results are also in agreement with the previous (less accurate) estimate of the same constant in [15,Eq. (13)].

V. THE ALGORITHM
Our algorithm 2 is described in detail in [13], which builds on previous methods for finding all relevant vectors [21] and faces [22]. In this section, we briefly summarize the main concept and present minor modifications to the methods of [13].
The basic approach remains the same: We first find all relevant vectors, i.e., normals of the facets, and all the vertices of the Voronoi region. The hierarchy of subfaces of the facets is then built by recursively intersecting the sets of vertices of parent faces. The computational cost is kept low by finding the classes of faces equivalent under Aut(Λ 16 ) and then only constructing the child faces of one (arbitrarily chosen) representative face per class. In total, only 159 143 faces are constructed explicitly.
The classification of faces is performed iteratively as described in [13,Section 2.4.4]. In this method, we begin identifying equivalent faces using a proper subgroup U ⊂ Aut(Λ 16 ), which creates classes of faces under U. The set consisting of one (arbitrary) representative per class is then classified using another subgroup U . This can be repeated with different subgroups until we finally use the full group Aut(Λ 16 ). For Λ 16 , we found that a good option is to use only a single subgroup U, chosen as the stabilizer of the relevant vector n 2 with a stabilizer size of 1 451 520 (see Tab. I).
We made three changes to the method in [13], which affect how the equivalence of two faces is tested and how the orbits and stabilizers of individual vectors are constructed. We now describe these changes in turn, briefly revisiting the respective previous methods followed by our new algorithms.

A. Testing the equivalence of faces
Our previous method of testing whether a face F is equivalent to another face F under a group G is based on the following idea. 3 For each face, we take a set of vectors that uniquely identifies that face. We use either the set of relevant vectors associated with the facets containing the face (i.e., the "normal vectors" of the face) or alternatively the face's vertices. The choice depends on the number of vectors in either of the two sets and on their classification under G. Let x 1 , . . . , x N be the vectors of F and y 1 , . . . , y N be those of F . We order these vectors such that x i is equivalent to y i for all i (if that is not possible, the faces are inequivalent). We then form the sets of all transformations between pairs (x i , y i ) for all i. If the intersection of these sets is non-empty, it consists of transformations taking F into F . If it is empty, however, we permute one of the sets and try again. The faces are inequivalent if and only if all permutations lead to empty intersections of the sets of transformations.
In principle, the full set of transformations between any two equivalent vectors can easily be constructed as follows. Let x = g x x rep and y = g y x rep be two equivalent vectors with g x , g y ∈ G and x rep representing their equivalence class. Then, the full set of transformations in G taking x into y is [13] T where Stab G (x rep ) is the stabilizer of x rep in G. From Tab. I, we see that for Λ 16 , the sets (20) contain between 1 344 and 20 643 840 elements. When forming the intersections using GAP, these sets are held in memory, which becomes a problem when multiple intersections need to be calculated.
We now describe a memory-efficient alternative, shown in Alg. 1. As in [13], this method is used after ensuring that F and F have the same number of vertices and number of normal vectors, and that the respective sets of vectors can be ordered such that x i ∼ y i for all i.
The main idea is to fix one vector x of F and then construct all transformations taking x into any of the vectors y ∈ Y, where Y denotes the vectors of F . Clearly, if F and F are equivalent, say gF = F for some g ∈ G, then g takes x into one of the vectors y of F and thus g ∈ T x . Choosing x as the vector with the smallest stabilizer and fewest equivalent vectors of F , T x will often be very small and can be checked one by one. However, even if the smallest stabilizer is large, the elements of T x can be enumerated without holding the full set in memory. Alg. 1 performs this test as follows. In lines 6 and 7, x is chosen as the vector with the smallest stabilizer and, if there are multiple possibilities, then the one with the smallest number of equivalent vectors of F . In line 10, we store the set of these equivalent vectors as Y x . Independently from the choice of x, let D be the smaller of the sets of vertices and of normal vectors of F (lines 12-17). We choose D analogously for F . Since the stabilizer is a group, we can use methods in GAP to iterate over all its elements in line 18, while holding only one element in memory at any given time. For each element g s ∈ Stab G (x rep ) and each y ∈ Y x , we form the transformation (line 21) and evaluate if the two sets gD and D are equal. If they are, then F is equivalent to F and gF = F . If they are unequal for all g s ∈ Stab G (x rep ) and all y ∈ Y x , then the two faces are inequivalent under G.

B. Constructing the orbit of a vector
We use a variation of the standard orbit enumeration technique as implemented, e.g., in [18]. Alg. 2 constructs the orbit of a vector x under a group G and stores the group elements taking x to the elements in its orbit. These group elements are Algorithm 1 Evaluate if two faces F and F are equivalent under G. If they are, return a transformation g ∈ G taking F into F , otherwise return NULL. We define |X | as the number of elements in a set X and arg min x∈X f as the function returning the subset of X for which f (x) is smallest. 1: procedure FINDTRANSFORMATION(F , F , G) 2: V ← vertices of F x ← ANY(arg min x∈M |{y ∈ V ∪ N : y ∼ x}|) 8: x rep ← REPOF(x, G) 9: if |V| < |N | then for all g y ∈ T y do 21: g ← g yḡ 22: if gD = D then 23: return g 24: return NULL Utility functions: • ANY(X ) returns an arbitrary element of X • REPOF(x, G) returns a representative of x, assuming that all vectors have been classified under G and an arbitrary but fixed choice of class representatives has been made • TRANSFORMOF(x, G) returns g x ∈ G such that x = g x REPOF(x, G), again assuming that vectors have been classified under G and that (at least) one group element taking its representative into x is known needed in the procedure TRANSFORMOF in Alg. 1. The result is stored as a dictionary, where each key-value pair consists of an element y of the orbit as key and one arbitrary transformation matrix taking x into y as value. We will call such a dictionary an orbit map. orbit map[x] ← identity matrix 5: pool ← copy of orbit map 6: while pool is not empty do 7: new pool ← new empty Dictionary 8: for all y ∈ keys of pool do 9: h ← pool[y] 10: for all g ∈ gens do 11: y ← gy 12: if y / ∈ orbit then return orbit, orbit map vertices are needed. 4 The idea of the standard orbit algorithm is to repeatedly apply the generators of the group to the initial and the newly constructed vectors until no new vector appears. This is used in Alg. 2, where the pool and new pool variables keep track of which new vectors have appeared in the last iteration. In lines 16-17, we conditionally store the vector and its transformation in orbit map. If all vectors are known, the new pool remains empty and the termination condition of the whileloop is satisfied. When constructing the orbits of vertices, the condition is chosen to evaluate to true only when the vector lies in one of the representative facets. For relevant vectors, condition is set to always evaluate to true.

C. Constructing the stabilizer of a vector
The third change to the method in [13] is an algorithm to construct the stabilizer of a vector under a group G. Our method is again inspired by a standard orbit-stabilizer algorithm such as the one implemented in [18]. Stabilizers are needed in line 18 of Alg. 1, where we iterate over all elements of the stabilizer of one of the representative vectors. For G = Aut(Λ 16 ), there are in total 8 representative vectors listed in Tab. I. We previously let GAP find the stabilizer of a vector. With the knowledge about each vector's orbit size, however, we can implement a more efficient method. Algorithm 3 Construct the stabilizer of a vector x in G whose orbit size is known. As in Alg. 2, the group G is given as a set gens of generator matrices. See the main text for details. orbit map[x] ← identity matrix 8: for all g ∈ G do 9: x ← gx 10: if x ∈ keys of orbit map then 11: g ← orbit map[x ] 12: if g s / ∈ stab then 14: append g s to stab gens 15: stab ← GAP group from stab gens 16: if |stab| = stab size then orbit map[x] ← g In Alg. 3, we construct elements of the orbit by applying different group elements to the vector x (line 9). Any vector x that is visited this way is stored together with the corresponding group element in an orbit map (line 19). Whenever we encounter a vector x previously found, we retrieve the stored group element g (line 11). Since gx = g x, we have g −1 g x = x and so g s = g −1 g is an element of the stabilizer of x. If it is not yet an element of the subgroup stab ⊆ Stab G (x) found thus far, it is added to the list of group generators in line 14. After updating stab in line 15, we check if it is complete by comparing its size against the known stabilizer size. This is made efficient by two facts. First, due to the "birthday paradox" [23, Section 3], the first coincidence in line 10 occurs on average after 1 + For Aut(Λ 16 ), this means that the first element of the stabilizers of the vectors in Tab. I is found after about 83 (for n 1 and v 1 ) to 10 210 (for v 2 , v 4 , v 5 ) iterations. Second, the stabilizers are often generated by very few group elements. In the case of Λ 16 , the set of all 8 stabilizers is found within minutes on a single core, since each stabilizer can be generated by only two generators.

VI. CONCLUSIONS
In this work, we provide a complete account of the relevant vectors, vertices, and face classes of the Voronoi region of the Barnes-Wall lattice Λ 16 . This is used to calculate the exact second moment of Λ 16 . In order to obtain these results, we improve our algorithm [13], allowing it to be used with larger symmetry groups than previously possible. We believe that our algorithm can be used to analyse the Voronoi regions of many lattices with known symmetry group, potentially even in dimensions higher than 16.
Using Monte-Carlo integration, the exact value of the second moment is numerically verified. Furthermore, it is shown that the variance of the numerical result can be approximated with much higher accuracy than conventionally obtained with the jackknife estimator. This may provide significant improvements in numerical second moment estimates in the future.