Regina Calculation Engine
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
regina Namespace Reference

Contains the entire Regina calculation engine. More...

Namespaces

 alias
 Contains helper classes that provide dimension-specific aliases for generic functions.
 
 detail
 Contains implementation details and common functionality for Regina's dimension-agnostic classes.
 
 graph
 Provides an interface for various types of objects from Regina to work directly with the Boost Graph Library (BGL).
 
 i18n
 Various classes and routines for working with internationalisation and character encodings.
 
 python
 Utility classes and routines to assist with Python bindings for the calculation engine.
 
 xml
 Various classes and routines for XML manipulation, some taken or modified from the libxml++ library.
 

Classes

class  AbelianGroup
 Represents a finitely generated abelian group. More...
 
class  AngleStructure
 Represents an angle structure on a triangulation. More...
 
class  AngleStructures
 A packet representing a collection of angle structures on a triangulation. More...
 
class  AngleStructureVector
 A vector of integers used to indirectly store the individual angles in an angle structure. More...
 
class  ArcIterator
 Iterates through all directed arcs of a knot or link. More...
 
class  AugTriSolidTorus
 Represents an augmented triangular solid torus component of a triangulation. More...
 
class  BanBoundary
 A class that bans normal disc types that meet the boundary of the underlying triangulation. More...
 
class  BanConstraintBase
 A base class for additional banning and marking constraints that we can place on tree traversal algorithms. More...
 
class  BanNone
 A do-nothing class that bans no coordinates and marks no coordinates. More...
 
class  BanTorusBoundary
 A class that bans and marks disc types associated with torus boundary components. More...
 
class  BitManipulator
 An optimised class for bitwise analysis and manipulation of native data types. More...
 
class  BitManipulatorBySize
 Contains implementation details for BitManipulator where we optimise according to the size of the underlying data type. More...
 
class  BitManipulatorByType
 Contains implementation details for BitManipulator where we optimise according to the underlying data type. More...
 
class  Bitmask
 A bitmask that can store arbitrarily many true-or-false bits. More...
 
class  Bitmask1
 A small but extremely fast bitmask class that can store up to 8 * sizeof(T) true-or-false bits. More...
 
class  Bitmask2
 A small but extremely fast bitmask class that can store up to 8 * sizeof(T) + 8 * sizeof(U) true-or-false bits. More...
 
class  BlockedSFS
 Represents a blocked Seifert fibred space (possibly with boundary). More...
 
class  BlockedSFSLoop
 Represents a blocked Seifert fibred space with two boundary tori that are joined together. More...
 
class  BlockedSFSPair
 Represents a blocked pair of Seifert fibred spaces joined along a single connecting torus. More...
 
class  BlockedSFSTriple
 Represents a blocked sequence of three Seifert fibred spaces joined along connecting tori. More...
 
class  BoolSet
 A set of booleans. More...
 
class  BoundaryComponent
 A component of the boundary of a dim-manifold triangulation. More...
 
class  BoundaryComponent< 3 >
 A component of the boundary of a 3-manifold triangulation. More...
 
class  Census
 A utility class used to search for triangulations across one or more 3-manifold census databases. More...
 
class  CensusDB
 Stores the location and description of one of Regina's in-built census databases. More...
 
class  CensusHit
 Stores a single "hit" indicating that some given triangulation has been located in one of Regina's in-built census databases. More...
 
class  CensusHitIterator
 A forward iterator that walks through all hits stored by a single CensusHits object. More...
 
class  CensusHits
 Stores a list of "hits" indicating all the places in which a given triangulation has been located in Regina's various in-built census databases. More...
 
class  ChildIterator
 A forward iterator for iterating through all immediate children of a given packet. More...
 
class  ClosedPrimeMinSearcher
 A gluing permutation search class that offers a specialised search algorithm for when (i) only closed prime minimal P2-irreducible triangulations are required, and (ii) the given face pairing has order at least three. More...
 
class  CompactSearcher
 A gluing permutation search class that offers a specialised search algorithm for when only compact (finite) 3-manifold triangulations are required. More...
 
class  Component
 A connected component of a dim-manifold triangulation. More...
 
class  Component< 2 >
 Represents a connected component of a 2-manifold triangulation. More...
 
class  Component< 3 >
 Represents a connected component of a 3-manifold triangulation. More...
 
class  Component< 4 >
 Represents a connected component of a 4-manifold triangulation. More...
 
class  Container
 A packet that simply contains other packets. More...
 
class  Crossing
 Represents a single crossing in a link diagram. More...
 
class  CrossingIterator
 Iterates through all crossings of a link. More...
 
class  Cusp
 Represents a single cusp of a SnapPea triangulation. More...
 
class  Cyclotomic
 Represents an element of a cyclotomic field. More...
 
class  DegreeGreaterThan
 A function object used for sorting faces of triangulations by decreasing degree. More...
 
class  DegreeLessThan
 A function object used for sorting faces of triangulations by increasing degree. More...
 
class  DiscSetSurface
 Represents the set of all normal discs forming a normal surface. More...
 
class  DiscSetSurfaceData
 Stores data of type T for every normal disc within a particular normal surface. More...
 
class  DiscSetTet
 Represents a set of normal discs inside a single tetrahedron. More...
 
class  DiscSetTetData
 Stores data of type T for every normal disc inside a single tetrahedron. More...
 
struct  DiscSpec
 Specifies a single normal disc in a normal surface. More...
 
class  DiscSpecIterator
 A forward iterator used for running through all normal discs in a normal surface. More...
 
struct  DiscType
 Identifies a single normal or almost normal disc type within a triangulation. More...
 
class  DoubleDescription
 Implements a modified double description method for polytope vertex enumeration. More...
 
class  EulerSearcher
 A gluing permutation search class that offers a specialised search algorithm for when all vertex links must all have a given fixed Euler characteristic. More...
 
class  Example
 This class offers static routines for constructing a variety of sample dim-dimensional triangulations. More...
 
class  Example< 2 >
 Offers routines for constructing a variety of sample 2-dimensional triangulations. More...
 
class  Example< 3 >
 Offers routines for constructing a variety of sample 3-dimensional triangulations. More...
 
class  Example< 4 >
 Offers routines for constructing a variety of sample 4-dimensional triangulations. More...
 
class  ExampleLink
 This class offers routines for constructing ready-made examples of knots and links. More...
 
class  ExampleSnapPea
 This class offers routines for constructing various example SnapPea triangulations. More...
 
class  Face
 Represents a subdim-face in the skeleton of a dim-dimensional triangulation. More...
 
class  Face< 2, 2 >
 Represents a triangle within a 2-manifold triangulation. More...
 
class  Face< 3, 0 >
 Represents a vertex in the skeleton of a 3-manifold triangulation. More...
 
class  Face< 3, 2 >
 Represents a triangle in the skeleton of a 3-manifold triangulation. More...
 
class  Face< 3, 3 >
 Represents a tetrahedron within a 3-manifold triangulation. More...
 
class  Face< 4, 0 >
 Represents a vertex in the skeleton of a 4-manifold triangulation. More...
 
class  Face< 4, 1 >
 Represents an edge in the skeleton of a 4-manifold triangulation. More...
 
class  Face< 4, 4 >
 Represents a pentachoron (a 4-dimensional simplex) within a 4-manifold triangulation. More...
 
class  Face< dim, dim >
 Represents a top-dimensional simplex in a dim-manifold triangulation. More...
 
class  FaceEmbedding
 Details how a subdim-face of a dim-dimensional triangulation appears within each top-dimensional simplex. More...
 
class  FaceList
 Stores the list of all subdim-faces of a dim-dimensional triangulation. More...
 
class  FaceNumbering
 Specifies how subdim-faces are numbered within a dim-dimensional simplex. More...
 
class  FacePair
 Represents a pair of tetrahedron face numbers. More...
 
class  FacetPairing
 Represents the dual graph of a dim-manifold triangulation; that is, the pairwise matching of facets of dim-dimensional simplices. More...
 
class  FacetPairing< 3 >
 Represents the dual graph of a 3-manifold triangulation. More...
 
struct  FacetSpec
 A lightweight class used to refer to a particular facet of a particular top-dimensional simplex in a dim-dimensional triangulation. More...
 
class  FileInfo
 Stores information about a Regina data file, including file type and version. More...
 
class  Flags
 A class representing a bitwise combination of flags defined by an enumeration type. More...
 
struct  FuncDelete
 An adaptable unary function used to deallocate objects. More...
 
struct  FuncNew
 An adaptable generator used to create objects using default constructors. More...
 
struct  FuncNewClonePtr
 An adaptable unary function used to create objects using the clone() method. More...
 
struct  FuncNewCopyPtr
 An adaptable unary function used to create objects using copy constructors. More...
 
struct  FuncNewCopyRef
 An adaptable unary function used to create objects using copy constructors. More...
 
class  GlobalDirs
 Provides global routines that return directories in which various components of Regina are installed on the system. More...
 
class  GluingPerms
 Represents a specific set of gluing permutations to complement a particular pairwise matching of simplex facets. More...
 
class  GluingPermSearcher
 A utility class used to build a census of triangulations, by searching through all possible sets of gluing permutations to match a given facet pairing. More...
 
class  GluingPermSearcher< 2 >
 A utility class for searching through all possible gluing permutation sets that correspond to a given triangle edge pairing. More...
 
class  GluingPermSearcher< 3 >
 A utility class for searching through all possible gluing permutation sets that correspond to a given tetrahedron face pairing. More...
 
class  GluingPermSearcher< 4 >
 A utility class for searching through all possible gluing permutation sets that correspond to a given pentachoron facet pairing. More...
 
class  GraphLoop
 Represents a closed graph manifold formed by joining a single bounded Seifert fibred space to itself along a torus. More...
 
class  GraphPair
 Represents a closed graph manifold formed by joining two bounded Seifert fibred spaces along a common torus. More...
 
class  GraphTriple
 Represents a closed graph manifold formed by joining three bounded Seifert fibred spaces along their torus boundaries. More...
 
class  GroupExpression
 Represents an expression involving generators from a group presentation or a free group. More...
 
struct  GroupExpressionTerm
 Represents a power of a generator in a group presentation. More...
 
class  GroupPresentation
 Represents a finite presentation of a group. More...
 
class  Handlebody
 Represents an arbitrary handlebody. More...
 
class  HasReturnType
 Internal to ReturnsTraits. More...
 
class  HilbertCD
 Implements a modified Contejean-Devie algorithm for enumerating Hilbert bases. More...
 
class  HilbertDual
 Implements a modified dual algorithm for enumerating Hilbert bases. More...
 
class  HilbertPrimal
 Implements a modified primal algorithm for enumerating Hilbert bases. More...
 
class  HomGroupPresentation
 Represents a homomorphism between groups which are described via finite presentations. More...
 
class  HomMarkedAbelianGroup
 Represents a homomorphism of finitely generated abelian groups. More...
 
class  HomologicalData
 Data type that deals with all the detailed homological information in a manifold. More...
 
class  HSVectorStandard
 A normal hypersurface vector using standard tetrahedron-prism coordinates. More...
 
class  HyperbolicMinSearcher
 A gluing permutation search class that offers a specialised search algorithm for when only minimal ideal triangulations of cusped finite-volume hyperbolic 3-manifolds are required. More...
 
struct  HyperInfo
 A template that stores information about a particular normal hypersurface coordinate system. More...
 
struct  InfinityBase
 Internal base classes for use with IntegerBase, templated on whether we should support infinity as an allowed value. More...
 
class  IntegerBase
 Represents an arbitrary precision integer. More...
 
