Recent Releases of libflatsurf
libflatsurf - 3.15.2
Fixed:
- Fixed more spurious JIT errors on macOS.
- C++
Published by saraedum over 1 year ago
libflatsurf - 3.15.1
Fixed:
- Fixed spurious JIT errors on macOS (these errors only seem to happen on GitHub runners, we couldn't reproduce them locally.)
- C++
Published by saraedum over 1 year ago
libflatsurf - 3.15.0
Added:
- Added hash functions for
FlatTriangulationCombinatorial,FlatTriangulation<T>, andPermutation<T>.
Fixed:
Fixed typos in documentation.
Fixed compiler warnings.
Fixed comparison of surfaces defined over different rings. Surfaces defined over different rings are now never considered to be equal.
Fixed
trivial()for linear deformations. A linear deformation coming from the identity matrix is now only trivial if the domain and codomain are indistinguishable, i.e., if application of that matrix does not change the base ring.
- C++
Published by saraedum almost 2 years ago
libflatsurf - 3.14.1
Fixed:
- Fixed ordering of saddle connections when iterating
byLength(). - Fixed tests on macOS. All tests are now automatically run for macOS 11 on GitHub's CI.
- C++
Published by saraedum over 2 years ago
libflatsurf - 3.14.0
Added:
- Added
FlowComponent::safInvariant()to expose the SAF invariant of the underlying Interval Exchange Transformation.
Fixed:
- Fixed printing of the trivial deformation to actually print as a deformation and not as the underlying surface.
- Fixed access to intervalxt objects through pyflatsurf, e.g.,
FlowComoponent::dynamicalComponent.
- C++
Published by saraedum over 2 years ago
libflatsurf - 3.13.5
Added:
- Added compatibility with FLINT 3.
- C++
Published by saraedum over 2 years ago
libflatsurf - 3.13.4
Fixed:
- Fixed checks for fmt library version 10.
- C++
Published by saraedum over 2 years ago
libflatsurf - 3.13.3
Fixed:
- Fixed
FlatTriangulation::isomorphism(…, DELAUNAY_CELLS)which got Delaunay cells wrong in the image of the isomorphism.
- C++
Published by saraedum about 3 years ago
libflatsurf - 3.13.2
Fixed:
- Fixed missing implementation of hashing for
EquivalenceClass. - Fixed equivalence tests in pyflatsurf test suite.
- C++
Published by saraedum over 3 years ago
libflatsurf - 3.13.1
Fixed:
- Fixed compilation on macOS.
- C++
Published by saraedum over 3 years ago
libflatsurf - 3.13.0
Added:
Added
EquivalenceandEquivalenceClassto quickly compare whether two surfaces are equal with respect to a certain notion of equality, e.g., modulo a relabeling of edges, modulo a linear transformation, …Added
FlatTriangulation::relabel()to create a copy of the surface with permutated half edge labels.
Deprecated:
- Deprecated
FlatTriangulation::isomorphism(). For most purposes,Equivalence::isomorphisms()andEquivalenceClassare much faster and easier to use. Theisomorphismcan still be useful when considering non-triangulated surfaces. This functionality will be added to equivalences at a later point. - Deprecated
Vertex::source(HalfEdge, FlatTriangulationCombinatorial&)andVertex::target(HalfEdge, FlatTriangulationCombinatorial&). The parameter order everywhere else in flatsurf is such that the surface is passed first so prefer to useVertex::suorce(FlatTriangulationCombinatorial&, HalfEdge)andVertex::target(FlatTriangulationCombinatorial&, HalfEdge)instead.
Removed:
- Removed the static library from the conda package that we upload with every commit to the master branch to the flatsurf channel. To our knowledge nobody is using these builds. They can sometimes be useful for debugging because they are built with debug symbols (which is why they are very big.) Providing a static library that nobody should use anyway is using the limited storage on anaconda.org twice as fast so we disable this.
Fixed:
- Fixed compilation on some versions of clang.
- Fixed serialization with cereal 1.3.1+ in the same way we did for e-antic in https://github.com/flatsurf/e-antic/pull/242.
- Fixed some compiler warnings with recent versions of GCC/Clang.
- C++
Published by saraedum over 3 years ago
libflatsurf - 3.12.0
Added:
- Added scalar multiplication of exact vectors with elements of underlying ring.
- Added
Vector::applyMatrix(a, b, c, d)andFlatTriangulation::applyMatrix(a, b, c, d). - Added predicates
FlatTriangulation::inHalfPlane()andFlatTriangulation::inPlane(). - Added various flavours of
FlatTriangulation::sector()to generalize saddle connections factory functions that have been deprecated. - Added
Pointfor points on a flat triangulation. - Added mapping of
Pointunder aDeformation. - Added
FlatTriangulation::angleforPoint. - Added
FlatTriangulationCombinatorics::face(HalfEdge)to get the other half edges of a face without having to manually callpreviousInFace/nextInFace.
Deprecated:
- Deprecated factory functions
SaddleConnection::inHalfPlane(),SaddleConnection::inPlane(),SaddleConnection::alongVertical(),SaddleConnection::clockwise(),SaddleConnection::counterclockwise(). The functionality is now essentially inFlatTriangulation::sector().
Fixed:
- Fixed incorrect channels for binder setup.
- Fixed formatting of the flatsurf zenodo page in case somebody wants to cite flatsurf directly.
Performance:
- Improved performance of tests.
- C++
Published by saraedum almost 4 years ago
libflatsurf - 3.11.3
Fixed:
- Added support for fmt library version 9.
- C++
Published by saraedum almost 4 years ago
libflatsurf - 3.11.2
Fixed:
- Made operators
<=,>,>=,!=ofBoundvisible to Python code. - Prominently link to sage-flatsurf in the README, so people do not try to install libflatsurf to get "flatsurf".
- C++
Published by saraedum almost 4 years ago
libflatsurf - 3.11.1
Performance:
- Remove redundant expensive assertions when Delaunay triangulating.
- C++
Published by saraedum about 4 years ago
libflatsurf - 3.11.0
Added:
- Added
IntervalExchangeTransformation::forget()to drop the information about the underlying surface from an IET.
- C++
Published by saraedum over 4 years ago
libflatsurf - 3.10.1
Fixed:
- Fixed creation of ASV benchmark pages with every push to the master branch. See https://flatsurf.github.io/flatsurf/asv/.
Performance:
- Improved performance of
ContourDecompsoitionconstructor by removing redundant assertion. In flow decompositions that are trivial to compute, this assertion often dominated the overall runtime.
- C++
Published by saraedum over 4 years ago
libflatsurf - 3.10.0
Added:
- Implemented
FlowDecomposition::vertical()which had been declared inflow_decomposition.hppbut was not implemented. (The return value of this is now aVertical<Surface>; same asFlowComponent::vertical().) - Added comparison of vectors in pyflatsurf and implementation of the zero() method
- C++
Published by saraedum over 4 years ago
libflatsurf - 3.9.4
Fixed:
- Fixed elimination of marked points when marked points are collinear.
- C++
Published by saraedum over 4 years ago
libflatsurf - 3.9.3
Fixed:
- Fixed compilation on 64-bit macOS systems.
- C++
Published by saraedum over 4 years ago
libflatsurf - 3.9.2
Added:
- Implemented
Deformation::operator()(const SaddleConnection&)when the underlying deformation comes from a shift.
- C++
Published by saraedum over 4 years ago
libflatsurf - 3.9.1
Fixed:
- Updated dependency of conda package in flatsurf channel to depend on libeantic instead of e-antic (libeantic + pyeantic)
- Updated conda pins for packages in flatsurf channel.
Performance:
- Implemented shortcut equality check of surfaces when they are identical.
- C++
Published by saraedum over 4 years ago
libflatsurf - 3.9.0
Added:
- Added
FlowDecomposition::operator==to check whether two flow decompositions are internally coming from identical objects.
Fixed:
- Made missing
FlowComponent::decomposition()andFlowComponent::decomposition() constimplementations available in the shared library.
- C++
Published by saraedum over 4 years ago
libflatsurf - 3.8.0
Added:
- Added a copy constructor, a copy assignment operator, a move constructor, and
a move assignment operator for a
Deformation. - Implemented special handling of a
Tracked<Deformation>so that it can track flips in the tracked triangulation. - Added glue to
flatsurf::Trackedto pyflatsurf.
- C++
Published by saraedum over 4 years ago
libflatsurf - 3.7.0
Added:
Added
SaddleConnection::ccw().Added
SaddleConnectionsIterator::skip()to explicitly backtrack in saddle connection search.Added
Path::tighten().
Fixed:
- Allow build with fmt library version 6, 7, or 8.
- Changed ordering produced by
flatsurf::detail::VectorExact<>::CompareSlopeso it identifies infinite slopes, i.e.,(0, 1)and(0, -1). - A
Pathcan now contain arbitrary turns. Before it was limited to the turn angles that show up in the perimeters of components.
- C++
Published by saraedum over 4 years ago
libflatsurf - 3.6.4
Fixed:
- Fix tracking of collapsed half edges in
FlatTriangulation::operator+().
- C++
Published by saraedum about 5 years ago
libflatsurf - 3.6.3
Fixed:
- Work around a problem in cppyy when copying vectors in Python.
- C++
Published by saraedum about 5 years ago
libflatsurf - 3.6.2
Fixed:
- Fixed stack overflow when eliminating marked points, #263.
Adapt to changes in latest e-antic (changed includes in header files.)
Adapt includes for latest version of boost.
- C++
Published by saraedum about 5 years ago
libflatsurf - 3.6.1
Fixed:
- Fixed stack overflow when eliminating marked points, #263.
- C++
Published by saraedum about 5 years ago
libflatsurf - 3.6.0
Added:
Added actual functionality to
Deformationclass. Before it was just a placeholder except for completely trivial cases.More overloads of
SaddleConnection::inPlaneandSaddleConnection::counterclockwise.More convenience methods to
Pathsuch aspop_front,pop_back, and an implicit constructor fromSaddleConnection.A conversion operator
Tracked<T>::operator T&&()to move out of aTracked<T>.An operator ~ on combinatorial triangulations that "inverts" a triangulation, i.e., it returns its mirror image. This is used, e.g., when applying a linear transformation of negative determinant to a triangulation.
Changed:
SaddleConnection::counterclockwisenow does what the documentation claimed. Before it actually implementedSaddleConnection::inPlane.Shortened printing of saddle connections when they coincide with a half edge, i.e., "2" instead of "(x, y) from 2 to -2".
Deprecated:
- Copy constructor and copy assignment for
Tracked<T>. ManyTdo not support this and the registered callbacks might not support such copying so it is better not to support this use case.
Fixed:
- Added missing implementation of
FlowConnection::boundary(). Make
HalfEdgeMapwork for types that are not printable.Implemented
SaddleConnection::angle. Technically, this is a breaking API change since the return type changed. However, before this method was not implemented at all so nobody could have relied on that.Added missing include in
flatsurf.hppto makeHalfEdgeIntersectionwork in pyflatsurf interface.
- C++
Published by saraedum about 5 years ago
libflatsurf - 3.5.0
Added:
- Added
SaddleConnection::path()that returns a more detailed path of a saddle connection than didSaddleConnection::crossings(). This can be used to properly shade components of a flow decomposition when drawing them.
Deprecated:
- The method
SaddleConnection::crossings()has been superseded bySaddleConnection::path().
- C++
Published by saraedum about 5 years ago
libflatsurf - 3.4.2
Fixed:
- Fixed
SaddleConnection::crossings()which had a bug that would skip some crossings sometimes.
- C++
Published by saraedum about 5 years ago
libflatsurf - 3.4.1
Fixed:
- Treat search bound in saddle connection search correctly. Before the search was aborted as soon as two endpoints of an edge were outside the search radius.
- C++
Published by saraedum over 5 years ago
libflatsurf - 3.4.0
Added:
FlowComponent::height()andFlowComponent::holonomy()
- C++
Published by saraedum over 5 years ago
libflatsurf - 3.3.0
Added:
FlowComponent::bottom,FlowComponent::right,FlowComponent::top,FlowComponent::leftwrapping the corresponding methods ofintervalxt::Component.
- C++
Published by saraedum over 5 years ago
libflatsurf - 3.2.0
Added:
FlowComponent::dynamicalComponent()to access the underlying Interval Exchange Transformation of aFlowComponent.SaddleConnections.slopes()andSaddleConnectionsByLength.slopes()to ignore saddle connections with repeated slopes.FlowDecomposition::decomposeandFlowComponent::decomposecan now have a target set explicitly as a Python callback.
Deprecated:
FlowComponent::intervalExchangeTransformation()as it does not do anything useful in most situations and rather exposes some implementation detail.
Fixed:
- Do not prune decomposition as soon as a component reached the induction limit
in a
FlowDecomposition::decompose(). Such a pruning would only affect the local subtree and not the entire decomposition. There is (and was) no way to stop the entire decomposition once a limit has been reached.
- C++
Published by saraedum over 5 years ago
libflatsurf - 3.1.0
Added:
- Checks and assertions can now be disabled at runtime by setting
LIBFLATSURF_NOCHECKandLIBFLATSURF_NOASSERT.
Performance:
- Speed up assertions during flow decomposition.
- C++
Published by saraedum over 5 years ago
libflatsurf - 3.0.2
Fixed:
- Added pyflatsurf dependency on cppyythonizations
- C++
Published by saraedum over 5 years ago
libflatsurf - 3.0.1
Fixed:
- code coverage reports
- conda packages now use
gmpxxyywhich works with cppyy 1.9.0 - make
Surface(S)work again for surfaces coming from sage-flatsurf (#207)
- C++
Published by saraedum over 5 years ago
libflatsurf - 3.0.0
Added:
- build and deploy for Python 3.8 and Python 3.9 in CI
FlatTriangulation::delaunay(Edge)which returns a classification to distinguish ambiguous from non-ambiguous edges.
Changed:
- use cppasv package to run C++ benchmarks in asv
FlatTriangulation::isomorphismtakes an extra parameterISOMORPHISM::FACESorISOMORPHISM::DELAUNAY_CELLSto only ask for isomorphisms of Delaunay cells, i.e., ignoring ambiguous edges that can be flipped without changing the Delaunay condition.Vertical::selfis now "managed movable". This is a breaking ABI change but not an API change.Printing of
EdgeMap,HalfEdgeMap, andOddHalfEdgeMapis now consistent.Use GitHub Actions for CI which is easier to maintain than our conda-smithy approach.
Replace slimsig with sigslot. The former is not maintained anymore and valgrind was unhappy with it, though it might be us using it incorrectly, it did not really seem like it.
Removed:
Removed deprecated method
FlatTriangulation::delaunay(HalfEdge), useFlatTriangulation::delaunay(Edge)instead.Removed deprecated method
FlatTriangulation::isomorphism(surface, predicate, predicate), useFlatTriangulation::isomorphism(surface, ISOMORPHISM::FACES, predicate, predicate)instead.Removed deprecated method
IntervalExchangeTransformation::makeUniqueLargeEdge(), useIntervalExchangeTransformation::makeUniqueLargeEdgesinstead.Removed deprecated method
Vertical::horizontal(), use-Vertical::vertical().perpendicular()instead.Removed deprecated method
Vertical::perpendicular(vector), useVertical::projectPerpendicular(vector)instead.Removed deprecated method
Vertical::parallel(vector), useVertical::project(vector)instead.Removed deprecated method
Vertical::parallel(HalfEdge), useVertical::ccw(HalfEdge) == CCW::COLLINEARinstead.Removed depraceted method
Vertical::perpendicular(HalfEdge), useVertical::orientation(HalfEdge) == ORIENTATION::ORTHOGONALinstead.
Fixed:
- made benchmark CI more robust by not trying to push for pull requests (which might not produce a consistent history.)
- simplify conda builds by not including the license three times and require make which might not be present on the build system.
- add pins to environment.yml files to pull correct dependencies from conda
- suffix test binaries so that autotoools
include vectordoes not try to include thevectorbash runner
Performance:
- Most methods of
Verticalthat take anEdgeor aHalfEdgeare now cached. This should speed up creatingContourDecompositionin many cases.
- C++
Published by saraedum over 5 years ago
libflatsurf - 2.3.0
Added:
- several methods in
Vertical, mostly replicating existing functionality but with more intuitive naming.
Deprecated:
- several methods in
Vertical, namely some flavours ofparallel,perpendicular, andhorizontal.
Performance:
- speed up saddle connection assertions when collapsing half edges and during length computations
- perform assertions less frequently in
FlowDecomposition::decompose(); these assertions made up one third of the runtime in many triangle instances. - Perfom CCW and Orientation of e-antic vectors with inexact approximations first so we do not have to perform exact multiplications.
- with exact-real vectors, not actually performing that many exact scalar
multiplication in
Verticalmight make a difference in some instances.
- C++
Published by saraedum over 5 years ago
libflatsurf - 2.2.3
Changed:
- add assertions that Arb approximations of finite numbers are always finite; there should not be any issues regarding this but we had some infinities show up in the sampling connections code and this is an extremely cheap check it seems.
Fixed:
- completely override iteration logic in sampling iterator starting from length 0 connections (improves memory consumption when sampling.)
- C++
Published by saraedum over 5 years ago
libflatsurf - 2.2.2
Fixed:
- made sector selection in SaddleConnectionsSample more stable in very thin sectors
- C++
Published by saraedum over 5 years ago
libflatsurf - 2.2.1
Fixed:
- speed up many vector operations in particular those involving exact-real elements.
- enabled codecov reporting on pull requests
Performance:
- sampling saddle connections should be much faster now since we are giving preference to large search sectors when selecting the random sector to continue the search in.
- C++
Published by saraedum over 5 years ago
libflatsurf - 2.2.0
Added:
- implemented
FlatTriangulation::isomorphismto detect isomorphisms of triangulated translation surfaces.
- C++
Published by saraedum over 5 years ago
libflatsurf - 2.1.1
Fixed:
- category collection in changelog
- added sample headers to
flatsurf.hppso they can be used without explicitcppyy.includefrom pyflatsurf - do not report trivial connection coming from a half edge in
SaddleConnectionsSample
- C++
Published by saraedum over 5 years ago
libflatsurf - 2.1.0
Added:
- operator bool for Bound to check whether a Bound is non-zero
SaddleConnectionsSampleto iterate through saddle connections randomlySaddleConnectionsandSaddleConnectionsByLengthnow support alowerBound.
Performance:
- improved vector operations with trivial bounds
Changed:
SaddleConnectionscan now be iterated indefinitely without giving a bound.
Fixed:
- fixed operator bool of
Vector<Arb>
- C++
Published by saraedum over 5 years ago
libflatsurf - 2.0.1
Fixed:
- Require a
libintervalxtwithout known memory leaks - Explicitly clean up FLINT during test runs so we can find memory leaks with gperftools strict/draconian settings.
- C++
Published by saraedum over 5 years ago
libflatsurf - 2.0.0
Changed:
Removed
std::unique_ptrandstd::shared_ptrfrom the public API. This is a breaking change that has changed large parts of the interface, see #214.FlatTriangulation::fromEdgeis now calledfromHalfEdge.FlatTriangulation::slotis now calledslit.FlatTriangulationCombinatorial::slotis now calledslit.FlatTriangulation::fromEdgeApproximationis now calledfromHalfEdgeApproximate.FlatTriangulationCollapsed::fromEdgeis now calledfromHalfEdge.The serialization format (which we do not consider part of the stable API.)
Moved Delaunay triangulation code into
FlatTriangulationas a pair ofdelaunay()method.methods that modify a
FlatTriangulationnow return aDeformation. Currently thatDeformationonly wraps aFlatTriangulationbut eventually we'd like to add information on how say vertices in the deformed surface relate to vertices in the original surface and such.
Removed:
- Some workarounds for bugs in cppyy. These are not necessary with the latest cppyy 1.8.3 anymore.
Fixed:
Fixed printing of some objects from Python.
Implemented missing methods in
SaddleConnectionsByLength.Removed some internal hacks such as the
Lengths::registerhack that was used to get weak pointers right.Simplified
noexceptqualifications on all methods in the public API
- C++
Published by saraedum over 5 years ago
libflatsurf - 1.2.0
Added:
FlatTriangulation::removeMarkedPointswhich will hopefully speed up GL2R Orbit Closure computations
Fixed:
- several
FlowConnectionmethods are much faster now. This speeds upFlowComponent::triangulationsubstantially.
- C++
Published by saraedum over 5 years ago
libflatsurf - 1.1.3
Fixed:
- worked around a segfault during iteration of saddle connections by length from the Python interface due to https://bitbucket.org/wlav/cppyy/issues/271/next-implementation-does-not-respect
- segfault when iterating saddle connections by length from Python (a header was missing in cppyy.hpp)
- colinearity check in FlowDecomposition::parabolic
- C++
Published by saraedum over 5 years ago
libflatsurf - 1.1.2
Added:
- convenience methods
decompose,cylinders,minimalComponents,undeterminedComponentstoFlowDecompositionPython object (so actually, we should have bumped the minor version…)
Changed:
- printing of
FlowDecompositionwhich now shows how the decomposition decomposes into cylinders, minimal, and undetermined components - gmpxxll is now required at build time for the integer interface of intervalxt
Fixed:
algebraic_ringconsistently returns a SageMath ring- Adapted to changes in cppyythonizations 1.0.0
Lengthsformpzandmpqwhich were broken because we returned a reference to a temporary in one place
- C++
Published by saraedum over 5 years ago
libflatsurf - 1.1.1
Fixed:
- compilation with some versions of gcc (missing include)
- a performance problem in
makeUniqueLargeEdgeswhich showed up at times in unfoldings of polygons with exact-real coefficients
- C++
Published by saraedum almost 6 years ago
libflatsurf - 1.1.0
Added:
- Serialization for most basic types, i.e., everything but the FlowDecomposition types
Fixed:
- Chain::operator==
- C++
Published by saraedum almost 6 years ago
libflatsurf - 1.0.3
Added:
- a DOI badge to the README for citations
Fixed:
- some compiler warnings with very recent GCCs
- C++
Published by saraedum almost 6 years ago
libflatsurf - 1.0.2
Added:
- DOIs are now generated by zenodo
- C++
Published by saraedum almost 6 years ago
libflatsurf - 1.0.1
Added:
- safety checks for rever deploy script
Fixed:
- configure now allows version 6 and 7 of fmt since we do not use any version specific features
- C++
Published by saraedum almost 6 years ago
libflatsurf - First Alpha Release
mostly just to drop an offset in build numbers
- C++
Published by saraedum almost 6 years ago