Since commit 01f3b7d772 most tests started to fail on platforms that use a
"double-double" for long double, like powerpc64le:
../../../boost/math/tools/precision.hpp:148:137: error: expected primary-expression before ‘long’
148 | inline constexpr long double epsilon<long double>(const std::true_type&
BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(long double)) noexcept(long double)
../../../boost/math/tools/precision.hpp:148:137: error: expected ‘)’ before ‘long’
148 | inline constexpr long double epsilon<long double>(const std::true_type&
BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(long double)) noexcept(long double)
../../../boost/math/tools/precision.hpp:148:137: error: expected initializer before ‘long’
148 | inline constexpr long double epsilon<long double>(const std::true_type&
BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(long double)) noexcept(long double)
Fix this by replacing the noexcept expression with the contents of
BOOST_MATH_NOEXCEPT, which was the intention of commit 01f3b7d772.
Fix 16c57be3 "Fixes for compile tests" (make compiler happy, but lose
flag semantics) as well as the original implementation from e3e838da
(obvious intention, but wrong operator).
* Bezier polynomials.
* Bezier polynomials.
* Performance test.
* Implement de Casteljau's algorithm.
* Documentation and cleanup.
* Use thread_local storage to increase performance of interpolation.
* Inspect tool doesn't like asserts or anonymous namespaces.
* Test convex hull property of Bezier polynomial and add float128 tests.
* Allow editing of control points.
* Add .prime member function. Fix bug when scratch space size is larger than control point size. Document alternative implementations found in Bezier and B-spline techniques.
* Submit failing unit test so I don't forget to fix it later
* Add indefinite integral and tests.
* Do not test on gcc < 9 on MingW.
* Interpolate a uniform grid with a bilinear function.
* Typo removal.
* Invalid syntax in Jamfile.
* Do domain verification before computation.
* Fix OOB access on print.
* pimpl the class so it can be shared between threads.
* Add google/benchmark file to measure the performance of the bilinear interpolation.
* Fix up docs.
* Remove non-ASCII characters from print statements. Add a float128 test.
* Improve the documentation of the bilinear uniform class.
* Remove float128 as it doesn't support to_string.
* Don't use decltype(fieldData.size()) as the indexer; that makes MSVC 14.2 choke. Use RandomAccessContainer::size_type.
* Use ADL for to_string for compatibility with multiprecision.
* Improve error message which rows*cols != fieldData.size().
To test over a wider range of values, otherwise precision tails off for middling values of z - 100 < z < 300. Also prints out conditioning on the near-1 or 2 approximations.
Update lanczos.hpp with the new approximations, removed 80-100 digit approximation because it basically doesn't work well.
Modified lanczos.hpp and lgamma_small.hpp to have separate lanczos g values for the near 1 or 2 approximations.
This addresses issues discussed in https://github.com/boostorg/multiprecision/pull/327.