struct  IntOfMinSize
 Gives access to native integer types that hold at least k bytes, where k may be any compile-time constant. More...
 
struct  IntOfSize
 Gives access to native integer types that hold exactly k bytes, where k may be any compile-time constant. More...
 
class  Isomorphism
 Represents a combinatorial isomorphism from one dim-manifold triangulation into another. More...
 
struct  IsReginaInteger
 Determines if the type T is one of Regina's own integer types. More...
 
class  L31Pillow
 Represents a triangular pillow L(3,1) component of a triangulation. More...
 
class  Laurent
 Represents a single-variable Laurent polynomial with coefficients of type T. More...
 
class  Laurent2
 Represents a Laurent polynomial in the two variables x, y with coefficients of type T. More...
 
class  LayeredChain
 Represents a layered chain in a triangulation. More...
 
class  LayeredChainPair
 Represents a layered chain pair component of a triangulation. More...
 
class  LayeredLensSpace
 Represents a layered lens space component of a triangulation. More...
 
class  LayeredLoop
 Represents a layered loop component of a triangulation. More...
 
class  LayeredSolidTorus
 Represents a layered solid torus in a triangulation. More...
 
class  LayeredTorusBundle
 Describes a layered torus bundle. More...
 
class  Layering
 Represents a layering of zero or more tetrahedra upon a torus boundary. More...
 
class  LensSpace
 Represents a general lens space. More...
 
class  LessDeref
 An adaptable binary function used to compare the objects to which pointers are pointing. More...
 
class  LightweightSequence
 A lightweight class for storing a random-access sequence of objects. More...
 
class  Link
 Represents a directed knot or link in the 3-sphere. More...
 
class  ListOnCall
 Offers a hard-coded list of expensive objects that should only be created if they are required. More...
 
struct  LPCol
 Used by LPInitialTableaux<LPConstraint> to store a single column of the adjusted matching equation matrix in sparse form. More...
 
class  LPConstraintBase
 A base class for additional linear constraints that we can add to the tableaux of normal surface or angle structure matching equations. More...
 
class  LPConstraintEuler
 A class that constraints the tableaux of normal surface matching equations to ensure that Euler characteristic is strictly positive. More...
 
class  LPConstraintNone
 A do-nothing class that imposes no additional linear constraints on the tableaux of normal surface or angle structure matching equations. More...
 
class  LPConstraintNonSpun
 A class that constraints the tableaux of normal surface matching equations to ensure that normal surfaces in an ideal triangulation are compact (thereby avoiding spun normal surfaces with infinitely many triangles). More...
 
class  LPConstraintSubspace
 A subclass of LPConstraintBase used for constraints defined entirely by homogeneous linear equations. More...
 
class  LPData
 Stores an intermediate tableaux for the dual simplex method, and contains all of the core machinery for using the dual simplex method. More...
 
class  LPInitialTableaux
 Stores an adjusted matrix of homogeneous linear matching equations based on a given triangulation, in sparse form. More...
 
class  LPMatrix
 A matrix class for use with linear programming. More...
 
class  Manifold
 Represents a particular 3-manifold. More...
 
class  MarkedAbelianGroup
 Represents a finitely generated abelian group given by a chain complex. More...
 
class  MarkedElement
 A base class for elements of MarkedVector. More...
 
class  MarkedVector
 A vector of objects with fast, space-efficient reverse lookup of array indices. More...
 
class  Matrix
 Represents a matrix of elements of the given type T. More...
 
class  Matrix2
 Represents a 2-by-2 integer matrix. More...
 
class  MaxAdmissible
 Used to enumerate all maximal admissible faces of a polyhedral cone under a given set of admissibility constraints. More...
 
class  mem_istream
 An input stream that reads an array of characters in memory. More...
 
class  mem_streambuf
 A stream buffer that provides the implementation details for mem_istream. More...
 
class  ModelLinkGraph
 Represents an undirected 4-valent planar graph with a specific planar embedding. More...
 
class  ModelLinkGraphArc
 A reference to an outgoing edge from a node of a model graph for a knot or link. More...
 
class  ModelLinkGraphCells
 Describes the cellular decomposition of the sphere that is induced by a given planar 4-valent graph. More...
 
class  ModelLinkGraphNode
 Represents a single node in a model graph for a knot or link. More...
 
class  NativeInteger
 A wrapper class for a native, fixed-precision integer type of the given size. More...
 
struct  NewFunction
 A function object that creates a new object subclassed from Base, where the particular subclass is chosen according to the template argument to operator(). More...
 
class  NormalHypersurface
 Represents a single normal hypersurface in a 4-manifold triangulation. More...
 
class  NormalHypersurfaces
 A packet representing a collection of normal hypersurfaces in a 4-manifold triangulation. More...
 
class  NormalHypersurfaceVector
 Stores the vector of a single normal hypersurface in a 4-manifold triangulation. More...
 
struct  NormalInfo
 A template that stores information about a particular normal coordinate system. More...
 
class  NormalSurface
 Represents a single normal surface in a 3-manifold. More...
 
class  NormalSurfaces
 A packet representing a collection of normal surfaces in a 3-manifold. More...
 
class  NormalSurfaceVector
 Stores the vector of a single normal surface in a 3-manifold. More...
 
class  NSVectorANStandard
 An almost normal surface vector using standard triangle-quad-oct coordinates. More...
 
class  NSVectorMirrored
 A normal surface vector that is mirrored in another coordinate system to avoid frequent lengthy calculations. More...
 
class  NSVectorOriented
 A normal surface vector using transversely oriented standard (triangle-quad) coordinates. More...
 
class  NSVectorOrientedQuad
 A normal surface vector using transversely oriented quadrilateral coordinates. More...
 
class  NSVectorQuad
 A normal surface vector using quad coordinates. More...
 
class  NSVectorQuadClosed
 The vector for a normal surface in an ideal triangulation, expressed using quad coordinates and enumerated to include closed surfaces only. More...
 
class  NSVectorQuadOct
 An almost normal surface vector using quad-oct coordinates. More...
 
class  NSVectorQuadOctClosed
 The vector for an almost normal surface in an ideal triangulation, expressed using quad-oct coordinates and enumerated to include closed surfaces only. More...
 
class  NSVectorStandard
 A normal surface vector using standard triangle-quad coordinates. More...
 
struct  Output
 A common base class for objects that write human-readable text output. More...
 
struct  OutputBase
 Provides a typedef to help identify where in the class hierarchy the output functions T::str() and T::detail() are implemented. More...
 
class  Packet
 Represents a packet of information that may be individually edited or operated upon. More...
 
class  PacketChildren
 A lightweight object that gives access to all immediate children of a given packet. More...
 
class  PacketDescendants
 A lightweight object that gives access to all strict descendants of a given packet. More...
 
struct  PacketInfo
 A template that stores information about a particular type of packet. More...
 
class  PacketListener
 An object that can be registered to listen for packet events. More...
 
class  PacketShell
 Gives access to the final remains of a packet that is in the process of being destroyed. More...
 
class  PDF
 A packet that can hold a PDF document. More...
 
class  Perm
 Represents a permutation of {0,1,...,n-1}. More...
 
class  Perm< 2 >
 Represents a permutation of {0,1}. More...
 
class  Perm< 3 >
 Represents a permutation of {0,1,2}. More...
 
class  Perm< 4 >
 Represents a permutation of {0,1,2,3}. More...
 
class  Perm< 5 >
 Represents a permutation of {0,1,2,3,4}. More...
 
class  PillowTwoSphere
 Represents a 2-sphere made from two triangles glued together along their three edges. More...
 
class  PluggedTorusBundle
 Describes a triangulation of a graph manifold formed by joining a bounded saturated region with a thin I-bundle over the torus, possibly with layerings in between. More...
 
class  PlugTriSolidTorus
 Represents a plugged triangular solid torus component of a triangulation. More...
 
class  Polynomial
 Represents a single-variable polynomial with coefficients of type T. More...
 
class  PosOrder
 A comparison object that sorts hyperplanes by position vectors. More...
 
class  Primes
 A helper class for finding primes and factorising integers. More...
 
struct  PrismSpec
 Specifies a single triangular prism in a tetrahedron. More...
 
class  ProgressTracker
 Manages percentage-based progress tracking and cancellation polling for long operations. More...
 
class  ProgressTrackerBase
 The base class for Regina's progress tracking classes. More...
 
class  ProgressTrackerOpen
 Manages percentage-based progress tracking and cancellation polling for open-ended operations. More...
 
class  Property
 Stores a calculable property of an object. More...
 
class  Qitmask1
 A small but extremely fast "base 4 bitmask" class that can store up to 8 * sizeof(T) "qits", each equal to 0, 1, 2 or 3. More...
 
class  Qitmask2
 A small but extremely fast "base 4 bitmask" class that can store up to 8 * sizeof(T) + 8 * sizeof(U) "qits", each equal to 0, 1, 2 or 3. More...
 
class  Rational
 Represents an arbitrary precision rational number. More...
 
class  Ray
 A fast class for storing a ray rooted at the origin whose coordinates are rational. More...
 
struct  Returns
 A convenience base class for a non-void function object, which does nothing beyond provide a ReturnType typedef. More...
 
struct  ReturnsTraits
 Helper class to assist with compile-time analysis of Regina's function objects. More...
 
struct  ReturnsTraitsImplementation
 Provides the implementation of ReturnsTraits. More...
 
class  SafePointeeBase
 A base class for objects of type T to be referenceable by a SafePtr. More...
 
class  SafePtr
 A reference counted smart pointer that supports alternate models of ownership. More...
 
struct  SatAnnulus
 Represents an annulus formed from a pair of triangles in a Seifert fibred space. More...
 
class  SatBlock
 Represents a saturated block in a Seifert fibred space. More...
 
struct  SatBlockSpec
 Describes how a single saturated block forms a part of a larger saturated region. More...
 
class  SatBlockStarter
 Contains a triangulation of a saturated block along with the accompanying saturated block description. More...
 
class  SatBlockStarterSearcher
 A helper class for locating and using starter blocks within a triangulation. More...
 
class  SatBlockStarterSet
 Represents a set of starter blocks that can be used for identifying triangulations of Seifert fibred spaces. More...
 
class  SatCube
 A saturated block that is a six-tetrahedron cube. More...
 
class  SatLayering
 A degenerate saturated block that is a single tetrahedron wrapped around so that two opposite edges touch. More...
 
class  SatLST
 A saturated block that is a layered solid torus. More...
 
class  SatMobius
 A degenerate zero-tetrahedron saturated block that corresponds to attaching a Mobius band to a single annulus boundary. More...
 
class  SatReflectorStrip
 A saturated block that is a reflector strip. More...
 
class  SatRegion
 A large saturated region in a Seifert fibred space formed by joining together saturated blocks. More...
 
class  SatTriPrism
 A saturated block that is a three-tetrahedron triangular prism. More...
 
class  Script
 A packet representing a Python script that can be run. More...
 
class  SFSAltSet
 Provides a variety of alternative representations of a single bounded Seifert fibred space. More...
 
struct  SFSFibre
 Represents an exceptional (alpha, beta) fibre in a Seifert fibred space. More...
 
class  SFSpace
 Represents a general Seifert fibred space, which may be orientable or non-orientable. More...
 
struct  ShortOutput
 A common base class for objects that provide short text output only. More...
 
class  SigCensus
 A utility class used by formSigCensus(). More...
 
class  Signature
 Represents a signature of a splitting surface in a closed 3-manifold triangulation. More...
 
class  SigPartialIsomorphism
 Represents a partial isomorphism between two splitting surface signatures. More...
 
