- File matrixops.h
- Feature (long-term): Add a routine to find the rank of an integer matrix; use this to show the rank of the matching equations.
- Namespace regina
Bug: Derive from regina::boost::noncopyable where appropriate.
Feature (long-term): Enhance the test suite for the calculation engine.
- Member regina::formSigCensus (unsigned order, UseSignature use, void *useArgs=0)
- Feature: Add support for symbols of differing case.
- Class regina::NAbelianGroup
- Optimise (long-term): Look at using sparse matrices for storage of SNF and the like.
- Class regina::NBitmask
- Optimise: Insist that sizeof(Piece) is a power of two, and replace expensive division/mod operations with cheap bit operations.
- Class regina::NDiscSetTet
- Bug (long-term): Have some error flag so we can barf politely if the number of normal discs of a given type does not fit into an
unsigned long
. See how this affects NDiscSetTetData also.
- Member regina::NFacePairing::findAllPairings (unsigned nTetrahedra, NBoolSet boundary, int nBdryFaces, UseFacePairing use, void *useArgs=0, bool newThread=false)
Optimise (long-term): When generating face pairings, do some checking to eliminate cases in which tetrahedron (k > 0) can be swapped with tetrahedron 0 to produce a smaller representation of the same pairing.
Feature: Allow cancellation of face pairing generation.
- Member regina::NGluingPermSearcher::runSearch (long maxDepth=-1)
- Feature: Allow cancellation of permutation set generation.
- Class regina::NGraphLoop
- Optimise: Speed up homology calculations involving orientable base spaces by adding rank afterwards, instead of adding generators for genus into the presentation matrix.
- Class regina::NGraphPair
- Optimise: Speed up homology calculations involving orientable base spaces by adding rank afterwards, instead of adding generators for genus into the presentation matrix.
- Class regina::NGraphTriple
- Optimise: Speed up homology calculations involving orientable base spaces by adding rank afterwards, instead of adding generators for genus into the presentation matrix.
- Class regina::NGroupPresentation
- Optimise (long-term): The simplification routines really need work!
- Member regina::NGroupPresentation::intelligentSimplify ()
- Feature (long-term): Make this simplification more effective.
- Member regina::NGroupPresentation::recogniseGroup () const
- Feature (long-term): Make this recognition more effective.
- Class regina::NHomMarkedAbelianGroup
Optimise (long-term): preImageOf in CC and SNF coordinates. This routine would return a generating list of elements in the preimage, thought of as an affine subspace. Or maybe just one element together with the kernel inclusion. IMO smarter to be a list because that way there's a more pleasant way to make it empty. Or we could have a variety of routines among these themes. Store some minimal data for efficient computations of preImage, eventually replacing the internals of inverseHom() with a more flexible set of tools. Also add an isInImage() in various coordinates.
Optimise (long-term): writeTextShort() have completely different set of descriptors if an endomorphism domain = range (not so important at the moment though). New descriptors would include things like automorphism, projection, differential, finite order, etc.
Optimise (long-term): Add map factorization, so that every homomorphism can be split as a composite of a projection followed by an inclusion. Add kernelInclusion(), coKerMap(), etc. Add a liftMap() call, i.e., a procedure to find a lift of a map if one exists.
- Class regina::NIsomorphism
- Feature: Composition of isomorphisms.
- Class regina::NMarkedAbelianGroup
Optimise (long-term): Look at using sparse matrices for storage of SNF and the like.
Testsuite additions: isBoundary(), boundaryMap(), writeAsBdry(), cycleGen().
- Class regina::NNormalSurface
Feature: Calculation of Euler characteristic and orientability for non-compact surfaces.
Feature (long-term): Determine which faces in the solution space a normal surface belongs to.
- Member regina::NNormalSurface::findNonTrivialSphere (NTriangulation *tri)
- Optimise (urgent): Use maximisation of Euler characteristic to make this routine much faster than a plain vertex enumeration.
- Member regina::NNormalSurface::findVtxOctAlmostNormalSphere (NTriangulation *tri, bool quadOct=false)
- Optimise: Use maximisation of Euler characteristic to make this routine much faster than a plain vertex enumeration.
- Member regina::NNormalSurface::isCentral () const
- Optimise: Cache results.
- Member regina::NNormalSurface::isCompressingDisc (bool knownConnected=false) const
Optimise: Reimplement this to avoid cutting along surfaces.
Bug: Check for absurdly large numbers of discs and bail accordingly.
- Member regina::NNormalSurface::isSplitting () const
- Optimise: Cache results.
- Member regina::NNormalSurface::isThinEdgeLink () const
- Optimise: Cache results.
- Member regina::NNormalSurface::isVertexLink () const
- Optimise: Cache results.
- Member regina::NNormalSurface::isVertexLinking () const
- Optimise: Cache results.
- Class regina::NNormalSurfaceList
Feature: Allow custom matching equations.
Feature: Allow enumeration with some coordinates explicitly set to zero.
Feature: Allow generating only closed surfaces.
Feature: Generate facets of the solution space representing embedded surfaces.
- Member regina::NNormalSurfaceList::enumerate (NTriangulation *owner, int newFlavour, bool embeddedOnly=true, NProgressManager *manager=0)
Feature: Allow picking up the first ``interesting'' surface and bailing en route.
Feature (long-term): Determine the faces of the normal solution space.
Feature (long-term): Allow either subsets of normal surface lists or allow deletion of surfaces from lists.
- Member regina::NNormalSurfaceList::filterForDisjointPairs () const
- Deal properly with surfaces that are too large to handle.
- Member regina::NNormalSurfaceList::filterForPotentiallyIncompressible () const
- Add progress tracking.
- Class regina::NNormalSurfaceVector
- Optimise (long-term): Investigate using sparse vectors for storage.
- Class regina::NNormalSurfaceVectorMirrored
- Bug: Allow modification of the vector by overwriting setValue(); this will require documentation changes in both this class and in NNormalSurfaceVector.
- Class regina::NPacket
- Feature: Provide automatic name selection/specification upon child packet insertion.
- Member regina::NPrimes::primeDecomp (const NLargeInteger &n)
- Optimise: Add a version that does not return the factors by value.
- Member regina::NPrimes::primePowerDecomp (const NLargeInteger &n)
Optimise: Implement this routine natively to avoid the overhead of the temporary primeDecomp() vector.
Optimise: Add a version that does not return the factors by value.
- Class regina::NSatRegion
- Feature: Have this class track the boundary components properly, with annuli grouped and oriented according to the region boundaries (as opposed to individual block boundaries).
- Class regina::NSFSpace
Feature (long-term): Implement recognition of more common names.
Feature (long-term): Implement triangulation construction and homology calculation for more Seifert fibred spaces.
- Class regina::NSurfaceFilter
- Feature: Implement property lastAppliedTo.
- Class regina::NTorusBundle
- Feature: Implement the == operator for finding conjugate and inverse matrices.
- Class regina::NTriangulation
Feature: Is the boundary incompressible?
Feature (long-term): Am I obviously a handlebody? (Simplify and see if there is nothing left). Am I obviously not a handlebody? (Compare homology with boundary homology).
Feature (long-term): Is the triangulation Haken?
Feature (long-term): What is the Heegaard genus?
Feature (long-term): Have a subcomplex as a child packet of a triangulation. Include routines to crush a subcomplex or to expand a subcomplex to a normal surface.
Feature (long-term): Implement writeTextLong() for skeletal objects.
- Member regina::NTriangulation::idealToFinite (bool forceDivision=false)
- Optimise (long-term): Have this routine only use as many tetrahedra as are necessary, leaving finite vertices alone.
- Member regina::NTriangulation::intelligentSimplify ()
- Optimise: Include random 2-3 moves to get out of wells.
- Member regina::NTriangulation::isIsomorphicTo (const NTriangulation &other) const
- Optimise: Improve the complexity by choosing a tetrahedron mapping from each component and following gluings to determine the others.