diff options
author | thegeorg <thegeorg@yandex-team.com> | 2022-12-31 10:35:47 +0300 |
---|---|---|
committer | thegeorg <thegeorg@yandex-team.com> | 2022-12-31 10:35:47 +0300 |
commit | 8fd51d45ec75d85ab82699a4ecf4f2fa94c773b4 (patch) | |
tree | 45a0fb7a556066df1032ded43db13ac742e03dfe | |
parent | 0ec27b614f46afcfa62cd3dc7e86bdd44b60f096 (diff) | |
download | ydb-8fd51d45ec75d85ab82699a4ecf4f2fa94c773b4.tar.gz |
Update contrib/restricted/boost/math to 1.81.0
18 files changed, 148 insertions, 111 deletions
diff --git a/contrib/libs/apache/avro/CMakeLists.darwin.txt b/contrib/libs/apache/avro/CMakeLists.darwin.txt index 25f777b612..1a3c44dd73 100644 --- a/contrib/libs/apache/avro/CMakeLists.darwin.txt +++ b/contrib/libs/apache/avro/CMakeLists.darwin.txt @@ -32,6 +32,7 @@ target_link_libraries(libs-apache-avro PUBLIC restricted-boost-crc restricted-boost-format restricted-boost-iostreams + restricted-boost-math ) target_sources(libs-apache-avro PRIVATE ${CMAKE_SOURCE_DIR}/contrib/libs/apache/avro/impl/BinaryDecoder.cc diff --git a/contrib/libs/apache/avro/CMakeLists.linux-aarch64.txt b/contrib/libs/apache/avro/CMakeLists.linux-aarch64.txt index c26b9836bc..7d6a284e05 100644 --- a/contrib/libs/apache/avro/CMakeLists.linux-aarch64.txt +++ b/contrib/libs/apache/avro/CMakeLists.linux-aarch64.txt @@ -33,6 +33,7 @@ target_link_libraries(libs-apache-avro PUBLIC restricted-boost-crc restricted-boost-format restricted-boost-iostreams + restricted-boost-math ) target_sources(libs-apache-avro PRIVATE ${CMAKE_SOURCE_DIR}/contrib/libs/apache/avro/impl/BinaryDecoder.cc diff --git a/contrib/libs/apache/avro/CMakeLists.linux.txt b/contrib/libs/apache/avro/CMakeLists.linux.txt index c26b9836bc..7d6a284e05 100644 --- a/contrib/libs/apache/avro/CMakeLists.linux.txt +++ b/contrib/libs/apache/avro/CMakeLists.linux.txt @@ -33,6 +33,7 @@ target_link_libraries(libs-apache-avro PUBLIC restricted-boost-crc restricted-boost-format restricted-boost-iostreams + restricted-boost-math ) target_sources(libs-apache-avro PRIVATE ${CMAKE_SOURCE_DIR}/contrib/libs/apache/avro/impl/BinaryDecoder.cc diff --git a/contrib/restricted/boost/CMakeLists.linux-aarch64.txt b/contrib/restricted/boost/CMakeLists.linux-aarch64.txt index 00fe96ac40..dce4fe4558 100644 --- a/contrib/restricted/boost/CMakeLists.linux-aarch64.txt +++ b/contrib/restricted/boost/CMakeLists.linux-aarch64.txt @@ -26,6 +26,7 @@ add_subdirectory(coroutine) add_subdirectory(crc) add_subdirectory(date_time) add_subdirectory(detail) +add_subdirectory(dynamic_bitset) add_subdirectory(endian) add_subdirectory(exception) add_subdirectory(filesystem) @@ -41,7 +42,6 @@ add_subdirectory(intrusive) add_subdirectory(io) add_subdirectory(iostreams) add_subdirectory(iterator) -add_subdirectory(lambda) add_subdirectory(lexical_cast) add_subdirectory(locale) add_subdirectory(math) diff --git a/contrib/restricted/boost/lambda/CMakeLists.linux-aarch64.txt b/contrib/restricted/boost/dynamic_bitset/CMakeLists.linux-aarch64.txt index a453ce37ba..ce12d42247 100644 --- a/contrib/restricted/boost/lambda/CMakeLists.linux-aarch64.txt +++ b/contrib/restricted/boost/dynamic_bitset/CMakeLists.linux-aarch64.txt @@ -7,21 +7,19 @@ -add_library(restricted-boost-lambda INTERFACE) -target_include_directories(restricted-boost-lambda INTERFACE - ${CMAKE_SOURCE_DIR}/contrib/restricted/boost/lambda/include +add_library(restricted-boost-dynamic_bitset INTERFACE) +target_include_directories(restricted-boost-dynamic_bitset INTERFACE + ${CMAKE_SOURCE_DIR}/contrib/restricted/boost/dynamic_bitset/include ) -target_link_libraries(restricted-boost-lambda INTERFACE +target_link_libraries(restricted-boost-dynamic_bitset INTERFACE contrib-libs-linux-headers contrib-libs-cxxsupp - restricted-boost-bind + restricted-boost-assert restricted-boost-config + restricted-boost-container_hash restricted-boost-core - restricted-boost-detail - restricted-boost-iterator - restricted-boost-mpl - restricted-boost-preprocessor - restricted-boost-tuple - restricted-boost-type_traits - restricted-boost-utility + restricted-boost-integer + restricted-boost-move + restricted-boost-static_assert + restricted-boost-throw_exception ) diff --git a/contrib/restricted/boost/dynamic_bitset/CMakeLists.txt b/contrib/restricted/boost/dynamic_bitset/CMakeLists.txt index 79468a5d8d..3e0811fb22 100644 --- a/contrib/restricted/boost/dynamic_bitset/CMakeLists.txt +++ b/contrib/restricted/boost/dynamic_bitset/CMakeLists.txt @@ -6,7 +6,9 @@ # original buildsystem will not be accepted. -if (APPLE) +if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND UNIX AND NOT APPLE AND NOT ANDROID) + include(CMakeLists.linux-aarch64.txt) +elseif (APPLE) include(CMakeLists.darwin.txt) elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND UNIX AND NOT APPLE AND NOT ANDROID) include(CMakeLists.linux.txt) diff --git a/contrib/restricted/boost/lambda/CMakeLists.txt b/contrib/restricted/boost/lambda/CMakeLists.txt index 3e0811fb22..79468a5d8d 100644 --- a/contrib/restricted/boost/lambda/CMakeLists.txt +++ b/contrib/restricted/boost/lambda/CMakeLists.txt @@ -6,9 +6,7 @@ # original buildsystem will not be accepted. -if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND UNIX AND NOT APPLE AND NOT ANDROID) - include(CMakeLists.linux-aarch64.txt) -elseif (APPLE) +if (APPLE) include(CMakeLists.darwin.txt) elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND UNIX AND NOT APPLE AND NOT ANDROID) include(CMakeLists.linux.txt) diff --git a/contrib/restricted/boost/math/CMakeLists.darwin.txt b/contrib/restricted/boost/math/CMakeLists.darwin.txt index 29a3448392..a8bd59a90a 100644 --- a/contrib/restricted/boost/math/CMakeLists.darwin.txt +++ b/contrib/restricted/boost/math/CMakeLists.darwin.txt @@ -13,24 +13,14 @@ target_include_directories(restricted-boost-math INTERFACE ) target_link_libraries(restricted-boost-math INTERFACE contrib-libs-cxxsupp - yutil - restricted-boost-array restricted-boost-assert - restricted-boost-atomic restricted-boost-concept_check restricted-boost-config restricted-boost-core - restricted-boost-detail - restricted-boost-fusion restricted-boost-integer - restricted-boost-lambda restricted-boost-lexical_cast - restricted-boost-mpl restricted-boost-predef - restricted-boost-range - restricted-boost-smart_ptr + restricted-boost-random restricted-boost-static_assert restricted-boost-throw_exception - restricted-boost-tuple - restricted-boost-type_traits ) diff --git a/contrib/restricted/boost/math/CMakeLists.linux-aarch64.txt b/contrib/restricted/boost/math/CMakeLists.linux-aarch64.txt index 9e1793883b..eea0a31cae 100644 --- a/contrib/restricted/boost/math/CMakeLists.linux-aarch64.txt +++ b/contrib/restricted/boost/math/CMakeLists.linux-aarch64.txt @@ -14,24 +14,14 @@ target_include_directories(restricted-boost-math INTERFACE target_link_libraries(restricted-boost-math INTERFACE contrib-libs-linux-headers contrib-libs-cxxsupp - yutil - restricted-boost-array restricted-boost-assert - restricted-boost-atomic restricted-boost-concept_check restricted-boost-config restricted-boost-core - restricted-boost-detail - restricted-boost-fusion restricted-boost-integer - restricted-boost-lambda restricted-boost-lexical_cast - restricted-boost-mpl restricted-boost-predef - restricted-boost-range - restricted-boost-smart_ptr + restricted-boost-random restricted-boost-static_assert restricted-boost-throw_exception - restricted-boost-tuple - restricted-boost-type_traits ) diff --git a/contrib/restricted/boost/math/CMakeLists.linux.txt b/contrib/restricted/boost/math/CMakeLists.linux.txt index 9e1793883b..eea0a31cae 100644 --- a/contrib/restricted/boost/math/CMakeLists.linux.txt +++ b/contrib/restricted/boost/math/CMakeLists.linux.txt @@ -14,24 +14,14 @@ target_include_directories(restricted-boost-math INTERFACE target_link_libraries(restricted-boost-math INTERFACE contrib-libs-linux-headers contrib-libs-cxxsupp - yutil - restricted-boost-array restricted-boost-assert - restricted-boost-atomic restricted-boost-concept_check restricted-boost-config restricted-boost-core - restricted-boost-detail - restricted-boost-fusion restricted-boost-integer - restricted-boost-lambda restricted-boost-lexical_cast - restricted-boost-mpl restricted-boost-predef - restricted-boost-range - restricted-boost-smart_ptr + restricted-boost-random restricted-boost-static_assert restricted-boost-throw_exception - restricted-boost-tuple - restricted-boost-type_traits ) diff --git a/contrib/restricted/boost/math/README.md b/contrib/restricted/boost/math/README.md index b9dba9a9a9..cb33c60f30 100644 --- a/contrib/restricted/boost/math/README.md +++ b/contrib/restricted/boost/math/README.md @@ -65,7 +65,7 @@ Quaternion and Octonians are class templates similar to std::complex. The full documentation is available on [boost.org](http://www.boost.org/doc/libs/release/libs/math). -### Standalone Mode (Beta) +### Standalone Mode Defining BOOST_MATH_STANDALONE allows Boost.Math to be used without any Boost dependencies. Some functionality is reduced in this mode. A static_assert message will alert you if a particular feature has been disabled by standalone mode. @@ -120,9 +120,9 @@ You can either run all the tests listed in `Jamfile.v2` or run a single test: The default action for a PR or commit to a PR is for CI to run the full complement of tests. The following can be appended to the end of a commit message to modify behavior: * [ci skip] to skip all tests - * [linux] to test using GCC Versions 5-10 and Clang Versions 5-10 on Ubuntu LTS versions 16.04-20.04. + * [linux] to test using GCC Versions 5-12 and Clang Versions 5-14 on Ubuntu LTS versions 18.04-22.04. * [apple] to test Apple Clang on the latest version of MacOS. - * [windows] to test MSVC-14.0, MSVC-14.2 and mingw on the latest version of Windows. + * [windows] to test MSVC-14.0, MSVC-14.2, MSVC-14.3, CYGWIN, and mingw on the latest version of Windows. * [standalone] to run standalone mode compile tests ### Building documentation ### diff --git a/contrib/restricted/boost/math/include/boost/math/policies/policy.hpp b/contrib/restricted/boost/math/include/boost/math/policies/policy.hpp index ed4f58a7e4..6daebaa64f 100644 --- a/contrib/restricted/boost/math/include/boost/math/policies/policy.hpp +++ b/contrib/restricted/boost/math/include/boost/math/policies/policy.hpp @@ -15,7 +15,7 @@ #include <cstdint> #include <cstddef> -namespace boost{ namespace math{ +namespace boost{ namespace math{ namespace mp = tools::meta_programming; @@ -122,7 +122,7 @@ namespace policies{ static char test(const name<N>* = nullptr); \ static double test(...); \ public: \ - static constexpr bool value = sizeof(test(static_cast<T*>(0))) == sizeof(char); \ + static constexpr bool value = sizeof(test(static_cast<T*>(nullptr))) == sizeof(char); \ }; \ } \ \ @@ -151,7 +151,7 @@ namespace policies{ static char test(const name<N>* = nullptr); \ static double test(...); \ public: \ - static constexpr bool value = sizeof(test(static_cast<T*>(0))) == sizeof(char); \ + static constexpr bool value = sizeof(test(static_cast<T*>(nullptr))) == sizeof(char); \ }; \ } \ \ @@ -255,14 +255,14 @@ char test_is_valid_arg(const default_policy*); char test_is_default_arg(const default_policy*); template <typename T> -class is_valid_policy_imp +class is_valid_policy_imp { public: - static constexpr bool value = sizeof(boost::math::policies::detail::test_is_valid_arg(static_cast<T*>(0))) == sizeof(char); + static constexpr bool value = sizeof(boost::math::policies::detail::test_is_valid_arg(static_cast<T*>(nullptr))) == sizeof(char); }; -template <typename T> -class is_valid_policy +template <typename T> +class is_valid_policy { public: static constexpr bool value = boost::math::policies::detail::is_valid_policy_imp<T>::value; @@ -272,7 +272,7 @@ template <typename T> class is_default_policy_imp { public: - static constexpr bool value = sizeof(boost::math::policies::detail::test_is_default_arg(static_cast<T*>(0))) == sizeof(char); + static constexpr bool value = sizeof(boost::math::policies::detail::test_is_default_arg(static_cast<T*>(nullptr))) == sizeof(char); }; template <typename T> @@ -342,8 +342,8 @@ typedef default_args<BOOST_MATH_PROMOTE_FLOAT_POLICY, BOOST_MATH_PROMOTE_DOUBLE_ // Now define the policy type with enough arguments to handle all // the policies: // -template <typename A1 = default_policy, - typename A2 = default_policy, +template <typename A1 = default_policy, + typename A2 = default_policy, typename A3 = default_policy, typename A4 = default_policy, typename A5 = default_policy, @@ -417,7 +417,7 @@ public: using evaluation_error_type = typename arg_type<mp::mp_quote_trait<is_evaluation_error>, evaluation_error<>>::type; using rounding_error_type = typename arg_type<mp::mp_quote_trait<is_rounding_error>, rounding_error<>>::type; using indeterminate_result_error_type = typename arg_type<mp::mp_quote_trait<is_indeterminate_result_error>, indeterminate_result_error<>>::type; - + // Precision: using precision_type = typename detail::precision<digits10_type, bits_precision_type>::type; @@ -427,7 +427,7 @@ public: // Discrete quantiles: using discrete_quantile_type = typename arg_type<mp::mp_quote_trait<is_discrete_quantile>, discrete_quantile<>>::type; - + // Mathematically undefined properties: using assert_undefined_type = typename arg_type<mp::mp_quote_trait<is_assert_undefined>, assert_undefined<>>::type; @@ -491,9 +491,9 @@ public: using max_root_iterations_type = max_root_iterations<>; }; -template <typename Policy, - typename A1 = default_policy, - typename A2 = default_policy, +template <typename Policy, + typename A1 = default_policy, + typename A2 = default_policy, typename A3 = default_policy, typename A4 = default_policy, typename A5 = default_policy, @@ -583,7 +583,7 @@ private: // Remove all the policies that are the same as the default: using fn = mp::mp_quote_trait<detail::is_default_policy>; using reduced_list = mp::mp_remove_if_q<result_list, fn>; - + // Pad out the list with defaults: using result_type = typename detail::append_N<reduced_list, default_policy, (14UL - mp::mp_size<reduced_list>::value)>::type; @@ -607,9 +607,9 @@ public: // Full specialisation to speed up compilation of the common case: template <> -struct normalise<policy<>, - promote_float<false>, - promote_double<false>, +struct normalise<policy<>, + promote_float<false>, + promote_double<false>, discrete_quantile<>, assert_undefined<>, default_policy, @@ -641,76 +641,76 @@ struct normalise<policy<detail::forwarding_arg1, detail::forwarding_arg2>, }; inline constexpr policy<> make_policy() noexcept -{ return policy<>(); } +{ return {}; } template <class A1> inline constexpr typename normalise<policy<>, A1>::type make_policy(const A1&) noexcept -{ +{ typedef typename normalise<policy<>, A1>::type result_type; - return result_type(); + return result_type(); } template <class A1, class A2> inline constexpr typename normalise<policy<>, A1, A2>::type make_policy(const A1&, const A2&) noexcept -{ +{ typedef typename normalise<policy<>, A1, A2>::type result_type; - return result_type(); + return result_type(); } template <class A1, class A2, class A3> inline constexpr typename normalise<policy<>, A1, A2, A3>::type make_policy(const A1&, const A2&, const A3&) noexcept -{ +{ typedef typename normalise<policy<>, A1, A2, A3>::type result_type; - return result_type(); + return result_type(); } template <class A1, class A2, class A3, class A4> inline constexpr typename normalise<policy<>, A1, A2, A3, A4>::type make_policy(const A1&, const A2&, const A3&, const A4&) noexcept -{ +{ typedef typename normalise<policy<>, A1, A2, A3, A4>::type result_type; - return result_type(); + return result_type(); } template <class A1, class A2, class A3, class A4, class A5> inline constexpr typename normalise<policy<>, A1, A2, A3, A4, A5>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&) noexcept -{ +{ typedef typename normalise<policy<>, A1, A2, A3, A4, A5>::type result_type; - return result_type(); + return result_type(); } template <class A1, class A2, class A3, class A4, class A5, class A6> inline constexpr typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&) noexcept -{ +{ typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type result_type; - return result_type(); + return result_type(); } template <class A1, class A2, class A3, class A4, class A5, class A6, class A7> inline constexpr typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&) noexcept -{ +{ typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7>::type result_type; - return result_type(); + return result_type(); } template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> inline constexpr typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&) noexcept -{ +{ typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8>::type result_type; - return result_type(); + return result_type(); } template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> inline constexpr typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&, const A9&) noexcept -{ +{ typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9>::type result_type; - return result_type(); + return result_type(); } template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10> inline constexpr typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&, const A9&, const A10&) noexcept -{ +{ typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::type result_type; - return result_type(); + return result_type(); } template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11> @@ -753,7 +753,7 @@ struct precision // Possibly unknown precision: precision_type, typename std::conditional< - ((std::numeric_limits<Real>::digits <= precision_type::value) + ((std::numeric_limits<Real>::digits <= precision_type::value) || (Policy::precision_type::value <= 0)), // Default case, full precision for RealType: digits2< std::numeric_limits<Real>::digits>, @@ -899,8 +899,8 @@ inline constexpr T get_epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(T)) noexcept(st namespace detail{ -template <class A1, - class A2, +template <class A1, + class A2, class A3, class A4, class A5, @@ -917,7 +917,7 @@ template <typename P> class is_policy_imp { public: - static constexpr bool value = (sizeof(::boost::math::policies::detail::test_is_policy(static_cast<P*>(0))) == sizeof(char)); + static constexpr bool value = (sizeof(::boost::math::policies::detail::test_is_policy(static_cast<P*>(nullptr))) == sizeof(char)); }; } @@ -948,7 +948,7 @@ struct method_error_check { using domain_error_type = typename Policy::domain_error_type; using type = typename std::conditional< - (domain_error_type::value == throw_on_error) && (domain_error_type::value != user_error), + (domain_error_type::value == throw_on_error), std::false_type, std::true_type>::type; }; @@ -967,7 +967,7 @@ struct is_noexcept_error_policy typedef typename Policy::rounding_error_type t7; typedef typename Policy::indeterminate_result_error_type t8; - static constexpr bool value = + static constexpr bool value = ((t1::value != throw_on_error) && (t1::value != user_error) && (t2::value != throw_on_error) && (t2::value != user_error) && (t3::value != throw_on_error) && (t3::value != user_error) diff --git a/contrib/restricted/boost/math/include/boost/math/special_functions/fpclassify.hpp b/contrib/restricted/boost/math/include/boost/math/special_functions/fpclassify.hpp index 09fcf2924c..47d2a0e795 100644 --- a/contrib/restricted/boost/math/include/boost/math/special_functions/fpclassify.hpp +++ b/contrib/restricted/boost/math/include/boost/math/special_functions/fpclassify.hpp @@ -128,7 +128,7 @@ inline bool is_nan_helper(T, const std::false_type&) { return false; } -#if defined(BOOST_MATH_USE_FLOAT128) +#if defined(BOOST_MATH_USE_FLOAT128) #if defined(BOOST_MATH_HAS_QUADMATH_H) inline bool is_nan_helper(__float128 f, const std::true_type&) { return ::isnanq(f); } inline bool is_nan_helper(__float128 f, const std::false_type&) { return ::isnanq(f); } @@ -279,7 +279,7 @@ inline int fpclassify BOOST_NO_MACRO_EXPAND(T t) typedef typename traits::method method; typedef typename tools::promote_args_permissive<T>::type value_type; #ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - if(std::numeric_limits<T>::is_specialized && detail::is_generic_tag_false(static_cast<method*>(0))) + if(std::numeric_limits<T>::is_specialized && detail::is_generic_tag_false(static_cast<method*>(nullptr))) return detail::fpclassify_imp(static_cast<value_type>(t), detail::generic_tag<true>()); return detail::fpclassify_imp(static_cast<value_type>(t), method()); #else @@ -295,7 +295,7 @@ inline int fpclassify<long double> BOOST_NO_MACRO_EXPAND(long double t) typedef traits::method method; typedef long double value_type; #ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - if(std::numeric_limits<long double>::is_specialized && detail::is_generic_tag_false(static_cast<method*>(0))) + if(std::numeric_limits<long double>::is_specialized && detail::is_generic_tag_false(static_cast<method*>(nullptr))) return detail::fpclassify_imp(static_cast<value_type>(t), detail::generic_tag<true>()); return detail::fpclassify_imp(static_cast<value_type>(t), method()); #else diff --git a/contrib/restricted/boost/math/include/boost/math/tools/config.hpp b/contrib/restricted/boost/math/include/boost/math/tools/config.hpp index 09db298a88..af2c64b4cf 100644 --- a/contrib/restricted/boost/math/include/boost/math/tools/config.hpp +++ b/contrib/restricted/boost/math/include/boost/math/tools/config.hpp @@ -107,6 +107,37 @@ # endif #endif +#if !defined(BOOST_NOINLINE) +# if defined(_MSC_VER) +# define BOOST_NOINLINE __declspec(noinline) +# elif defined(__GNUC__) && __GNUC__ > 3 + // Clang also defines __GNUC__ (as 4) +# if defined(__CUDACC__) + // nvcc doesn't always parse __noinline__, + // see: https://svn.boost.org/trac/boost/ticket/9392 +# define BOOST_NOINLINE __attribute__ ((noinline)) +# elif defined(__HIP__) + // See https://github.com/boostorg/config/issues/392 +# define BOOST_NOINLINE __attribute__ ((noinline)) +# else +# define BOOST_NOINLINE __attribute__ ((__noinline__)) +# endif +# else +# define BOOST_NOINLINE +# endif +#endif + +#if !defined(BOOST_FORCEINLINE) +# if defined(_MSC_VER) +# define BOOST_FORCEINLINE __forceinline +# elif defined(__GNUC__) && __GNUC__ > 3 + // Clang also defines __GNUC__ (as 4) +# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__)) +# else +# define BOOST_FORCEINLINE inline +# endif +#endif + #endif // BOOST_MATH_STANDALONE // Support compilers with P0024R2 implemented without linking TBB @@ -115,6 +146,23 @@ # define BOOST_MATH_EXEC_COMPATIBLE #endif +// Attributes from C++14 and newer +#ifdef __has_cpp_attribute + +// C++17 +#if (__cplusplus >= 201703L || _MSVC_LANG >= 201703L) +# if __has_cpp_attribute(maybe_unused) +# define BOOST_MATH_MAYBE_UNUSED [[maybe_unused]] +# endif +#endif + +#endif + +// If attributes are not defined make sure we don't have compiler errors +#ifndef BOOST_MATH_MAYBE_UNUSED +# define BOOST_MATH_MAYBE_UNUSED +#endif + #include <algorithm> // for min and max #include <limits> #include <cmath> diff --git a/contrib/restricted/boost/math/include/boost/math/tools/promotion.hpp b/contrib/restricted/boost/math/include/boost/math/tools/promotion.hpp index 3e51768e6b..72a0755a16 100644 --- a/contrib/restricted/boost/math/include/boost/math/tools/promotion.hpp +++ b/contrib/restricted/boost/math/include/boost/math/tools/promotion.hpp @@ -63,6 +63,9 @@ namespace boost template <> struct promote_arg<long double> { using type = long double; }; template <> struct promote_arg<int> { using type = double; }; + template <typename T> + using promote_arg_t = typename promote_arg<T>::type; + template <class T1, class T2> struct promote_args_2 { // Promote, if necessary, & pick the wider of the two floating-point types. @@ -108,6 +111,9 @@ namespace boost template <> struct promote_args_2<double, long double> { using type = long double; }; template <> struct promote_args_2<long double, double> { using type = long double; }; + template <typename T, typename U> + using promote_args_2_t = typename promote_args_2<T, U>::type; + template <class T1, class T2=float, class T3=float, class T4=float, class T5=float, class T6=float> struct promote_args { @@ -135,6 +141,9 @@ namespace boost #endif }; + template <class T1, class T2=float, class T3=float, class T4=float, class T5=float, class T6=float> + using promote_args_t = typename promote_args<T1, T2, T3, T4, T5, T6>::type; + // // This struct is the same as above, but has no static assert on long double usage, // it should be used only on functions that can be implemented for long double @@ -160,6 +169,9 @@ namespace boost >::type; }; + template <class T1, class T2=float, class T3=float, class T4=float, class T5=float, class T6=float> + using promote_args_permissive_t = typename promote_args_permissive<T1, T2, T3, T4, T5, T6>::type; + } // namespace tools } // namespace math } // namespace boost diff --git a/contrib/restricted/boost/random/CMakeLists.darwin.txt b/contrib/restricted/boost/random/CMakeLists.darwin.txt index ef236327eb..ef23430088 100644 --- a/contrib/restricted/boost/random/CMakeLists.darwin.txt +++ b/contrib/restricted/boost/random/CMakeLists.darwin.txt @@ -8,19 +8,21 @@ add_library(restricted-boost-random) +target_compile_options(restricted-boost-random PRIVATE + -Wno-everything +) target_include_directories(restricted-boost-random PUBLIC ${CMAKE_SOURCE_DIR}/contrib/restricted/boost/random/include ) target_link_libraries(restricted-boost-random PUBLIC contrib-libs-cxxsupp - yutil + restricted-boost-array restricted-boost-assert restricted-boost-config restricted-boost-core + restricted-boost-dynamic_bitset restricted-boost-integer restricted-boost-io - restricted-boost-math - restricted-boost-mpl restricted-boost-range restricted-boost-static_assert restricted-boost-system diff --git a/contrib/restricted/boost/random/CMakeLists.linux-aarch64.txt b/contrib/restricted/boost/random/CMakeLists.linux-aarch64.txt index 3b387da592..43993d3aaf 100644 --- a/contrib/restricted/boost/random/CMakeLists.linux-aarch64.txt +++ b/contrib/restricted/boost/random/CMakeLists.linux-aarch64.txt @@ -8,20 +8,22 @@ add_library(restricted-boost-random) +target_compile_options(restricted-boost-random PRIVATE + -Wno-everything +) target_include_directories(restricted-boost-random PUBLIC ${CMAKE_SOURCE_DIR}/contrib/restricted/boost/random/include ) target_link_libraries(restricted-boost-random PUBLIC contrib-libs-linux-headers contrib-libs-cxxsupp - yutil + restricted-boost-array restricted-boost-assert restricted-boost-config restricted-boost-core + restricted-boost-dynamic_bitset restricted-boost-integer restricted-boost-io - restricted-boost-math - restricted-boost-mpl restricted-boost-range restricted-boost-static_assert restricted-boost-system diff --git a/contrib/restricted/boost/random/CMakeLists.linux.txt b/contrib/restricted/boost/random/CMakeLists.linux.txt index 3b387da592..43993d3aaf 100644 --- a/contrib/restricted/boost/random/CMakeLists.linux.txt +++ b/contrib/restricted/boost/random/CMakeLists.linux.txt @@ -8,20 +8,22 @@ add_library(restricted-boost-random) +target_compile_options(restricted-boost-random PRIVATE + -Wno-everything +) target_include_directories(restricted-boost-random PUBLIC ${CMAKE_SOURCE_DIR}/contrib/restricted/boost/random/include ) target_link_libraries(restricted-boost-random PUBLIC contrib-libs-linux-headers contrib-libs-cxxsupp - yutil + restricted-boost-array restricted-boost-assert restricted-boost-config restricted-boost-core + restricted-boost-dynamic_bitset restricted-boost-integer restricted-boost-io - restricted-boost-math - restricted-boost-mpl restricted-boost-range restricted-boost-static_assert restricted-boost-system |