class  SimpleSurfaceBundle
 Represents a particularly simple closed surface bundle over the circle. More...
 
class  SnapPeaCensusManifold
 Represents a 3-manifold from the SnapPea cusped census. More...
 
class  SnapPeaCensusTri
 Represents a 3-manifold triangulation from the SnapPea cusped census. More...
 
struct  SnapPeaException
 A base class for all exceptions that are thrown from within the SnapPea kernel. More...
 
struct  SnapPeaFatalError
 An exception that is thrown when the SnapPea kernel encounters a fatal error. More...
 
struct  SnapPeaMemoryFull
 An exception that is thrown when the SnapPea kernel finds that all available memory has been exhausted. More...
 
class  SnapPeaTriangulation
 Offers direct access to the SnapPea kernel from within Regina. More...
 
class  SnappedBall
 Represents a snapped 3-ball in a triangulation. More...
 
class  SnappedTwoSphere
 Represents a 2-sphere made from two snapped 3-balls in a triangulation. More...
 
class  SpiralSolidTorus
 Represents a spiralled solid torus in a triangulation. More...
 
class  StandardTriangulation
 Describes a triangulation or subcomplex of a triangulation whose structure is well-understood. More...
 
class  StoreConstPtr
 A Property storage policy indicating that the property should be held by constant pointer. More...
 
class  StoreManagedPtr
 A Property storage policy indicating that the property should be held by pointer and that the property wrapper will also take responsibility for memory management. More...
 
class  StoreValue
 A Property storage policy indicating that the property should be held by value. More...
 
class  StrandRef
 A reference to one of the two strands of a link that pass each other at a crossing. More...
 
class  SubtreeIterator
 A forward iterator for iterating through the entire packet subtree rooted at a given packet. More...
 
class  SurfaceFilter
 A packet that accepts or rejects normal surfaces. More...
 
class  SurfaceFilterCombination
 A normal surface filter that simply combines other filters. More...
 
struct  SurfaceFilterInfo
 A template that stores information about a particular type of normal surface filter. More...
 
class  SurfaceFilterProperties
 A normal surface filter that filters by basic properties of the normal surface. More...
 
class  Tangle
 Represents a 2-tangle in the 3-ball. More...
 
class  TautEnumeration
 The main entry point for the tree traversal algorithm to enumerate all taut angle structures in a 3-manifold triangulation. More...
 
class  Text
 A packet representing a text string. More...
 
class  TorusBundle
 Represents a torus bundle over the circle. More...
 
class  TreeBag
 Represents a single bag in a tree decomposition. More...
 
class  TreeDecomposition
 Represents a tree decomposition of a graph. More...
 
class  TreeEnumeration
 The main entry point for the tree traversal algorithm to enumerate all vertex normal or almost normal surfaces in a 3-manifold triangulation. More...
 
class  TreeSingleSoln
 The main entry point for the tree traversal / branching algorithm to locate a single non-trivial normal surface satisfying given constraints within a 3-manifold triangulation. More...
 
class  TreeTraversal
 A base class for searches that employ the tree traversal algorithm for enumerating and locating vertex normal surfaces and taut angle structures. More...
 
class  Triangulation
 A dim-dimensional triangulation, built by gluing together dim-dimensional simplices along their (dim-1)-dimensional facets. More...
 
class  Triangulation< 2 >
 Represents a 2-manifold triangulation. More...
 
class  Triangulation< 3 >
 Represents a 3-dimensional triangulation, typically of a 3-manifold. More...
 
class  Triangulation< 4 >
 Represents a 4-dimensional triangulation, typically of a 4-manifold. More...
 
class  TrieSet
 A trie-like data structure for storing and retriving sets. More...
 
class  TriSolidTorus
 Represents a three-tetrahedron triangular solid torus in a triangulation. More...
 
class  Tritmask1
 A small but extremely fast "ternary bitmask" class that can store up to 8 * sizeof(T) "trits", each equal to 0, 1 or 2. More...
 
class  Tritmask2
 A small but extremely fast "ternary bitmask" class that can store up to 8 * sizeof(T) + 8 * sizeof(U) "trits", each equal to 0, 1 or 2. More...
 
class  TrivialTri
 Represents one of a few particular hard-coded trivial triangulations that do not belong to any of the other larger families. More...
 
class  TxICore
 Provides a triangulation of the product T x I (the product of the torus and the interval). More...
 
class  TxIDiagonalCore
 One of a family of thin T x I triangulations that typically appear at the centres of layered torus bundles. More...
 
class  TxIParallelCore
 A specific six-tetrahedron TxICore triangulation that does not fit neatly into other families. More...
 
class  TypeTrie
 A trie that stores a set of type vectors of a fixed length. More...
 
class  Vector
 An optimised vector class of elements from a given ring T. More...
 
class  XMLAbelianGroupReader
 An XML element reader that reads a single abelian group. More...
 
class  XMLAngleStructureReader
 An XML element reader that reads a single angle structure. More...
 
class  XMLAngleStructuresReader
 An XML packet reader that reads a single angle structure list. More...
 
class  XMLCallback
 Provides the callbacks for an XMLParser required to parse an entire file using a series of XMLElementReader objects. More...
 
class  XMLCharsReader
 A reader for an XML element that contains only characters. More...
 
class  XMLContainerReader
 An XML packet reader that reads a single container. More...
 
class  XMLElementReader
 Used to read the contents of a single XML element. More...
 
class  XMLFilterPacketReader
 An XML packet reader that reads a single surface filter. More...
 
class  XMLFilterReader
 An XML element reader that reads the specific details of a normal surface filter. More...
 
class  XMLGroupPresentationReader
 An XML element reader that reads a single group presentation. More...
 
class  XMLLinkComponentsReader
 Helper class that reads the XML element containing information about the individual components of a link. More...
 
class  XMLLinkConnectionsReader
 Helper class that reads the XML element containing information on connections between crossings of a knot or link. More...
 
class  XMLLinkCrossingsReader
 Helper class that reads the XML element containing basic information about the crossings of a knot or link. More...
 
class  XMLLinkReader
 An XML packet reader that reads a single knot or link. More...
 
class  XMLNormalHypersurfaceReader
 An XML element reader that reads a single normal hypersurface in a 4-manifold triangulation. More...
 
class  XMLNormalHypersurfacesReader
 An XML packet reader that reads a single normal hypersurface list. More...
 
class  XMLNormalSurfaceReader
 An XML element reader that reads a single normal surface. More...
 
class  XMLNormalSurfacesReader
 An XML packet reader that reads a single normal surface list. More...
 
class  XMLPacketReader
 An XML element reader that reads the data for an individual packet. More...
 
class  XMLPDFReader
 An XML packet reader that reads a single PDF packet. More...
 
class  XMLScriptReader
 An XML packet reader that reads a single script. More...
 
class  XMLSnapPeaReader
 An XML packet reader that reads a single SnapPea triangulation. More...
 
class  XMLTextReader
 An XML packet reader that reads a single text packet. More...
 
class  XMLTreeResolutionTask
 An individual task for resolving dangling packet references after an XML data file has been read. More...
 
class  XMLTreeResolver
 Provides a mechanism to resolve dangling packet references after a complete packet tree has been read from an XML data file. More...
 
class  XMLTriangulationReader
 An XML packet reader that reads a single dim-dimensional triangulation. More...
 
class  XMLTriangulationReader< 2 >
 An XML packet reader that reads a single 2-dimensional triangulation. More...
 
class  XMLTriangulationReader< 3 >
 An XML packet reader that reads a single 3-dimensional triangulation. More...
 
class  XMLTriangulationReader< 4 >
 An XML packet reader that reads a single 4-dimensional triangulation. More...
 

Typedefs

typedef Matrix< Integer, true > MatrixInt
 A matrix of arbitrary-precision integers. More...
 
typedef std::vector< std::set< unsigned long > > EnumConstraints
 Represents an individual validity constraint for use with polytope vertex enumeration. More...
 
typedef regina::Flags< HyperListFlagsHyperList
 A combination of flags for types of normal hypersurface lists. More...
 
typedef regina::Flags< HyperAlgFlagsHyperAlg
 A combination of flags for types of normal surface lists. More...
 
typedef IntegerBase< true > LargeInteger
 LargeInteger is a typedef for IntegerBase<true>, which offers arbitrary precision integers with support for infinity. More...
 
typedef IntegerBase< false > Integer
 Integer is a typedef for IntegerBase<false>, which offers arbitrary precision integers without support for infinity. More...
 
typedef NativeInteger< sizeof(long)> NNativeLong
 NNativeLong is a typedef for the NativeInteger template class whose underlying integer type is a native long. More...
 
typedef Algorithm TuraevViroAlg
 Deprecated alias for Algorithm. More...
 
typedef std::list< SigPartialIsomorphism * > SigIsoList
 A list of partial isomorphisms on splitting surface signatures. More...
 
typedef void(* UseSignature) (const Signature &, const SigIsoList &, void *)
 A routine used to do arbitrary processing upon a splitting surface signature and its automorphisms. More...
 
typedef regina::Flags< NormalListFlagsNormalList
 A combination of flags for types of normal surface lists. More...
 
typedef regina::Flags< NormalAlgFlagsNormalAlg
 A combination of flags for types of normal surface lists. More...
 
template<int dim>
using Vertex = Face< dim, 0 >
 Refers to a vertex of a dim-dimensional triangulation. More...
 
template<int dim>
using Edge = Face< dim, 1 >
 Refers to an edge of a dim-dimensional triangulation. More...
 
template<int dim>
using Triangle = Face< dim, 2 >
 Refers to a triangular face of a dim-dimensional triangulation. More...
 
template<int dim>
using Tetrahedron = Face< dim, 3 >
 Refers to a tetrahedral face of a dim-dimensional triangulation. More...
 
template<int dim>
using Pentachoron = Face< dim, 4 >
 Refers to a pentachoron face of a dim-dimensional triangulation. More...
 
template<int dim>
using Simplex = Face< dim, dim >
 Refers to a top-dimensional simplex in a dim-dimensional triangulation. More...
 
template<int dim>
using VertexEmbedding = FaceEmbedding< dim, 0 >
 Details how a vertex of a dim-dimensional triangulation appears within each top-dimensional simplex. More...
 
template<int dim>
using EdgeEmbedding = FaceEmbedding< dim, 1 >
 Details how a edge of a dim-dimensional triangulation appears within each top-dimensional simplex. More...
 
template<int dim>
using TriangleEmbedding = FaceEmbedding< dim, 2 >
 Details how a triangular face of a dim-dimensional triangulation appears within each top-dimensional simplex. More...
 
template<int dim>
using TetrahedronEmbedding = FaceEmbedding< dim, 3 >
 Details how a tetrahedral face of a dim-dimensional triangulation appears within each top-dimensional simplex. More...
 
template<int dim>
using PentachoronEmbedding = FaceEmbedding< dim, 4 >
 Details how a pentachoron face of a dim-dimensional triangulation appears within each top-dimensional simplex. More...
 
typedef Bitmask1< unsigned char > BitmaskLen8
 A convenience typedef that gives a small and extremely fast bitmask class capable of holding at least 8 true-or-false bits. More...
 
typedef Bitmask1< unsigned int > BitmaskLen16
 A convenience typedef that gives a small and extremely fast bitmask class capable of holding at least 16 true-or-false bits. More...
 
typedef InternalBitmaskLen32 ::Type BitmaskLen32
 A convenience typedef that gives a small and extremely fast bitmask class capable of holding at least 32 true-or-false bits. More...
 
typedef InternalBitmaskLen64 ::Type BitmaskLen64
 A convenience typedef that gives a small and extremely fast bitmask class capable of holding at least 64 true-or-false bits. More...
 
