- 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.
- Class regina::AbelianGroup
- Optimise (long-term): Look at using sparse matrices for storage of SNF and the like.
- Class regina::Bitmask
- Optimise: Insist that sizeof(Piece) is a power of two, and replace expensive division/mod operations with cheap bit operations.
- Member regina::detail::FacetPairingBase< dim >::findAllPairings (size_t nSimplices, BoolSet boundary, int nBdryFacets, Action &&action, Args &&... args)
Optimise (long-term): When generating facet pairings, do some checking to eliminate cases in which simplex (k > 0) can be swapped with simplex 0 to produce a smaller representation of the same pairing.
Feature: Allow cancellation of facet pairing generation.
- Member regina::detail::TriangulationBase< dim >::isIsomorphicTo (const Triangulation< dim > &other) const
- Optimise: Improve the complexity by choosing a simplex mapping from each component and following gluings to determine the others.
- Member regina::detail::TriangulationBase< dim >::subdivide ()
- Lock the topological properties of the underlying manifold, to avoid recomputing them after the subdivision. However, only do this for valid triangulations (since we can have scenarios where invalid triangulations becoming valid and ideal after subdivision, which may change properties such as Triangulation<4>::knownSimpleLinks).
- Class regina::DiscSetTet
- 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 DiscSetTetData also.
- Member regina::GluingPermSearcher< 2 >::runSearch (Action &&action, Args &&... args)
- Feature: Allow cancellation of permutation set generation.
- Member regina::GluingPermSearcher< 3 >::runSearch (Action &&action, Args &&... args)
- Feature: Allow cancellation of permutation set generation.
- Member regina::GluingPermSearcher< 4 >::runSearch (Action &&action, Args &&... args)
- Feature: Allow cancellation of permutation set generation.
- Class regina::GraphLoop
- 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::GraphPair
- 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::GraphTriple
- Optimise: Speed up homology calculations involving orientable base spaces by adding rank afterwards, instead of adding generators for genus into the presentation matrix.
- Member regina::GroupExpression::relabellingsThisToOther (const GroupExpression &other, bool cyclic=false) const
- Change this to use less heavyweight types and less deep copying.
- Class regina::GroupPresentation
- Let's make intelligent simplify a tad more intelligent, and the GUI call a bit more safe. Perhaps parallelize the GUI call, and give users parameters to ensure it won't crash the computer. Also look at the FPGroup package. We should also have a simple way of creating GroupPresentation objects directly from text strings. We would like to have something like GroupPresentation( numGens, "abAAB", "bccd" ) etc., with arbitrary numbers of relators. Maybe std::tuple. Or "variadic templates"?
- Member regina::GroupPresentation::prettyRewriting ()
- As a final step, make elementary simplifications to aid in seeing standard relators like commutators.
- Member regina::GroupPresentation::recogniseGroup (bool moreUtf8=false) const
- Feature (long-term): Make this recognition more effective.
- Member regina::GroupPresentation::smallCancellation ()
- Optimise (long-term): This routine could use some small tweaks - recognition of utility of some score==0 moves, such as commutators, for example.
- Class regina::HomGroupPresentation
- Add a routine to attempt to verify validity of homomorphism.
- Class regina::HomMarkedAbelianGroup
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.
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 = codomain (not so important at the moment though). New descriptors would include things like automorphism, projection, differential, finite order, etc.
- Member regina::Isomorphism< dim >::operator() (const Triangulation< dim > &tri) const
- Lock the topological properties of the underlying manifold, to avoid recomputing them after the isomorphism is applied.
- Class regina::MarkedAbelianGroup
- Optimise (long-term): Look at using sparse matrices for storage of SNF and the like.
- Member regina::NormalHypersurface::triangulate () const
- Bug: Check for absurdly large numbers of pieces and return
null
accordingly.
- Class regina::NormalSurface
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::NormalSurface::isCompressingDisc (bool knownConnected=false) const
Optimise: Reimplement this to avoid cutting along surfaces.
Bug: Check for absurdly large numbers of discs and bail accordingly.
- Class regina::NormalSurfaces
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::Primes::primeDecomp (const Integer &n)
- Optimise: Add a version that does not return the factors by value.
- Member regina::Primes::primePowerDecomp (const Integer &n)
Optimise: Add a version that does not return the factors by value.
Optimise: Implement this routine natively to avoid the overhead of the temporary primeDecomp() vector.
- Class regina::SatRegion
- 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::SFSpace
Feature (long-term): Implement recognition of more common names.
Feature (long-term): Implement triangulation construction and homology calculation for more Seifert fibred spaces.
- Member regina::SigCensus::formCensus (unsigned order, Action &&action, Args &&... args)
- Feature: Add support for symbols of differing case.
- Class regina::TorusBundle
- Feature: Implement the == operator for finding conjugate and inverse matrices.
- Class regina::Triangulation< 3 >
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 new type. Include routines to crush a subcomplex or to expand a subcomplex to a normal surface.
- Member regina::Triangulation< 3 >::idealToFinite ()
- Optimise (long-term): Have this routine only use as many tetrahedra as are necessary, leaving finite vertices alone.
- Member regina::Triangulation< 3 >::intelligentSimplify ()
- Optimise: Include random 2-3 moves to get out of wells.