Changelog

0.8.0 (unreleased)

Changes

  • Various internal cleanups as a consequence of the C++20 migration (#140).

0.7.0 (2021-06-01)

New

  • Add convenience typedefs for the monomial types (#134).

  • The C++ standard requirement is now exported in the CMake config-file package installed by obake (#128).

  • Implement truncated power series (#127).

Changes

  • obake now requires mp++ >= 0.23 (#139).

  • Continue moving code from the headers into the compiled part of the library (#134).

  • BREAKING: obake is now based on C++20, and the minimum CMake version has been bumped up to 3.12. As a consequence, obake now requires GCC >= 9, clang >= 11 and MSVC >= 2019 (#128).

  • obake now depends on the {fmt} library (#125).

  • BREAKING: the implementation of packed_monomial and d_packed_monomial has changed: now when specifying the desired exponent type, only std::(u)int32_t and std::(u)int64_t are supported, and using other integral types (e.g., long, unsigned long long, etc.) may lead to compile-time errors, depending on how std::(u)int32_t and std::(u)int64_t are implemented on the target platform (#125).

  • BREAKING: d_packed_monomial is now specified in terms of the number of exponents to be packed in a single integer rather than the bit width assigned to each exponent (#125).

  • The Kronecker packing code has been rewritten to avoid division and remainder operations, leading to a substantial performance uplift (#125).

  • Adopt a flyweight pattern for the representation of symbol sets in series (#124).

  • When building on Windows with clang-cl, obake now requires at least MSVC 2017. As a result, various limitations/workarounds originating from the need to support the MSVC 2015 standard library have been removed (#122).

Fix

  • Fix build with mp++ >= 0.23 (#139).

  • Fix build with oneTBB (#139).

  • Fix a bug when streaming monomials in tex mode (#132).

0.6.0 (2020-06-12)

Fix

  • Fix a bug in polynomial integration (#119).

  • Implement a workaround for a compiler bug in GCC 7 (#117).

0.5.0 (2020-05-11)

New

  • Parallelise the byte_size() implementation for series types (#115).

  • obake’s header files are now visible in the project files created by the MSVC CMake generators (#112).

Changes

  • Various simplifications and improvements to the benchmarks (#114).

  • Update Catch to the latest version, 2.12.1 (#114).

Fix

  • Fix build failures with GCC 10 in C++20 mode (#116).

  • Fix build issues with recent CMake versions (#111).

0.4.0 (2020-02-12)

New

  • Implement a filtered() primitive to return the filtered copy of a series (#98).

  • obake now respects the CMAKE_CXX_STANDARD variable, if set by the user (#92).

  • Implement explicit truncation based on the partial degree (#91).

Changes

  • Update Catch to the latest version, 2.11.1 (#107).

  • BREAKING: functions and type traits dealing with in-place arithmetic have been renamed (#106).

  • BREAKING: the filter() and truncate_degree() functions now operate in-place (#98).

  • Various improvements to the overflow checking machinery for polynomial exponents (#94).

Fix

  • Fix a bug in the conversion operator for series (#99).

  • Fix an overflow detection bug in the dynamic packed monomial class (#94).

  • Many MSVC fixes/improvements, including support for the latest MSVC builds in C++20 mode with concepts (#50). Many thanks to 7ofNine!

  • Various cleanups and build system fixes/improvements (#103, #100, #99, #98, #97, #96, #93, #92, #90).

0.3 (2019-10-31)

New

  • Implement a caching mechanism for the natural powers of series (#84).

  • Implement safe conversion between rationals and C++ integrals (#84).

Changes

  • Significant speedups (and small fixes) for the series in-place arithmetic operators (#85).

  • Speedups and simplifications in the dynamic packed monomial class (#83).

  • Update Catch to the latest version, 2.10.2 (#83).

  • Various docs/build system updates/improvements (#82, #83).

Fix

  • Fix a division by zero and silence various ubsan warnings originating from TBB (#87).

  • Fix a build issue on MSVC involving Boost (#86).

0.2 (2019-10-27)

New

  • Various performance improvements for polynomial multiplication (#78, #79).

  • Add concepts/type traits for the detection of bidirectional and random access iterators and ranges (#77).

Fix

  • Fix a missing include file (#81).

  • Fix for the compilation of the obake library with MinGW (#80).

  • Remove an unused variable in a lambda capture (#75).

0.1 (2019-10-18)

New

  • Initial release of obake.