typedef Qitmask1< unsigned char > QitmaskLen8
 A convenience typedef that gives a small and extremely fast qitmask class capable of holding at least 8 true-or-false bits. More...
 
typedef Qitmask1< unsigned int > QitmaskLen16
 A convenience typedef that gives a small and extremely fast qitmask class capable of holding at least 16 true-or-false bits. More...
 
typedef InternalQitmaskLen32 ::Type QitmaskLen32
 A convenience typedef that gives a small and extremely fast qitmask class capable of holding at least 32 true-or-false bits. More...
 
typedef InternalQitmaskLen64 ::Type QitmaskLen64
 A convenience typedef that gives a small and extremely fast qitmask class capable of holding at least 64 true-or-false bits. More...
 
typedef Tritmask1< unsigned char > TritmaskLen8
 A convenience typedef that gives a small and extremely fast tritmask class capable of holding at least 8 true-or-false bits. More...
 
typedef Tritmask1< unsigned int > TritmaskLen16
 A convenience typedef that gives a small and extremely fast tritmask class capable of holding at least 16 true-or-false bits. More...
 
typedef InternalTritmaskLen32 ::Type TritmaskLen32
 A convenience typedef that gives a small and extremely fast tritmask class capable of holding at least 32 true-or-false bits. More...
 
typedef InternalTritmaskLen64 ::Type TritmaskLen64
 A convenience typedef that gives a small and extremely fast tritmask class capable of holding at least 64 true-or-false bits. More...
 

Enumerations

enum  HyperCoords { HS_STANDARD = 0, HS_PRISM = 1, HS_EDGE_WEIGHT = 200 }
 Represents different coordinate systems that can be used for enumerating and displaying normal hypersurface within 4-manifold triangulations. More...
 
enum  HyperListFlags {
  HS_LIST_DEFAULT = 0x0000, HS_EMBEDDED_ONLY = 0x0001, HS_IMMERSED_SINGULAR = 0x0002, HS_VERTEX = 0x0004,
  HS_FUNDAMENTAL = 0x0008, HS_LEGACY = 0x4000, HS_CUSTOM = 0x8000
}
 Represents different lists of normal hypersurfaces that might be constructed for a given 4-manifold triangulation. More...
 
enum  HyperAlgFlags {
  HS_ALG_DEFAULT = 0x0000, HS_VERTEX_DD = 0x0020, HS_HILBERT_PRIMAL = 0x0100, HS_HILBERT_DUAL = 0x0200,
  HS_ALG_LEGACY = 0x4000, HS_ALG_CUSTOM = 0x8000
}
 Represents options and variants of algorithms for enumerating various types of normal hypersurfaces in 4-manifold triangulations. More...
 
enum  Framing { FRAMING_SEIFERT = 1, FRAMING_BLACKBOARD = 2 }
 Indicates one of the standard framing of a knot or link. More...
 
enum  PacketType {
  PACKET_CONTAINER = 1, PACKET_TEXT = 2, PACKET_NORMALSURFACES = 6, PACKET_SCRIPT = 7,
  PACKET_SURFACEFILTER = 8, PACKET_ANGLESTRUCTURES = 9, PACKET_PDF = 10, PACKET_NORMALHYPERSURFACES = 13,
  PACKET_SNAPPEATRIANGULATION = 16, PACKET_LINK = 17, PACKET_TRIANGULATION2 = 15, PACKET_TRIANGULATION3 = 3,
  PACKET_TRIANGULATION4 = 11, PACKET_TRIANGULATION5 = 105, PACKET_TRIANGULATION6 = 106, PACKET_TRIANGULATION7 = 107,
  PACKET_TRIANGULATION8 = 108, PACKET_TRIANGULATION9 = 109, PACKET_TRIANGULATION10 = 110, PACKET_TRIANGULATION11 = 111,
  PACKET_TRIANGULATION12 = 112, PACKET_TRIANGULATION13 = 113, PACKET_TRIANGULATION14 = 114, PACKET_TRIANGULATION15 = 115
}
 Represents the different types of packet that are available in Regina. More...
 
enum  Algorithm { ALG_DEFAULT = 0, ALG_BACKTRACK = 1, ALG_TREEWIDTH = 2, ALG_NAIVE = 3 }
 Represents various classes of algorithms that Regina can use for computations. More...
 
enum  NormalCoords {
  NS_STANDARD = 0, NS_QUAD = 1, NS_QUAD_CLOSED = 10, NS_AN_LEGACY = 100,
  NS_AN_QUAD_OCT = 101, NS_AN_STANDARD = 102, NS_AN_QUAD_OCT_CLOSED = 110, NS_EDGE_WEIGHT = 200,
  NS_TRIANGLE_ARCS = 201, NS_ORIENTED = 300, NS_ORIENTED_QUAD = 301, NS_ANGLE = 400
}
 Represents different coordinate systems that can be used for enumerating and displaying normal surfaces. More...
 
enum  NormalListFlags {
  NS_LIST_DEFAULT = 0x0000, NS_EMBEDDED_ONLY = 0x0001, NS_IMMERSED_SINGULAR = 0x0002, NS_VERTEX = 0x0004,
  NS_FUNDAMENTAL = 0x0008, NS_LEGACY = 0x4000, NS_CUSTOM = 0x8000
}
 Represents different lists of normal surfaces that might be constructed for a given 3-manifold triangulation. More...
 
enum  NormalAlgFlags {
  NS_ALG_DEFAULT = 0x0000, NS_VERTEX_VIA_REDUCED = 0x0001, NS_VERTEX_STD_DIRECT = 0x0002, NS_VERTEX_TREE = 0x0010,
  NS_VERTEX_DD = 0x0020, NS_HILBERT_PRIMAL = 0x0100, NS_HILBERT_DUAL = 0x0200, NS_HILBERT_CD = 0x0400,
  NS_HILBERT_FULLCONE = 0x0800, NS_ALG_LEGACY = 0x4000, NS_ALG_CUSTOM = 0x8000
}
 Represents options and variants of algorithms for enumerating various types of normal surfaces in 3-manifold triangulations. More...
 
enum  SurfaceExportFields {
  surfaceExportName = 0x0001, surfaceExportEuler = 0x0002, surfaceExportOrient = 0x0004, surfaceExportSides = 0x0008,
  surfaceExportBdry = 0x0010, surfaceExportLink = 0x0020, surfaceExportType = 0x0040, surfaceExportNone = 0,
  surfaceExportAllButName = 0x007e, surfaceExportAll = 0x007f
}
 Used to describe a field, or a set of fields, that can be exported alongside a normal surface list. More...
 
enum  SurfaceFilterType { NS_FILTER_DEFAULT = 0, NS_FILTER_PROPERTIES = 1, NS_FILTER_COMBINATION = 2 }
 Represents different types of filter classes that can be used to filter lists of normal surfaces in 3-manifold triangulations. More...
 
enum  TreeDecompositionAlg { TD_UPPER = 0x0001, TD_UPPER_GREEDY_FILL_IN = 0x0001 }
 Indicates which algorithm should be used to compute a tree decomposition of a graph. More...
 
enum  BagComparison { BAG_EQUAL = 0, BAG_SUBSET = -1, BAG_SUPERSET = 1, BAG_UNRELATED = 2 }
 Indicates the relationship between two bags in a tree decomposition. More...
 
enum  NiceType { NICE_INTRODUCE = 1, NICE_FORGET = 2, NICE_JOIN = 3 }
 Used to indicate the type of each bag in a nice tree decomposition. More...
 

Functions

std::ostream & operator<< (std::ostream &out, const GroupExpressionTerm &term)
 Writes the given term to the given output stream. More...
 
MatrixIntmakeAngleEquations (const Triangulation< 3 > *tri)
 Creates a new set of angle structure equations for the given triangulation. More...
 
const char * versionString ()
 Returns the full version number of this calculation engine. More...
 
int versionMajor ()
 Returns the major version number of this calculation engine. More...
 
int versionMinor ()
 Returns the minor version number of this calculation engine. More...
 
bool versionUsesUTF8 (const char *version)
 Did the given version of Regina consistently use UTF-8 in its data files? More...
 
const char * versionSnapPy ()
 Returns the version of SnapPy whose underlying SnapPea kernel is built into Regina. More...
 
const char * versionSnapPea ()
 An alias for versionSnapPy(), which returns the version of SnapPy whose underlying SnapPea kernel is built into Regina. More...
 
bool hasInt128 ()
 Does this particular build of Regina support native 128-bit arithmetic? More...
 
int politeThreads ()
 A suggestion for user interfaces as to how many threads should be used for parallel computations. More...
 
int testEngine (int value)
 Tests to see if an interface can successfully communicate with the underlying C++ calculation engine. More...
 
template<class T , bool supportsUtf8>
std::ostream & operator<< (std::ostream &out, const Output< T, supportsUtf8 > &object)
 Writes the short text representation of the given object to the given output stream. More...
 
ContainerreadDehydrationList (const char *filename, unsigned colDehydrations=0, int colLabels=-1, unsigned long ignoreLines=0)
 Reads a list of dehydrated triangulations from the given text file. More...
 
ContainerreadIsoSigList (const char *filename, unsigned dimension=3, unsigned colSigs=0, int colLabels=-1, unsigned long ignoreLines=0)
 Reads a list of isomorphism signatures from the given text file. More...
 
Triangulation< 3 > * readOrb (const char *filename)
 Reads a triangulation from the given Orb / Casson file. More...
 
template<typename FunctionObject , typename... Args>
ReturnsTraits< FunctionObject >::ReturnType forCoords (HyperCoords coords, FunctionObject &&func, typename ReturnsTraits< FunctionObject >::ReturnType defaultReturn, Args &&... args)
 Allows the user to call a template function whose template parameter matches a given value of HyperCoords, which is not known until runtime. More...
 
template<typename FunctionObject , typename... Args>
ReturnsTraits< FunctionObject >::Void forCoords (HyperCoords coords, FunctionObject &&func, Args &&... args)
 Allows the user to call a template function whose template parameter matches a given value of HyperCoords, which is not known until runtime. More...
 
HyperList operator| (HyperListFlags lhs, HyperListFlags rhs)
 Returns the bitwise OR of the two given flags. More...
 
HyperAlg operator| (HyperAlgFlags lhs, HyperAlgFlags rhs)
 Returns the bitwise OR of the two given flags. More...
 
NormalHypersurfaceVectormakeZeroVector (const Triangulation< 4 > *triangulation, HyperCoords coords)
 Returns a new normal hypersurface vector of the appropriate length for the given triangulation and the given coordinate system. More...
 
MatrixIntmakeMatchingEquations (const Triangulation< 4 > *triangulation, HyperCoords coords)
 Creates a new set of normal hypersurface matching equations for the given triangulation using the given coordinate system. More...
 
EnumConstraintsmakeEmbeddedConstraints (const Triangulation< 4 > *triangulation, HyperCoords coords)
 Creates a new set of validity constraints representing the condition that normal hypersurfaces be embedded. More...
 
std::pair< CrossingIterator, CrossingIteratorvertices (const Link &l)
 Returns an iterator range containing all vertices of the underlying graph of the given knot or link. More...
 
std::pair< ArcIterator, ArcIteratoredges (const Link &l)
 Returns an iterator range containing all edges of the underlying graph of the given triangulation. More...
 
size_t num_vertices (const Link &l)
 Returns the number of vertices in the underlying graph of the given knot or link. More...
 
size_t num_edges (const Link &l)
 Returns the number of edges in the graph of the given knot or link. More...
 
