# simplex

## Name

simplex — A single top-dimensional simplex in a `dim`-dimensional triangulation

## Synopsis

Content Model

    simplex ::= (#PCDATA)

Attributes
Name | Type
`desc` | CDATA

## Description

A `simplex` element stores a single top-dimensional simplex in a `dim`-dimensional triangulation, along with its associated facet gluings, for dimensions 5 ≤ `dim` ≤ 15.

The character data of this XML element should be a whitespace-separated list of `dim`+1 integer pairs, representing the gluings of facets 0, 1, ..., `dim` of this simplex. Note that facet `i` is always opposite vertex `i` in a top-dimensional simplex.

For each pair, the first integer represents the other top-dimensional simplex to which the facet is glued (note that simplices in a triangulation are numbered 0, 1, 2, etc.). The second integer represents the permutation of vertices from this simplex to the other simplex describing precisely how this gluing takes place. This permutation will take the current facet number of this simplex to the corresponding facet number of the adjacent simplex, and the other `dim` vertex numbers of this simplex to the corresponding `dim` vertex numbers on the adjacent simplex to which they are identified by this gluing.

A permutation is represented as an integer as follows. If the permutation maps 0, 1, ..., `dim` to `a0`, `a1`, ..., `aDim` respectively (where `a0`, `a1`, ..., `aDim` are 0, 1, ..., `dim` in some order), then the corresponding integer is (`a0` + `B` `a1` + `B`2 `a2` + ... + `B``dim` `aDim`). Here the “base” `B` is `B` = 8 for dimensions `dim` = 5..7, and `B` = 16 for dimensions `dim` = 8..15. As an example, the identity permutation for dimension `dim` = 8 which maps (0, 1, ..., 8) to (0, 1, ..., 8) is represented by the integer (0 + 1×16 + 2×256 + ... + 8×4294967296), which is 36344967696.

If a facet is a boundary facet (i.e., it is not glued to anything), the two corresponding integers stored in the XML character data should be -1 and -1.

### Warning

For dimensions `dim` = 5..7, permutations are represented by 32-bit integers. In contrast, for dimensions `dim` = 8..15, permutations are represented by 64-bit integers. If you are writing code that reads Regina data files, you may need to use a large integer type (such as `long long` in C++) accordingly.

### Note

The `simplex` element is only for use in higher dimensions 5 ≤ `dim` ≤ 15. For the smaller dimensions 2, 3 and 4, the specialised tags `triangle`, `tet` and `pent` should be used instead.

### Parents

The following elements contain `simplex`: `simplices`.

### Children

Element `simplex` has no children.

## Attributes

`desc`

  A human-readable description of the role that this top-dimensional simplex plays in the overall triangulation.

## Example

The following XML snippet represents simplex number 0 in a 6-dimensional triangulation. Facet 0 of this simplex is glued to facet 6 of simplex number 1, with a gluing permutation that maps (0,1,2,3,4,5,6) to (6,0,1,2,3,4,5). Facet 6 of this simplex is glued to facet 0 of simplex number 1, with a gluing permutation that maps (0,1,2,3,4,5,6) to (1,2,3,4,5,6,0). The remaining facets 1,...,5 of this simplex are all boundary facets.

    <simplex> 1 14038087 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2054353 </simplex>