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>, and Permutation<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.2

- 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 Equivalence and EquivalenceClass to 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() and EquivalenceClass are much faster and easier to use. The isomorphism can still be useful when considering non-triangulated surfaces. This functionality will be added to equivalences at a later point.
  • Deprecated Vertex::source(HalfEdge, FlatTriangulationCombinatorial&) and Vertex::target(HalfEdge, FlatTriangulationCombinatorial&). The parameter order everywhere else in flatsurf is such that the surface is passed first so prefer to use Vertex::suorce(FlatTriangulationCombinatorial&, HalfEdge) and Vertex::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) and FlatTriangulation::applyMatrix(a, b, c, d).
  • Added predicates FlatTriangulation::inHalfPlane() and FlatTriangulation::inPlane().
  • Added various flavours of FlatTriangulation::sector() to generalize saddle connections factory functions that have been deprecated.
  • Added Point for points on a flat triangulation.
  • Added mapping of Point under a Deformation.
  • Added FlatTriangulation::angle for Point.
  • Added FlatTriangulationCombinatorics::face(HalfEdge) to get the other half edges of a face without having to manually call previousInFace/nextInFace.

Deprecated:

  • Deprecated factory functions SaddleConnection::inHalfPlane(), SaddleConnection::inPlane(), SaddleConnection::alongVertical(), SaddleConnection::clockwise(), SaddleConnection::counterclockwise(). The functionality is now essentially in FlatTriangulation::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 <=, >, >=, != of Bound visible 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 ContourDecompsoition constructor 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 in flow_decomposition.hpp but was not implemented. (The return value of this is now a Vertical<Surface>; same as FlowComponent::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() and FlowComponent::decomposition() const implementations 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::Tracked to 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<>::CompareSlope so it identifies infinite slopes, i.e., (0, 1) and (0, -1).
  • A Path can 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 Deformation class. Before it was just a placeholder except for completely trivial cases.

  • More overloads of SaddleConnection::inPlane and SaddleConnection::counterclockwise.

  • More convenience methods to Path such as pop_front, pop_back, and an implicit constructor from SaddleConnection.

  • A conversion operator Tracked<T>::operator T&&() to move out of a Tracked<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::counterclockwise now does what the documentation claimed. Before it actually implemented SaddleConnection::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>. Many T do 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 HalfEdgeMap work 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.hpp to make HalfEdgeIntersection work 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 did SaddleConnection::crossings(). This can be used to properly shade components of a flow decomposition when drawing them.

Deprecated:

  • The method SaddleConnection::crossings() has been superseded by SaddleConnection::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() and FlowComponent::holonomy()

- C++
Published by saraedum over 5 years ago

libflatsurf - 3.3.0

Added:

  • FlowComponent::bottom, FlowComponent::right, FlowComponent::top, FlowComponent::left wrapping the corresponding methods of intervalxt::Component.

- C++
Published by saraedum over 5 years ago

libflatsurf - 3.2.0

Added:

  • FlowComponent::dynamicalComponent() to access the underlying Interval Exchange Transformation of a FlowComponent.
  • SaddleConnections.slopes() and SaddleConnectionsByLength.slopes() to ignore saddle connections with repeated slopes.
  • FlowDecomposition::decompose and FlowComponent::decompose can 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_NOCHECK and LIBFLATSURF_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 gmpxxyy which 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::isomorphism takes an extra parameter ISOMORPHISM::FACES or ISOMORPHISM::DELAUNAY_CELLS to only ask for isomorphisms of Delaunay cells, i.e., ignoring ambiguous edges that can be flipped without changing the Delaunay condition.
  • Vertical::self is now "managed movable". This is a breaking ABI change but not an API change.

  • Printing of EdgeMap, HalfEdgeMap, and OddHalfEdgeMap is 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), use FlatTriangulation::delaunay(Edge) instead.

  • Removed deprecated method FlatTriangulation::isomorphism(surface, predicate, predicate), use FlatTriangulation::isomorphism(surface, ISOMORPHISM::FACES, predicate, predicate) instead.

  • Removed deprecated method IntervalExchangeTransformation::makeUniqueLargeEdge(), use IntervalExchangeTransformation::makeUniqueLargeEdges instead.

  • Removed deprecated method Vertical::horizontal(), use -Vertical::vertical().perpendicular() instead.

  • Removed deprecated method Vertical::perpendicular(vector), use Vertical::projectPerpendicular(vector) instead.

  • Removed deprecated method Vertical::parallel(vector), use Vertical::project(vector) instead.

  • Removed deprecated method Vertical::parallel(HalfEdge), use Vertical::ccw(HalfEdge) == CCW::COLLINEAR instead.

  • Removed depraceted method Vertical::perpendicular(HalfEdge), use Vertical::orientation(HalfEdge) == ORIENTATION::ORTHOGONAL instead.

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 vector does not try to include the vector bash runner

Performance:

  • Most methods of Vertical that take an Edge or a HalfEdge are now cached. This should speed up creating ContourDecomposition in 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 of parallel, perpendicular, and horizontal.

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 Vertical might 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::isomorphism to 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.hpp so they can be used without explicit cppyy.include from 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
  • SaddleConnectionsSample to iterate through saddle connections randomly
  • SaddleConnections and SaddleConnectionsByLength now support a lowerBound.

Performance:

  • improved vector operations with trivial bounds

Changed:

  • SaddleConnections can 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 libintervalxt without 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_ptr and std::shared_ptr from the public API. This is a breaking change that has changed large parts of the interface, see #214.

  • FlatTriangulation::fromEdge is now called fromHalfEdge.

  • FlatTriangulation::slot is now called slit.

  • FlatTriangulationCombinatorial::slot is now called slit.

  • FlatTriangulation::fromEdgeApproximation is now called fromHalfEdgeApproximate.

  • FlatTriangulationCollapsed::fromEdge is now called fromHalfEdge.

  • The serialization format (which we do not consider part of the stable API.)

  • Moved Delaunay triangulation code into FlatTriangulation as a pair of delaunay() method.

  • methods that modify a FlatTriangulation now return a Deformation. Currently that Deformation only wraps a FlatTriangulation but 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::register hack that was used to get weak pointers right.

  • Simplified noexcept qualifications on all methods in the public API

- C++
Published by saraedum over 5 years ago

libflatsurf - 1.2.0

Added:

  • FlatTriangulation::removeMarkedPoints which will hopefully speed up GL2R Orbit Closure computations

Fixed:

  • several FlowConnection methods are much faster now. This speeds up FlowComponent::triangulation substantially.

- 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, undeterminedComponents to FlowDecomposition Python object (so actually, we should have bumped the minor version…)

Changed:

  • printing of FlowDecomposition which 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_ring consistently returns a SageMath ring
  • Adapted to changes in cppyythonizations 1.0.0
  • Lengths for mpz and mpq which 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 makeUniqueLargeEdges which 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 - 1.0.0

Changed:

  • release with rever

- 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