Crossingsource (const StrandRef &e, const Link &t)
 Returns the source vertex of the given directed edge in the underlying graph of the given knot or link. More...
 
Crossingtarget (const StrandRef &e, const Link &t)
 Returns the target vertex of the given directed edge in the underlying graph of the given knot or link. More...
 
unsigned degree (Crossing *v, const Link &l)
 Returns the total degree of the given vertex in the graph of the given knot or link. More...
 
unsigned in_degree (Crossing *v, const Link &l)
 Returns the in-degree of the given vertex in the graph of the given knot or link. More...
 
unsigned out_degree (Crossing *v, const Link &l)
 Returns the out-degree of the given vertex in the graph of the given knot or link. More...
 
std::pair< graph::AdjacentCrossingIterator, graph::AdjacentCrossingIteratoradjacent_vertices (Crossing *v, const Link &l)
 Returns an iterator range containing both vertices adjacent to the given vertex of the underlying knot/link graph along outgoing directed edges. More...
 
std::pair< graph::IncidentArcIterator< false >, graph::IncidentArcIterator< false > > in_edges (Crossing *v, const Link &l)
 Returns an iterator range containing both directed edges entering the given vertex of the underlying knot/link graph. More...
 
std::pair< graph::IncidentArcIterator< true >, graph::IncidentArcIterator< true > > out_edges (Crossing *v, const Link &l)
 Returns an iterator range containing both directed edges exiting the given vertex of the underlying knot/link graph. More...
 
size_t get (graph::InherentLinkPropertyMap< boost::vertex_index_t >, Crossing *v)
 Returns the index of the given vertex of the underlying graph of a knot or link. More...
 
graph::InherentLinkPropertyMap< boost::vertex_index_t > get (boost::vertex_index_t, const Link &)
 Returns a Boost property map that can be used to query indices of vertices in the underlying graph of a knot or link. More...
 
size_t get (boost::vertex_index_t, const Link &, Crossing *v)
 Returns the index of the given vertex of the underlying graph of a knot or link. More...
 
std::ostream & operator<< (std::ostream &out, const StrandRef &s)
 Writes a depiction of the given strand reference to the given output stream. More...
 
std::ostream & operator<< (std::ostream &out, const ModelLinkGraphArc &a)
 Writes a depiction of the given arc reference to the given output stream. More...
 
std::ostream & operator<< (std::ostream &out, const SFSFibre &f)
 Writes the given fibre in human-readable format to the given output stream. More...
 
int binomSmall (int n, int k)
 Returns the binomial coefficient n choose k in constant time for small arguments (n ≤ 16). More...
 
long binomMedium (int n, int k)
 Returns the binomial coefficient n choose k in linear time for medium-sized arguments (n ≤ 29). More...
 
Cyclotomic operator* (Cyclotomic elt, const Rational &scalar)
 Multiplies the given field element by the given rational. More...
 
Cyclotomic operator* (const Rational &scalar, Cyclotomic elt)
 Multiplies the given field element by the given rational. More...
 
Cyclotomic operator/ (Cyclotomic elt, const Rational &scalar)
 Divides the given field element by the given rational. More...
 
Cyclotomic operator+ (const Cyclotomic &lhs, const Cyclotomic &rhs)
 Adds the two given cyclotomic field elements. More...
 
Cyclotomic operator+ (Cyclotomic &&lhs, const Cyclotomic &rhs)
 Adds the two given cyclotomic field elements. More...
 
Cyclotomic operator+ (const Cyclotomic &lhs, Cyclotomic &&rhs)
 Adds the two given cyclotomic field elements. More...
 
Cyclotomic operator+ (Cyclotomic &&lhs, Cyclotomic &&rhs)
 Adds the two given cyclotomic field elements. More...
 
Cyclotomic operator- (Cyclotomic arg)
 Returns the negative of the given field element. More...
 
Cyclotomic operator* (const Cyclotomic &lhs, const Cyclotomic &rhs)
 Multiplies the two given cyclotomic field elements. More...
 
template<bool supportInfinity>
std::ostream & operator<< (std::ostream &out, const IntegerBase< supportInfinity > &i)
 Writes the given integer to the given output stream. More...
 
template<bool supportInfinity>
IntegerBase< supportInfinity > operator+ (long lhs, const IntegerBase< supportInfinity > &rhs)
 Adds the given native integer to the given large integer. More...
 
template<bool supportInfinity>
IntegerBase< supportInfinity > operator* (long lhs, const IntegerBase< supportInfinity > &rhs)
 Multiplies the given native integer with the given large integer. More...
 
template<int bytes>
std::ostream & operator<< (std::ostream &out, const NativeInteger< bytes > &i)
 Writes the given integer to the given output stream. More...
 
template<typename T >
Laurent< T > operator* (Laurent< T > poly, const typename Laurent< T >::Coefficient &scalar)
 Multiplies the given polynomial by the given scalar constant. More...
 
template<typename T >
Laurent< T > operator* (const typename Laurent< T >::Coefficient &scalar, Laurent< T > poly)
 Multiplies the given polynomial by the given scalar constant. More...
 
template<typename T >
Laurent< T > operator/ (Laurent< T > poly, const typename Laurent< T >::Coefficient &scalar)
 Divides the given polynomial by the given scalar constant. More...
 
