Recent Releases of libexactreal
libexactreal - 4.0.1
Fixed:
- Added support for
ExactReals(ZZ)when using pyexactreal from SageMath.
Changed:
- Changed the recommended setup for developers to use pixi instead of conda/mamba.
- C++
Published by saraedum about 1 year ago
libexactreal - 4.0.0
There are no API changes in this major release. But there are breaking ABI changes.
Added:
- Added compatibility with FLINT 3. (This is a breaking ABI change. A library built against FLINT 3 is not compatible with a library built against FLINT 2. You can still build against FLINT 2 and such a library should be compatible with the previous version 3.1.0)
Changed:
- Changed how Arb expressions print when used in Python. They now just print as "arithmetic expression" since there was a spurious segfault on macOS that we could not reliably reproduce and make sense of.
- C++
Published by saraedum over 2 years ago
libexactreal - 3.1.0
Added:
- Added
is_square()to the SageMath interface for exact-real elements in some trivial cases.
- C++
Published by saraedum almost 3 years ago
libexactreal - 3.0.1
Removed:
- Removed the deprecated
Element::coefficients<R>(). The implementation was already removed in 3.0.0 but we forgot to delete it from theelement.hppheader.
Fixed:
- Fixed compilation on macOS.
- C++
Published by saraedum over 3 years ago
libexactreal - 3.0.0
This release contains breaking changes (see below.) However, these are mostly ABI changes. So, just recompile your code against this version of exact-real, and everything should work.
Added:
- Added support for Python 3.10. We now test automatically that everything in pyexactreal works in our CI for this version of Python.
- Added arithmetic operators with short and unsigned short operators to the C++ interface.
- Added division operators for
Element<IntegerRing>. An exact division is attempted. An exception is raised if such division is not possible in the integers. - Added explicit implementations of
Element::operator<,Element::operator>, andElement::operator==for basic integer types (this is slightly faster than calling through the long long operators.) - Added a benchmark for squaring of
Element. This is a very common operation, e.g., when computing with the length of a vectorx*x + y*y.
Changed:
- Changed how arithmetic operators are organized in
ELement.hpp. This is a breaking change. Existing code needs to be rebuilt to link against the new symbol names. - Changed
RealNumber::deglex()slightly. Indeterminates are not ordered by their value but by their internal unique id. This is a breaking change.
Removed:
- Removed explicit support for Python 3.6. We do not explicitly test things for Python 3.6 anymore which had reached its end-of-life in 2021.
- Removed automatic promotion of a coefficient to an element, e.g., the implicit conversion of a
renf_elem_classto anElement<NumberField>which should be done explicitly since it can be quite costly. Existing code might have to replacexwithElement<NumberField>(x)in some places to restore the old behavior. (The same holds for the implicit conversion frommpz_classtoElement<IntegerRing>andmpq_classtoElement<RationalField>but these are probably more rare.) - Removed legacy arithmetic from the shared library that were deprecated since version 1.5.0. (There were quite a few other ABI changes, so this should not affect anybody since you'll need to rebuild things anyway.)
- 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 eating up the limited storage on anaconda.org twice as fast so we disable this.
Fixed:
- Fixed
Element::rationalCoefficients(). The returned rationals are now always in canonical form. - 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. We also fix a segfault that could happen when mixing different versions of cereal.
Performance:
- Improved creation of products of real numbers and modules by replacing shared pointer cache keys with integers.
- Improved performance of multiplication of real numbers and elements by keeping more modules and products alive in caches. (Before, when doing
x*xand there had been no reference to a parent of the result anymore, the parent module had to be recreated for every multiplication. Now we always keep the last 1024 such modules alive. This might require a bit of RAM but speeds up some computations substantially.) - Upgrade dependency unique-factory to version 0.1.0.
- C++
Published by saraedum over 3 years ago
libexactreal - 2.3.0
Added:
- Added
Module::one()convenience method; returns a 1 element if one exists in the module.
Fixed:
- Fixed rendering of benchmark results on GitHub Pages.
- Added missing implementation of
Element<NumberField>::Element(const Element<IntegerRing>&)andElement<Numberfield>::Element(const Element<RationalField>&). - Fix comparison of zero elements with real numbers.
Performance:
- Improved performance of explicit bool cast, i.e., non-zero check, for
Element.
- C++
Published by saraedum over 4 years ago
libexactreal - 2.2.1
Fixed:
- Hide
Element::operator/=when it is not actually implemented.
- C++
Published by saraedum over 4 years ago
libexactreal - 2.2.0
Added:
Added
Element::coefficients()andElement::rationalCoefficients()for the deprecatedElement::coefficients<C>().Explicit overloads of
Element::operator*=andElement::operator/=formpz_classandmpq_classsince the old template-based approach is not supported when building on clang with-fvisibility=hidden.
Deprecated:
- Deprecated
Element::coefficients<C>(). The method is not visible when building with clang andfvisibility=hidden,coefficients()andrationalCoefficients()should be used instead.
Fixed:
- Printing of elements when compiling with clang.
- C++
Published by saraedum over 4 years ago
libexactreal - 2.1.0
Changed:
- Renamed
exact-real.hpptolocal.hpp. The old header fileexact-real.hppstill exists. However, it imports the entire exact-real API so in particularlocal.hpp.
Fixed:
- Fixed compilation error on macOS:
'value' is unavailable: introduced in macOS 10.13
- C++
Published by saraedum almost 5 years ago
libexactreal - 2.0.0
Removed:
- Removed the number field constructors that use the old e-antic API (1.0.0-rc.1 to 1.0.0-rc.13.) This is a breaking API & ABI change.
Fixed:
- Adapted to upstream changes in the latest e-antic rc.
- C++
Published by saraedum about 5 years ago
libexactreal - 1.6.1
Fixed:
- fixed serialization of elements in number field modules, i.e., added missing
renfxx_cereal.hheader
- C++
Published by saraedum over 5 years ago
libexactreal - 1.6.0
Added:
- Allow disabling of assertions and checks at runtime with the environment variables
LIBEXACTREAL_NOASSERTandLIBEXACTREAL_NOCHECK.
- C++
Published by saraedum over 5 years ago
libexactreal - 1.5.1
Fixed:
- do not record code coverage for tests themselves
- fixed code coverage reports
- symbol map for version scripts
- C++
Published by saraedum over 5 years ago
libexactreal - 1.5.0
Added:
- assignment operator
exactreal::Arb = mpz_class.
Fixed:
- initialization of
exactreal::Arbfromlong longon non-LP64 systems such as Windows. - remove bogus gmpxxyy dependency from libexactreal package
- C++
Published by saraedum over 5 years ago
libexactreal - 1.4.2
Fixed:
- cache arf conversions to speed up arithmetic (in particular with multiple generators)
- reduced number of symbols exported so that header-only libraries such as cereal can be used with conflicting versions (to some extent)
- C++
Published by saraedum over 5 years ago
libexactreal - 1.4.1
Fixed:
- comparison operators in SageMath 9.2
- C++
Published by saraedum over 5 years ago
libexactreal - 1.4.0
Added:
- make
Arf,IntegerRing,RationalField,NumberFieldhashable
Changed:
- simplified internal factory pattern by ugrading unique-factory
Fixed:
- make codecov work without CI token
- Fixed an incompatibility with cppyy 1.8.3. We now require at least 1.8.3 for Arb/Arf arithmetic to work.
Fixed a memory leak when printing; this leak is not spotted by valgrind since the memory is allocated in a memory pool (we think.) We found that leak with gperftools.
Free flint memory when running tests so gperftools does not get confused by memory pools there.
- C++
Published by saraedum over 5 years ago
libexactreal - 1.3.2
Fixed:
- Adapted to changes in cppyythonizations and in the stable release of e-antic. (This changes the serialization format slightly which we do not consider stable yet anyway.)
- Do not check for gmpxxll in configure. We ship a version for compilation and do not need it at runtime.
- in the SageMath interface, an element that is directly initialized with a zero element from libintervalxt does now remember its containing module.
- C++
Published by saraedum over 5 years ago
libexactreal - 1.3.1
Fixed:
- deserialization of modules over number fields; shared pointers to renf_class was not compared correctly which lead to a module not being identical to a deserialization of a serialization of itself; part of #106.
- some minor C++ coding style such as nullopt instead of {}
- C++
Published by saraedum almost 6 years ago
libexactreal - 1.3.0
Changed:
- compressed output of coefficients in serialization, used to be '{coefficients:[{value0:...}, {value0:...}]}', now that extra layer of "value0" is gone.
- C++
Published by saraedum almost 6 years ago
libexactreal - 1.2.1
Fixed:
- deserialization of multiple elements at the same time; there was a bug that only the first element managed to deserialize its containing module.
- C++
Published by saraedum almost 6 years ago
libexactreal - 1.2.0
Added:
- Element::simplify() to drop unnecessary generators
Changed:
- improved Module::promote(); should be much faster now and also works when the argument is not a supermodule
- speed up Python interface by simplifying for multiplications & divisions
- C++
Published by saraedum almost 6 years ago
libexactreal - 1.1.1
Fixed:
- trivial bug in compositum computation
- C++
Published by saraedum almost 6 years ago
libexactreal - 1.1.0
Added:
- safety checks to rever deploy script
Fixed:
- adapted to changes in e-antic upstream, namely
renf_elem_class::parent()is now never a null pointer since the special handling of rational numbers has been dropped upstream.
- C++
Published by saraedum almost 6 years ago
libexactreal - 1.0.2
Fixed:
- operator ** for SageMath wrapper
- C++
Published by saraedum almost 6 years ago
libexactreal - 1.0.1
Changed:
- release new versions with rever
Fixed:
- expected output in pyexactreal tests due to changed printing in pyeantic
- C++
Published by saraedum almost 6 years ago
libexactreal - Second Alpha Release
mostly to drop the 1000 offset from the build numbers
- C++
Published by saraedum almost 6 years ago