template<typename T >
Laurent< T > operator+ (const Laurent< T > &lhs, const Laurent< T > &rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Laurent< T > operator+ (Laurent< T > &&lhs, const Laurent< T > &rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Laurent< T > operator+ (const Laurent< T > &lhs, Laurent< T > &&rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Laurent< T > operator+ (Laurent< T > &&lhs, Laurent< T > &&rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Laurent< T > operator- (Laurent< T > arg)
 Returns the negative of the given polynomial. More...
 
template<typename T >
Laurent< T > operator* (const Laurent< T > &lhs, const Laurent< T > &rhs)
 Multiplies the two given polynomials. More...
 
template<typename T >
Laurent2< T > operator* (Laurent2< T > poly, const typename Laurent2< T >::Coefficient &scalar)
 Multiplies the given polynomial by the given scalar constant. More...
 
template<typename T >
Laurent2< T > operator* (const typename Laurent2< T >::Coefficient &scalar, Laurent2< T > poly)
 Multiplies the given polynomial by the given scalar constant. More...
 
template<typename T >
Laurent2< T > operator/ (Laurent2< T > poly, const typename Laurent2< T >::Coefficient &scalar)
 Divides the given polynomial by the given scalar constant. More...
 
template<typename T >
Laurent2< T > operator+ (const Laurent2< T > &lhs, const Laurent2< T > &rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Laurent2< T > operator+ (Laurent2< T > &&lhs, const Laurent2< T > &rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Laurent2< T > operator+ (const Laurent2< T > &lhs, Laurent2< T > &&rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Laurent2< T > operator+ (Laurent2< T > &&lhs, Laurent2< T > &&rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Laurent2< T > operator- (Laurent2< T > arg)
 Returns the negative of the given polynomial. More...
 
template<typename T >
Laurent2< T > operator* (const Laurent2< T > &lhs, const Laurent2< T > &rhs)
 Multiplies the two given polynomials. More...
 
std::ostream & operator<< (std::ostream &out, const Matrix2 &mat)
 Writes the given matrix to the given output stream. More...
 
bool simpler (const Matrix2 &m1, const Matrix2 &m2)
 Determines whether the first given matrix is more aesthetically pleasing than the second. More...
 
bool simpler (const Matrix2 &pair1first, const Matrix2 &pair1second, const Matrix2 &pair2first, const Matrix2 &pair2second)
 Determines whether the first given pair of matrices is more aesthetically pleasing than the second pair. More...
 
void smithNormalForm (MatrixInt &matrix)
 Transforms the given integer matrix into Smith normal form. More...
 
void smithNormalForm (MatrixInt &matrix, MatrixInt &rowSpaceBasis, MatrixInt &rowSpaceBasisInv, MatrixInt &colSpaceBasis, MatrixInt &colSpaceBasisInv)
 A Smith normal form algorithm that also returns change of basis matrices. More...
 
void metricalSmithNormalForm (MatrixInt &matrix, MatrixInt *rowSpaceBasis=0, MatrixInt *rowSpaceBasisInv=0, MatrixInt *colSpaceBasis=0, MatrixInt *colSpaceBasisInv=0)
 An alternative Smith normal form algorithm that also returns change of basis matrices. More...
 
unsigned rowBasis (MatrixInt &matrix)
 Find a basis for the row space of the given matrix. More...
 
unsigned rowBasisAndOrthComp (MatrixInt &input, MatrixInt &complement)
 Finds a basis for the row space of the given matrix, as well as an "incremental" basis for its orthogonal complement. More...
 
void columnEchelonForm (MatrixInt &M, MatrixInt &R, MatrixInt &Ri, const std::vector< unsigned > &rowList)
 Transforms a given matrix into column echelon form with respect to a collection of rows. More...
 
std::unique_ptr< MatrixIntpreImageOfLattice (const MatrixInt &hom, const std::vector< Integer > &sublattice)
 Given a homomorphism from Z^n to Z^k and a sublattice of Z^k, compute the preimage of this sublattice under this homomorphism. More...
 
std::unique_ptr< MatrixInttorsionAutInverse (const MatrixInt &input, const std::vector< Integer > &invF)
 Given an automorphism of an abelian group, this procedure computes the inverse automorphism. More...
 
long reducedMod (long k, long modBase)
 Reduces k modulo modBase to give the smallest possible absolute value. More...
 
long gcd (long a, long b)
 Calculates the greatest common divisor of two signed integers. More...
 
long gcdWithCoeffs (long a, long b, long &u, long &v)
 Calculates the greatest common divisor of two given integers and finds the smallest coefficients with which these integers combine to give their gcd. More...
 
long lcm (long a, long b)
 Calculates the lowest common multiple of two signed integers. More...
 
unsigned long modularInverse (unsigned long n, unsigned long k)
 Calculates the multiplicative inverse of one integer modulo another. More...
 
constexpr char digit (int i)
 Returns the character used to express the integer i in a permutation. More...
 
constexpr int64_t factorial (int n)
 Returns the factorial of n. More...
 
template<int n>
std::ostream & operator<< (std::ostream &out, const Perm< n > &p)
 Writes a string representation of the given permutation to the given output stream. More...
 
template<typename T >
Polynomial< T > operator* (Polynomial< T > poly, const typename Polynomial< T >::Coefficient &scalar)
 Multiplies the given polynomial by the given scalar constant. More...
 
template<typename T >
Polynomial< T > operator* (const typename Polynomial< T >::Coefficient &scalar, Polynomial< T > poly)
 Multiplies the given polynomial by the given scalar constant. More...
 
template<typename T >
Polynomial< T > operator/ (Polynomial< T > poly, const typename Polynomial< T >::Coefficient &scalar)
 Divides the given polynomial by the given scalar constant. More...
 
template<typename T >
Polynomial< T > operator+ (const Polynomial< T > &lhs, const Polynomial< T > &rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Polynomial< T > operator+ (Polynomial< T > &&lhs, const Polynomial< T > &rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Polynomial< T > operator+ (const Polynomial< T > &lhs, Polynomial< T > &&rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Polynomial< T > operator+ (Polynomial< T > &&lhs, Polynomial< T > &&rhs)
 Adds the two given polynomials. More...
 
template<typename T >
Polynomial< T > operator- (Polynomial< T > arg)
 Returns the negative of the given polynomial. More...
 
template<typename T >
Polynomial< T > operator* (const Polynomial< T > &lhs, const Polynomial< T > &rhs)
 Multiplies the two given polynomials. More...
 
std::ostream & operator<< (std::ostream &out, const Rational &rat)
 Writes the given rational to the given output stream. More...
 
template<class T >
std::ostream & operator<< (std::ostream &out, const Vector< T > &vector)
 Writes the given vector to the given output stream. More...
 
Packetopen (const char *filename)
 Reads a Regina data file, and returns the corresponding packet tree. More...
 
Packetopen (std::istream &in)
 Reads a Regina data file from the given input stream, and returns the corresponding packet tree. More...
 
bool operator== (const Packet *packet, PacketShell shell)
 Identifies if the given shell refers to the given packet. More...
 
bool operator!= (const Packet *packet, PacketShell shell)
 Identifies if the given shell does not refer to the given packet. More...
 
template<typename FunctionObject , typename... Args>
ReturnsTraits< FunctionObject >::ReturnType forPacket (PacketType packetType, FunctionObject &&func, typename ReturnsTraits< FunctionObject >::ReturnType defaultReturn, Args &&... args)
 Allows the user to call a template function whose template parameter matches a given value of PacketType, which is not known until runtime. More...
 
template<typename FunctionObject , typename... Args>
ReturnsTraits< FunctionObject >::Void forPacket (PacketType packetType, FunctionObject &&func, Args &&... args)
 Allows the user to call a template function whose template parameter matches a given value of PacketType, which is not known until runtime. More...
 
constexpr bool standardDim (int dim)
 Indicates whether the given dimension is one of Regina's standard dimensions. More...
 
unsigned long formSigCensus (unsigned order, UseSignature use, void *useArgs=0)
 Forms a census of all splitting surface signatures of the given order. More...
 
template<typename FunctionObject , typename... Args>
ReturnsTraits< FunctionObject >::ReturnType forCoords (NormalCoords coords, FunctionObject &&func, typename ReturnsTraits< FunctionObject >::ReturnType defaultReturn, Args &&... args)
 Allows the user to call a template function whose template parameter matches a given value of NormalCoords, which is not known until runtime. More...
 
template<typename FunctionObject , typename... Args>
ReturnsTraits< FunctionObject >::Void forCoords (NormalCoords coords, FunctionObject &&func, Args &&... args)
 Allows the user to call a template function whose template parameter matches a given value of NormalCoords, which is not known until runtime. More...
 
std::ostream & operator<< (std::ostream &out, const DiscSpec &spec)
 Writes the given disc specifier to the given output stream. More...
 
bool numberDiscsAwayFromVertex (int discType, int vertex)
 Determines whether or not normal discs of the given type are numbered away from the given vertex. More...
 
bool discOrientationFollowsEdge (int discType, int vertex, int edgeStart, int edgeEnd)
 Determines whether or not the natural boundary orientation of a normal disc of the given type follows the given directed normal arc. More...
 
std::ostream & operator<< (std::ostream &out, const DiscType &type)
 Writes the given disc type to the given output stream. More...
 
template<typename FunctionObject , typename... Args>
ReturnsTraits< FunctionObject >::ReturnType forFilter (SurfaceFilterType filter, FunctionObject &&func, typename ReturnsTraits< FunctionObject >::ReturnType defaultReturn, Args &&... args)
 Allows the user to call a template function whose template parameter matches a given value of SurfaceFilterType, which is not known until runtime. More...
 
template<typename FunctionObject , typename... Args>
ReturnsTraits< FunctionObject >::Void forFilter (SurfaceFilterType filter, FunctionObject &&func, Args &&... args)
 Allows the user to call a template function whose template parameter matches a given value of SurfaceFilterType, which is not known until runtime. More...
 
NormalList operator| (NormalListFlags lhs, NormalListFlags rhs)
 Returns the bitwise OR of the two given flags. More...
 
NormalAlg operator| (NormalAlgFlags lhs, NormalAlgFlags rhs)
 Returns the bitwise OR of the two given flags. More...
 
NormalSurfaceVectormakeZeroVector (const Triangulation< 3 > *triangulation, NormalCoords coords)
 Returns a new normal surface vector of the appropriate length for the given triangulation and the given coordinate system. More...
 
MatrixIntmakeMatchingEquations (const Triangulation< 3 > *triangulation, NormalCoords coords)
 Creates a new set of normal surface matching equations for the given triangulation using the given coordinate system. More...
 
EnumConstraintsmakeEmbeddedConstraints (const Triangulation< 3 > *triangulation, NormalCoords coords)
 Creates a new set of validity constraints representing the condition that normal surfaces be embedded. More...
 
std::ostream & operator<< (std::ostream &out, const PrismSpec &spec)
 Writes the given prism specifier to the given output stream. More...
 
template<int dim>
int faceOppositeEdge (int i, int j)
 Returns the (dim-2)-face number that is opposite the edge joining vertices i and j in a dim-dimensional simplex. More...
 
std::ostream & operator<< (std::ostream &out, const FacePair &pair)
 Writes the given face pair to the given output stream. More...
 
template<int dim>
std::ostream & operator<< (std::ostream &out, const FacetSpec< dim > &spec)
 Writes the given facet specifier to the given output stream. More...
 
template<int dim>
std::pair< typename Triangulation< dim >::SimplexIterator, typename Triangulation< dim >::SimplexIterator > vertices (const Triangulation< dim > &t)
 Returns an iterator range containing all vertices of the dual graph of the given triangulation. More...
 
template<int dim>
std::pair< graph::DualEdgeIterator< dim >, graph::DualEdgeIterator< dim > > edges (const Triangulation< dim > &t)
 Returns an iterator range containing all edges of the dual graph of the given triangulation. More...
 
template<int dim>
size_t num_vertices (const Triangulation< dim > &t)
 Returns the number of vertices in the dual graph of the given triangulation. More...
 
template<int dim>
size_t num_edges (const Triangulation< dim > &t)
 Returns the number of edges in the dual graph of the given triangulation. More...
 
template<int dim>
Simplex< dim > * source (graph::DualEdge< dim > e, const Triangulation< dim > &t)
 Returns the source vertex of the given oriented edge in the dual graph of the given triangulation. More...
 
template<int dim>
Simplex< dim > * target (graph::DualEdge< dim > e, const Triangulation< dim > &t)
 Returns the target vertex of the given oriented edge in the dual graph of the given triangulation. More...
 
template<int dim>
unsigned degree (Simplex< dim > *v, const Triangulation< dim > &)
 Returns the degree of the given vertex in the dual graph of the given triangulation. More...
 
template<int dim>
unsigned in_degree (Simplex< dim > *v, const Triangulation< dim > &t)
 Returns the degree of the given vertex in the dual graph of the given triangulation. More...
 
template<int dim>
unsigned out_degree (Simplex< dim > *v, const Triangulation< dim > &t)
 Returns the degree of the given vertex in the dual graph of the given triangulation. More...
 
template<int dim>
std::pair< graph::AdjacentDualVertexIterator< dim >, graph::AdjacentDualVertexIterator< dim > > adjacent_vertices (Simplex< dim > *v, const Triangulation< dim > &t)
 Returns an iterator range containing all vertices adjacent to the given vertex of the dual graph of the given triangulation. More...
 
template<int dim>
std::pair< graph::IncidentDualEdgeIterator< dim, false >, graph::IncidentDualEdgeIterator< dim, false > > in_edges (Simplex< dim > *v, const Triangulation< dim > &t)
 Returns an iterator range containing all edges incident with the given vertex of the dual graph of the given triangulation. More...
 
template<int dim>
std::pair< graph::IncidentDualEdgeIterator< dim, true >, graph::IncidentDualEdgeIterator< dim, true > > out_edges (Simplex< dim > *v, const Triangulation< dim > &t)
 Returns an iterator range containing all edges incident with the given vertex of the dual graph of the given triangulation. More...
 
template<int dim>
size_t get (graph::InherentTriangulationPropertyMap< dim, boost::vertex_index_t >, Simplex< dim > *v)
 Returns the index of the given vertex of the dual graph of a triangulation. More...
 
template<int dim>
const std::string & get (graph::InherentTriangulationPropertyMap< dim, boost::vertex_name_t >, Simplex< dim > *v)
 Returns the description of the given vertex of the dual graph of a triangulation. More...
 
template<int dim>
graph::InherentTriangulationPropertyMap< dim, boost::vertex_index_t > get (boost::vertex_index_t, const Triangulation< dim > &)
 Returns a Boost property map that can be used to query indices of vertices in the dual graph of a triangulation. More...
 
template<int dim>
graph::InherentTriangulationPropertyMap< dim, boost::vertex_name_t > get (boost::vertex_name_t, const Triangulation< dim > &)
 Returns a Boost property map that can be used to query descriptions of vertices in the dual graph of a triangulation. More...
 
template<int dim>
size_t get (boost::vertex_index_t, const Triangulation< dim > &, Simplex< dim > *v)
 Returns the index of the given vertex of the dual graph of a triangulation. More...
 
template<int dim>
const std::string & get (boost::vertex_name_t, const Triangulation< dim > &, Simplex< dim > *v)
 Returns the description of the given vertex of the dual graph of a triangulation. More...
 
size_t base64Length (size_t bytes)
 Returns the number of base64 characters required to encode the given number of bytes. More...
 
bool isBase64 (char ch)
 Determines whether the given character is a base64 printable character as used by the base64 routines in Regina. More...
 
void base64Encode (const char *in, size_t inlen, char *out, size_t outlen)
 Encodes the given sequence of raw bytes in base64, and writes the results into a preallocated output buffer. More...
 
size_t base64Encode (const char *in, size_t inlen, char **out)
 Encodes the given sequence of raw bytes in base64, and passes back a newly allocated array containing the results. More...
 
bool base64Decode (const char *in, size_t inlen, char *out, size_t *outlen)
 Decodes the given sequence of base64 characters, and writes the resulting raw bytes into a preallocated output buffer. More...
 
bool base64Decode (const char *in, size_t inlen, char **out, size_t *outlen)
 Decodes the given sequence of base64 characters, and passes back a newly allocated array containing the results. More...
 
std::ostream & operator<< (std::ostream &out, const Bitmask &mask)
 Writes the given bitmask to the given output stream as a sequence of zeroes and ones. More...
 
template<typename T >
std::ostream & operator<< (std::ostream &out, const Bitmask1< T > &mask)
 Writes the given bitmask to the given output stream as a sequence of zeroes and ones. More...
 
template<typename T , typename U >
std::ostream & operator<< (std::ostream &out, const Bitmask2< T, U > &mask)
 Writes the given bitmask to the given output stream as a sequence of zeroes and ones. More...
 
std::ostream & operator<< (std::ostream &out, const BoolSet &set)
 Writes the given boolean set to the given output stream. More...
 
template<typename IntType >
constexpr int bitsRequired (IntType n)
 Returns the number of bits required to store integers in the range 0,...,n-1. More...
 
template<typename IntType >
constexpr IntType nextPowerOfTwo (IntType n)
 Returns the smallest integer power of two that is greater than or equal to the given argument n. More...
 
void writeResUsage (std::ostream &out)
 Writes time and memory usage for the current process to the given output stream. More...
 
template<typename T >
T * clonePtr (T *cloneMe)
 A simple routine for cloning an object if and only if it exists. More...
 
template<typename T >
T * clonePtr (const std::unique_ptr< T > &cloneMe)
 A simple routine for cloning an object if and only if it exists. More...
 
template<typename T >
std::ostream & operator<< (std::ostream &out, const Qitmask1< T > &mask)
 Writes the given qitmask to the given output stream as a sequence of digits (0, 1, 2 and/or 3). More...
 
template<typename T , typename U >
std::ostream & operator<< (std::ostream &out, const Qitmask2< T, U > &mask)
 Writes the given qitmask to the given output stream as a sequence of digits (0, 1, 2 and/or 3). More...
 
template<typename T >
std::ostream & operator<< (std::ostream &out, const LightweightSequence< T > &s)
 Writes the given sequence to the given output stream. More...
 
char * duplicate (const std::string &str)
 Creates a new C string that is a duplicate of the given C++ string. More...
 
bool startsWith (const std::string &str, const std::string &prefix)
 Determines whether the given C++ string begins with the given prefix. More...
 
std::string stripWhitespace (const std::string &str)
 Strips all whitespace from the beginning and end of the given C++ string. More...
 
bool valueOf (const std::string &str, int8_t &dest)
 Converts the entire given string to an 8-bit integer and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, uint8_t &dest)
 Converts the entire given string to an unsigned 8-bit integer and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, short &dest)
 Converts the entire given string to a short integer and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, unsigned short &dest)
 Converts the entire given string to an unsigned short integer and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, int &dest)
 Converts the entire given string to an integer and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, unsigned &dest)
 Converts the entire given string to an unsigned integer and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, long &dest)
 Converts the entire given string to a long integer and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, unsigned long &dest)
 Converts the entire given string to an unsigned long integer and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, long long &dest)
 Converts the entire given string to a long long integer and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, unsigned long long &dest)
 Converts the entire given string to an unsigned long long integer and reports whether this conversion was successful. More...
 
template<bool supportInfinity>
bool valueOf (const std::string &str, IntegerBase< supportInfinity > &dest)
 Converts the entire given string to an arbitrary precision integer and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, double &dest)
 Converts the entire given string to a double precision real number and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, bool &dest)
 Converts the entire given string to a boolean and reports whether this conversion was successful. More...
 
bool valueOf (const std::string &str, BoolSet &dest)
 Converts the entire given string to a set of booleans and reports whether this conversion was successful. More...
 
template<class OutputIterator >
unsigned basicTokenise (OutputIterator results, const std::string &str)
 Decomposes the given string into tokens. More...
 
std::string stringToToken (const char *str)
 Returns a token derived from the given string. More...
 
std::string stringToToken (const std::string &str)
 Returns a token derived from the given string. More...
 
template<typename T >
std::string superscript (T value)
 Converts the given C++ integer into a unicode superscript string. More...
 
template<typename T >
std::string subscript (T value)
 Converts the given C++ integer into a unicode subscript string. More...
 
template<typename T >
std::ostream & operator<< (std::ostream &out, const Tritmask1< T > &mask)
 Writes the given tritmask to the given output stream as a sequence of digits (0, 1 and/or 2). More...
 
template<typename T , typename U >
std::ostream & operator<< (std::ostream &out, const Tritmask2< T, U > &mask)
 Writes the given tritmask to the given output stream as a sequence of digits (0, 1 and/or 2). More...
 

Variables

constexpr Algorithm TV_DEFAULT = ALG_DEFAULT
 Deprecated alias for ALG_DEFAULT. More...
 
constexpr Algorithm TV_BACKTRACK = ALG_BACKTRACK
 Deprecated alias for ALG_BACKTRACK. More...
 
constexpr Algorithm TV_TREEWIDTH = ALG_TREEWIDTH
 Deprecated alias for ALG_TREEWIDTH. More...
 
constexpr Algorithm TV_NAIVE = ALG_NAIVE
 Deprecated alias for ALG_NAIVE. More...
 
const int quadSeparating [4][4]
 Lists which quadrilateral types separate which pairs of vertices in a tetrahedron. More...
 
const int quadMeeting [4][4][2]
 Lists which quadrilateral types meet which edges in a tetrahedron. More...
 
const int quadDefn [3][4]
 Lists which vertices each quadrilateral type separates in a tetrahedron. More...
 
const int quadPartner [3][4]
 Lists the second vertex with which each vertex is paired under each quadrilateral type in a tetrahedron. More...
 
const char quadString [3][6]
 Contains strings that can be used to represent each quadrilateral type in a tetrahedron. More...
 
const Perm< 4 > triDiscArcs [4][3]
 Lists in consecutive order the directed normal arcs that form the boundary of each type of triangular normal disc. More...
 
const Perm< 4 > quadDiscArcs [3][4]
 Lists in consecutive order the directed normal arcs that form the boundary of each type of quadrilateral normal disc. More...
 
const Perm< 4 > octDiscArcs [3][8]
 Lists in consecutive order the directed normal arcs that form the boundary of each type of octagonal normal disc. More...
 

Detailed Description

Contains the entire Regina calculation engine.

Define REGINA_VERIFY_LPDATA to check invariants as the algorithm runs.

This checking is slow and can increase the running time significantly.

Function Documentation

◆ adjacent_vertices() [1/2]

std::pair< graph::AdjacentCrossingIterator, graph::AdjacentCrossingIterator > regina::adjacent_vertices ( Crossing v,
const Link l 
)
inline

Returns an iterator range containing both vertices adjacent to the given vertex of the underlying knot/link graph along outgoing directed edges.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

Parameters

◆ adjacent_vertices() [2/2]

template<int dim>
std::pair< graph::AdjacentDualVertexIterator< dim >, graph::AdjacentDualVertexIterator< dim > > regina::adjacent_vertices ( Simplex< dim > *  v,
const Triangulation< dim > &  t 
)
inline

Returns an iterator range containing all vertices adjacent to the given vertex of the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

Parameters

◆ bitsRequired()

template<typename IntType >
constexpr int regina::bitsRequired ( IntType  n)
constexpr

Returns the number of bits required to store integers in the range 0,...,n-1.

This is simply the number of bits in the binary expansion of n-1.

If n is non-positive then this function will return 0.

Python:\n In Python, this routine fixes the integer type
IntType to be long.
Parameters
nany integer.
Returns
the number of bits required to store 0,...,n-1.
Template Parameters
IntTypeany integer type, such as int, long, and so on.

◆ degree() [1/2]

unsigned regina::degree ( Crossing v,
const Link l 
)
inline

Returns the total degree of the given vertex in the graph of the given knot or link.

This routine is compatible with the Boost Graph Library, where regina::Link can be used directly as the underlying graph type.

This routine is trivial: for any knot or link, the routines degree(), in_degree() and out_degree() always return 4, 2 and 2 respectively.

Parameters
vthe vertex of the knot/link graph that we are examining.
lthe graph itself (i.e., the underlying knot or link).
Returns
the degree of the vertex v.

◆ degree() [2/2]

template<int dim>
unsigned regina::degree ( Simplex< dim > *  v,
const Triangulation< dim > &   
)
inline

Returns the degree of the given vertex in the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

Since the dual graph of a triangulation is undirected, the routines degree(), in_degree() and out_degree() all return the same answers.

Parameters
vthe vertex of the dual graph that we are examining.
tthe dual graph itself (i.e., the underlying triangulation).
Returns
the degree of the dual vertex v.

◆ edges() [1/2]

std::pair< ArcIterator, ArcIterator > regina::edges ( const Link l)
inline

Returns an iterator range containing all edges of the underlying graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

This range allows iteration through all directed arcs of the underlying knot/link, excluding any zero-crossing unknot components.

Parameters
lthe knot or link whose graph we are studying.
Returns
the range of all edges of the corresponding graph.

◆ edges() [2/2]

template<int dim>
std::pair< graph::DualEdgeIterator< dim >, graph::DualEdgeIterator< dim > > regina::edges ( const Triangulation< dim > &  t)
inline

Returns an iterator range containing all edges of the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

Parameters
tthe triangulation whose dual graph we are studying.
Returns
the range of all dual edges of t.

◆ get() [1/9]

graph::InherentLinkPropertyMap< boost::vertex_index_t > regina::get ( boost::vertex_index_t  ,
const Link  
)
inline

Returns a Boost property map that can be used to query indices of vertices in the underlying graph of a knot or link.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

The index of a vertex in a knot/link graph is always the index of the corresponding crossing in the underlying knot or link.

The first argument does not matter: it is only used to convey type information (to indicate which graph property is being queried). Likewise, the second argument does not matter, since this type of property map carries no data; however, it would typically be the knot or link whose graph we are studying.

Returns
a property map for querying indices of vertices.

◆ get() [2/9]

size_t regina::get ( boost::vertex_index_t  ,
const Link ,
Crossing v 
)
inline

Returns the index of the given vertex of the underlying graph of a knot or link.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

The index of a vertex in a knot/link graph is always the index of the corresponding crossing in the underlying knot or link.

The first argument does not matter: it is only used to convey type information (to indicate which graph property is being queried). Likewise, the second argument does not matter (but typically it would be the knot or link whose graph we are studying).

Parameters
vthe vertex of the knot/link graph that we are examining.
Returns
the index of the v in the knot/link graph.

◆ get() [3/9]

template<int dim>
graph::InherentTriangulationPropertyMap< dim, boost::vertex_index_t > regina::get ( boost::vertex_index_t  ,
const Triangulation< dim > &   
)
inline

Returns a Boost property map that can be used to query indices of vertices in the dual graph of a triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

The first argument does not matter: it is only used to convey type information (to indicate which graph property is being queried). Likewise, the second argument does not matter, since this type of property map carries no data; however, it would typically be the triangulation whose dual graph we are studying.

Returns
a property map for querying indices of dual vertices.

◆ get() [4/9]

template<int dim>
size_t regina::get ( boost::vertex_index_t  ,
const Triangulation< dim > &  ,
Simplex< dim > *  v 
)
inline

Returns the index of the given vertex of the dual graph of a triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

The first argument does not matter: it is only used to convey type information (to indicate which graph property is being queried). Likewise, the second argument does not matter (but typically it would be the triangulation whose dual graph we are studying).

Parameters
vthe vertex of the dual graph that we are examining.
Returns
the index of the top-dimensional simplex corresponding to v in the underlying triangulation.

◆ get() [5/9]

template<int dim>
graph::InherentTriangulationPropertyMap< dim, boost::vertex_name_t > regina::get ( boost::vertex_name_t  ,
const Triangulation< dim > &   
)
inline

Returns a Boost property map that can be used to query descriptions of vertices in the dual graph of a triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

The first argument does not matter: it is only used to convey type information (to indicate which graph property is being queried). Likewise, the second argument does not matter, since this type of property map carries no data; however, it would typically be the triangulation whose dual graph we are studying.

Returns
a property map for querying descriptions of dual vertices.

◆ get() [6/9]

template<int dim>
const std::string & regina::get ( boost::vertex_name_t  ,
const Triangulation< dim > &  ,
Simplex< dim > *  v 
)
inline

Returns the description of the given vertex of the dual graph of a triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

The first argument does not matter: it is only used to convey type information (to indicate which graph property is being queried). Likewise, the second argument does not matter (but typically it would be the triangulation whose dual graph we are studying).

Parameters
vthe vertex of the dual graph that we are examining.
Returns
the description of the top-dimensional simplex corresponding to v in the underlying triangulation.

◆ get() [7/9]

size_t regina::get ( graph::InherentLinkPropertyMap< boost::vertex_index_t >  ,
Crossing v 
)
inline

Returns the index of the given vertex of the underlying graph of a knot or link.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

The index of a vertex in a knot/link graph is always the index of the corresponding crossing in the underlying knot or link.

The first argument does not matter: it is only used to convey type information (to indicate which graph property is being queried).

Parameters
vthe vertex of the knot/link graph that we are examining.
Returns
the index of the v in the knot/link graph.

◆ get() [8/9]

template<int dim>
size_t regina::get ( graph::InherentTriangulationPropertyMap< dim, boost::vertex_index_t >  ,
Simplex< dim > *  v 
)
inline

Returns the index of the given vertex of the dual graph of a triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

The first argument does not matter: it is only used to convey type information (to indicate which graph property is being queried).

Parameters
vthe vertex of the dual graph that we are examining.
Returns
the index of the top-dimensional simplex corresponding to v in the underlying triangulation.

◆ get() [9/9]

template<int dim>
const std::string & regina::get ( graph::InherentTriangulationPropertyMap< dim, boost::vertex_name_t >  ,
Simplex< dim > *  v 
)
inline

Returns the description of the given vertex of the dual graph of a triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

The first argument does not matter: it is only used to convey type information (to indicate which graph property is being queried).

Parameters
vthe vertex of the dual graph that we are examining.
Returns
the description of the top-dimensional simplex corresponding to v in the underlying triangulation.

◆ in_degree() [1/2]

unsigned regina::in_degree ( Crossing v,
const Link l 
)
inline

Returns the in-degree of the given vertex in the graph of the given knot or link.

This routine is compatible with the Boost Graph Library, where regina::Link can be used directly as the underlying graph type.

This routine is trivial: for any knot or link, the routines degree(), in_degree() and out_degree() always return 4, 2 and 2 respectively.

Parameters
vthe vertex of the knot/link graph that we are examining.
lthe graph itself (i.e., the underlying knot or link).
Returns
the number of directed arcs of the graph that enter v.

◆ in_degree() [2/2]

template<int dim>
unsigned regina::in_degree ( Simplex< dim > *  v,
const Triangulation< dim > &  t 
)
inline

Returns the degree of the given vertex in the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

Since the dual graph of a triangulation is undirected, the routines degree(), in_degree() and out_degree() all return the same answers.

Parameters
vthe vertex of the dual graph that we are examining.
tthe dual graph itself (i.e., the underlying triangulation).
Returns
the degree of the dual vertex v.

◆ in_edges() [1/2]

std::pair< graph::IncidentArcIterator< false >, graph::IncidentArcIterator< false > > regina::in_edges ( Crossing v,
const Link l 
)
inline

Returns an iterator range containing both directed edges entering the given vertex of the underlying knot/link graph.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

Parameters

◆ in_edges() [2/2]

template<int dim>
std::pair< graph::IncidentDualEdgeIterator< dim, false >, graph::IncidentDualEdgeIterator< dim, false > > regina::in_edges ( Simplex< dim > *  v,
const Triangulation< dim > &  t 
)
inline

Returns an iterator range containing all edges incident with the given vertex of the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

The dual edges in this range will all be oriented towards v (i.e., v will appear as the target of each edge).

Note
The routine out_edges() returns the same range of dual edges, but oriented in the opposite direction.
Parameters

◆ nextPowerOfTwo()

template<typename IntType >
constexpr IntType regina::nextPowerOfTwo ( IntType  n)
constexpr

Returns the smallest integer power of two that is greater than or equal to the given argument n.

If n is non-positive then this function will return 1.

Python:\n In Python, this routine fixes the integer type
IntType to be long.
Warning
Even though the return value is the same type as the argument n, this routine may still overflow. For example, if IntType is a signed char then nextPowerOfTwo(127) will return -128, and if IntType is an unsigned char then nextPowerOfTwo(255) will return 0. Be sure that IntType is large enough for your requirements.
Parameters
nany integer.
Returns
the smallest integer power of two that is ≥ n.
Template Parameters
IntTypeany integer type, such as int, long, and so on.

◆ num_edges() [1/2]

size_t regina::num_edges ( const Link l)
inline

Returns the number of edges in the graph of the given knot or link.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

Here the number of edges in the graph is always the number of directed arcs, excluding any zero-crossing unknot components. This means that the number of edges is always twice the number of vertices (i.e., crossings).

Parameters
lthe knot or link whose graph we are studying.
Returns
the number of edges in the graph.

◆ num_edges() [2/2]

template<int dim>
size_t regina::num_edges ( const Triangulation< dim > &  t)
inline

Returns the number of edges in the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

Parameters
tthe triangulation whose dual graph we are studying.
Returns
the number of dual edges of t.

◆ num_vertices() [1/2]

size_t regina::num_vertices ( const Link l)
inline

Returns the number of vertices in the underlying graph of the given knot or link.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

Here the number of vertices in the graph is always the number of crossings in the underlying knot/link.

Parameters
lthe knot or link whose graph we are studying.
Returns
the number of vertices in the graph.

◆ num_vertices() [2/2]

template<int dim>
size_t regina::num_vertices ( const Triangulation< dim > &  t)
inline

Returns the number of vertices in the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

Parameters
tthe triangulation whose dual graph we are studying.
Returns
the number of dual vertices of t.

◆ operator<<()

template<typename T >
std::ostream& regina::operator<< ( std::ostream &  out,
const LightweightSequence< T > &  s 
)

Writes the given sequence to the given output stream.

No newline will be written.

The sequence will be written in the form (a, b, c, ...).

Precondition
An object x of type T can be written to an output stream using the syntax out << x.
Parameters
outthe output stream to which to write.
sthe sequence to write.
Returns
a reference to the given output stream.

◆ out_degree() [1/2]

unsigned regina::out_degree ( Crossing v,
const Link l 
)
inline

Returns the out-degree of the given vertex in the graph of the given knot or link.

This routine is compatible with the Boost Graph Library, where regina::Link can be used directly as the underlying graph type.

This routine is trivial: for any knot or link, the routines degree(), in_degree() and out_degree() always return 4, 2 and 2 respectively.

Parameters
vthe vertex of the knot/link graph that we are examining.
lthe graph itself (i.e., the underlying knot or link).
Returns
the number of directed arcs of the graph that exit v.

◆ out_degree() [2/2]

template<int dim>
unsigned regina::out_degree ( Simplex< dim > *  v,
const Triangulation< dim > &  t 
)
inline

Returns the degree of the given vertex in the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

Since the dual graph of a triangulation is undirected, the routines degree(), in_degree() and out_degree() all return the same answers.

Parameters
vthe vertex of the dual graph that we are examining.
tthe dual graph itself (i.e., the underlying triangulation).
Returns
the degree of the dual vertex v.

◆ out_edges() [1/2]

std::pair< graph::IncidentArcIterator< true >, graph::IncidentArcIterator< true > > regina::out_edges ( Crossing v,
const Link l 
)
inline

Returns an iterator range containing both directed edges exiting the given vertex of the underlying knot/link graph.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

Parameters

◆ out_edges() [2/2]

template<int dim>
std::pair< graph::IncidentDualEdgeIterator< dim, true >, graph::IncidentDualEdgeIterator< dim, true > > regina::out_edges ( Simplex< dim > *  v,
const Triangulation< dim > &  t 
)
inline

Returns an iterator range containing all edges incident with the given vertex of the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

The dual edges in this range will all be oriented away from v (i.e., v will appear as the source of each edge).

Note
The routine in_edges() returns the same range of dual edges, but oriented in the opposite direction.
Parameters

◆ source() [1/2]

Crossing * regina::source ( const StrandRef e,
const Link t 
)
inline

Returns the source vertex of the given directed edge in the underlying graph of the given knot or link.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

Parameters
ethe edge of the knot/link graph that we are examining.
lthe graph itself (i.e., the underlying knot or link).
Returns
the source vertex of the edge e.

◆ source() [2/2]

template<int dim>
Simplex< dim > * regina::source ( graph::DualEdge< dim >  e,
const Triangulation< dim > &  t 
)
inline

Returns the source vertex of the given oriented edge in the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

Note that the dual graph of a triangulation is undirected, and so the orientation of a dual edge (i.e., its choice of source and target vertices) will depend upon how that dual edge was obtained. In particular, the same dual edge may be returned with different orientations when accessed through different routines. See the class DualEdgeIterator and IncidentDualEdgeIterator for details.

Parameters
ethe edge of the dual graph that we are examining.
tthe dual graph itself (i.e., the underlying triangulation).
Returns
the source vertex of the dual edge e.

◆ target() [1/2]

Crossing * regina::target ( const StrandRef e,
const Link t 
)
inline

Returns the target vertex of the given directed edge in the underlying graph of the given knot or link.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

Parameters
ethe edge of the knot/link graph that we are examining.
lthe graph itself (i.e., the underlying knot or link).
Returns
the target vertex of the edge e.

◆ target() [2/2]

template<int dim>
Simplex< dim > * regina::target ( graph::DualEdge< dim >  e,
const Triangulation< dim > &  t 
)
inline

Returns the target vertex of the given oriented edge in the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

Note that the dual graph of a triangulation is undirected, and so the orientation of a dual edge (i.e., its choice of source and target vertices) will depend upon how that dual edge was obtained. In particular, the same dual edge may be returned with different orientations when accessed through different routines. See the class DualEdgeIterator and IncidentDualEdgeIterator for details.

Parameters
ethe edge of the dual graph that we are examining.
tthe dual graph itself (i.e., the underlying triangulation).
Returns
the target vertex of the dual edge e.

◆ vertices() [1/2]

std::pair< CrossingIterator, CrossingIterator > regina::vertices ( const Link l)
inline

Returns an iterator range containing all vertices of the underlying graph of the given knot or link.

This routine is compatible with the Boost Graph Library, where Link can be used directly as the underlying graph type.

This range allows iteration through all crossings of the underlying knot/link.

Parameters
lthe knot or link whose graph we are studying.
Returns
the range of all vertices of the corresponding graph.

◆ vertices() [2/2]

template<int dim>
std::pair< typename Triangulation< dim >::SimplexIterator, typename Triangulation< dim >::SimplexIterator > regina::vertices ( const Triangulation< dim > &  t)
inline

Returns an iterator range containing all vertices of the dual graph of the given triangulation.

This routine is compatible with the Boost Graph Library, where Triangulation<dim> can be used directly as the underlying graph type.

Parameters
tthe triangulation whose dual graph we are studying.
Returns
the range of all dual vertices of t.

◆ writeResUsage()

void regina::writeResUsage ( std::ostream &  out)

Writes time and memory usage for the current process to the given output stream.

Information is gathered from the /proc filesystem, which means that this routine will only write meaningful information under a Linux system where /proc is mounted.

Specifically, this routine reads information on the running process from /proc/self/stat, and writes a short string to the given output stream of the form:

utime=..., stime=..., vsize=...

The three ellipses in the example above will be replaced with integers, representing:

  • the number jiffies that this process has been scheduled in user mode (the utime field);
  • the number jiffies that this process has been scheduled in kernel mode (the stime field);
  • the the virtual memory size in bytes (the vsize field).

The description of these three fields is taken directly from the proc(5) manpage. Note that the length of a jiffy can differ from system to system; see the time(7) manpage for details.

The output will not contain a newline, and the given output stream will not be flushed.

If /proc/self/stat cannot be read, this routine will write a short message to that effect to the given output stream (which means that this utility is safe to call under non-Linux operating systems, although it will of course be useless in such scenarios).

If /proc/self/stat can be read but contains unexpected information, the behaviour of this routine is undefined.

Python:\n This routine does not take any arguments; instead the
stream out is assumed to be standard output.
Warning
Currently this routine allows at most 255 characters for the comm field in /proc/self/stat (which stores the executable filename along with surrounding parentheses). If the comm field is too long (i.e., the executable filename is too long), then this routine will not be able to parse /proc/self/stat, and will write a note to this effect to the given output stream. If you encounter this problem, you should be able to fix it by renaming your executable to something shorter.
Parameters
outthe output stream to which usage information will be written.

Copyright © 1999-2018, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).