diff options
author | mikhnenko <mikhnenko@yandex-team.com> | 2024-12-18 19:08:08 +0300 |
---|---|---|
committer | mikhnenko <mikhnenko@yandex-team.com> | 2024-12-18 19:29:26 +0300 |
commit | 7ed76959e6c06dbc4c249ce0f3b930463a6b65db (patch) | |
tree | 0e9528cb7261812a5ae7ed177048721eaebf8ed0 /contrib/libs/cxxsupp/libcxx/include/__numeric | |
parent | 4c8e7f015711b5175d63e1a87cbd40c49ce7aa70 (diff) | |
download | ydb-7ed76959e6c06dbc4c249ce0f3b930463a6b65db.tar.gz |
libc++: Run clang-format from upstream and update to 9783f28cbb155e4a8d49c12e1c60ce14dcfaf0c7
commit_hash:ca4954fe054e5a7190ad11ab71bfc7ca0965bca2
Diffstat (limited to 'contrib/libs/cxxsupp/libcxx/include/__numeric')
13 files changed, 192 insertions, 244 deletions
diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/accumulate.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/accumulate.h index 1ab6c4b616..fedc1c46df 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/accumulate.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/accumulate.h @@ -23,31 +23,27 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD template <class _InputIterator, class _Tp> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_Tp -accumulate(_InputIterator __first, _InputIterator __last, _Tp __init) -{ - for (; __first != __last; ++__first) +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp +accumulate(_InputIterator __first, _InputIterator __last, _Tp __init) { + for (; __first != __last; ++__first) #if _LIBCPP_STD_VER >= 20 - __init = std::move(__init) + *__first; + __init = std::move(__init) + *__first; #else - __init = __init + *__first; + __init = __init + *__first; #endif - return __init; + return __init; } template <class _InputIterator, class _Tp, class _BinaryOperation> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_Tp -accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOperation __binary_op) -{ - for (; __first != __last; ++__first) +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp +accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOperation __binary_op) { + for (; __first != __last; ++__first) #if _LIBCPP_STD_VER >= 20 - __init = __binary_op(std::move(__init), *__first); + __init = __binary_op(std::move(__init), *__first); #else - __init = __binary_op(__init, *__first); + __init = __binary_op(__init, *__first); #endif - return __init; + return __init; } _LIBCPP_END_NAMESPACE_STD diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/adjacent_difference.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/adjacent_difference.h index 31ffe9c04a..62b53342d9 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/adjacent_difference.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/adjacent_difference.h @@ -24,50 +24,41 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD template <class _InputIterator, class _OutputIterator> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result) -{ - if (__first != __last) - { - typename iterator_traits<_InputIterator>::value_type __acc(*__first); - *__result = __acc; - for (++__first, (void) ++__result; __first != __last; ++__first, (void) ++__result) - { - typename iterator_traits<_InputIterator>::value_type __val(*__first); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { + if (__first != __last) { + typename iterator_traits<_InputIterator>::value_type __acc(*__first); + *__result = __acc; + for (++__first, (void)++__result; __first != __last; ++__first, (void)++__result) { + typename iterator_traits<_InputIterator>::value_type __val(*__first); #if _LIBCPP_STD_VER >= 20 - *__result = __val - std::move(__acc); + *__result = __val - std::move(__acc); #else - *__result = __val - __acc; + *__result = __val - __acc; #endif - __acc = std::move(__val); - } + __acc = std::move(__val); } - return __result; + } + return __result; } template <class _InputIterator, class _OutputIterator, class _BinaryOperation> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result, - _BinaryOperation __binary_op) -{ - if (__first != __last) - { - typename iterator_traits<_InputIterator>::value_type __acc(*__first); - *__result = __acc; - for (++__first, (void) ++__result; __first != __last; ++__first, (void) ++__result) - { - typename iterator_traits<_InputIterator>::value_type __val(*__first); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator adjacent_difference( + _InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryOperation __binary_op) { + if (__first != __last) { + typename iterator_traits<_InputIterator>::value_type __acc(*__first); + *__result = __acc; + for (++__first, (void)++__result; __first != __last; ++__first, (void)++__result) { + typename iterator_traits<_InputIterator>::value_type __val(*__first); #if _LIBCPP_STD_VER >= 20 - *__result = __binary_op(__val, std::move(__acc)); + *__result = __binary_op(__val, std::move(__acc)); #else - *__result = __binary_op(__val, __acc); + *__result = __binary_op(__val, __acc); #endif - __acc = std::move(__val); - } + __acc = std::move(__val); } - return __result; + } + return __result; } _LIBCPP_END_NAMESPACE_STD diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/exclusive_scan.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/exclusive_scan.h index 8b4a5c820d..af85b477df 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/exclusive_scan.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/exclusive_scan.h @@ -37,7 +37,7 @@ exclusive_scan(_InputIterator __first, _InputIterator __last, _OutputIterator __ if (__first == __last) break; __init = std::move(__tmp); - __tmp = __b(__init, *__first); + __tmp = __b(__init, *__first); } } return __result; diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/gcd_lcm.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/gcd_lcm.h index 693be704af..3e9c244f25 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/gcd_lcm.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/gcd_lcm.h @@ -30,65 +30,55 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 17 -template <typename _Result, typename _Source, bool _IsSigned = is_signed<_Source>::value> struct __ct_abs; +template <typename _Result, typename _Source, bool _IsSigned = is_signed<_Source>::value> +struct __ct_abs; template <typename _Result, typename _Source> struct __ct_abs<_Result, _Source, true> { - _LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI - _Result operator()(_Source __t) const noexcept - { - if (__t >= 0) return __t; - if (__t == numeric_limits<_Source>::min()) return -static_cast<_Result>(__t); - return -__t; - } + _LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI _Result operator()(_Source __t) const noexcept { + if (__t >= 0) + return __t; + if (__t == numeric_limits<_Source>::min()) + return -static_cast<_Result>(__t); + return -__t; + } }; template <typename _Result, typename _Source> struct __ct_abs<_Result, _Source, false> { - _LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI - _Result operator()(_Source __t) const noexcept { return __t; } + _LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI _Result operator()(_Source __t) const noexcept { return __t; } }; - -template<class _Tp> -_LIBCPP_CONSTEXPR _LIBCPP_HIDDEN -_Tp __gcd(_Tp __m, _Tp __n) -{ - static_assert((!is_signed<_Tp>::value), ""); - return __n == 0 ? __m : std::__gcd<_Tp>(__n, __m % __n); +template <class _Tp> +_LIBCPP_CONSTEXPR _LIBCPP_HIDDEN _Tp __gcd(_Tp __m, _Tp __n) { + static_assert((!is_signed<_Tp>::value), ""); + return __n == 0 ? __m : std::__gcd<_Tp>(__n, __m % __n); } -template<class _Tp, class _Up> -_LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI -common_type_t<_Tp,_Up> -gcd(_Tp __m, _Up __n) -{ - static_assert((is_integral<_Tp>::value && is_integral<_Up>::value), "Arguments to gcd must be integer types"); - static_assert((!is_same<__remove_cv_t<_Tp>, bool>::value), "First argument to gcd cannot be bool" ); - static_assert((!is_same<__remove_cv_t<_Up>, bool>::value), "Second argument to gcd cannot be bool" ); - using _Rp = common_type_t<_Tp,_Up>; - using _Wp = make_unsigned_t<_Rp>; - return static_cast<_Rp>(std::__gcd( - static_cast<_Wp>(__ct_abs<_Rp, _Tp>()(__m)), - static_cast<_Wp>(__ct_abs<_Rp, _Up>()(__n)))); +template <class _Tp, class _Up> +_LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI common_type_t<_Tp, _Up> gcd(_Tp __m, _Up __n) { + static_assert((is_integral<_Tp>::value && is_integral<_Up>::value), "Arguments to gcd must be integer types"); + static_assert((!is_same<__remove_cv_t<_Tp>, bool>::value), "First argument to gcd cannot be bool"); + static_assert((!is_same<__remove_cv_t<_Up>, bool>::value), "Second argument to gcd cannot be bool"); + using _Rp = common_type_t<_Tp, _Up>; + using _Wp = make_unsigned_t<_Rp>; + return static_cast<_Rp>( + std::__gcd(static_cast<_Wp>(__ct_abs<_Rp, _Tp>()(__m)), static_cast<_Wp>(__ct_abs<_Rp, _Up>()(__n)))); } -template<class _Tp, class _Up> -_LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI -common_type_t<_Tp,_Up> -lcm(_Tp __m, _Up __n) -{ - static_assert((is_integral<_Tp>::value && is_integral<_Up>::value), "Arguments to lcm must be integer types"); - static_assert((!is_same<__remove_cv_t<_Tp>, bool>::value), "First argument to lcm cannot be bool" ); - static_assert((!is_same<__remove_cv_t<_Up>, bool>::value), "Second argument to lcm cannot be bool" ); - if (__m == 0 || __n == 0) - return 0; - - using _Rp = common_type_t<_Tp,_Up>; - _Rp __val1 = __ct_abs<_Rp, _Tp>()(__m) / std::gcd(__m, __n); - _Rp __val2 = __ct_abs<_Rp, _Up>()(__n); - _LIBCPP_ASSERT_UNCATEGORIZED((numeric_limits<_Rp>::max() / __val1 > __val2), "Overflow in lcm"); - return __val1 * __val2; +template <class _Tp, class _Up> +_LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI common_type_t<_Tp, _Up> lcm(_Tp __m, _Up __n) { + static_assert((is_integral<_Tp>::value && is_integral<_Up>::value), "Arguments to lcm must be integer types"); + static_assert((!is_same<__remove_cv_t<_Tp>, bool>::value), "First argument to lcm cannot be bool"); + static_assert((!is_same<__remove_cv_t<_Up>, bool>::value), "Second argument to lcm cannot be bool"); + if (__m == 0 || __n == 0) + return 0; + + using _Rp = common_type_t<_Tp, _Up>; + _Rp __val1 = __ct_abs<_Rp, _Tp>()(__m) / std::gcd(__m, __n); + _Rp __val2 = __ct_abs<_Rp, _Up>()(__n); + _LIBCPP_ASSERT_UNCATEGORIZED((numeric_limits<_Rp>::max() / __val1 > __val2), "Overflow in lcm"); + return __val1 * __val2; } #endif // _LIBCPP_STD_VER diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/inclusive_scan.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/inclusive_scan.h index 162b9e6884..d714f102d7 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/inclusive_scan.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/inclusive_scan.h @@ -27,7 +27,7 @@ template <class _InputIterator, class _OutputIterator, class _Tp, class _BinaryO _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator inclusive_scan(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryOp __b, _Tp __init) { for (; __first != __last; ++__first, (void)++__result) { - __init = __b(__init, *__first); + __init = __b(__init, *__first); *__result = __init; } return __result; @@ -38,7 +38,7 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator inclusive_scan(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryOp __b) { if (__first != __last) { typename iterator_traits<_InputIterator>::value_type __init = *__first; - *__result++ = __init; + *__result++ = __init; if (++__first != __last) return std::inclusive_scan(__first, __last, __result, __b, __init); } @@ -47,9 +47,8 @@ inclusive_scan(_InputIterator __first, _InputIterator __last, _OutputIterator __ } template <class _InputIterator, class _OutputIterator> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator inclusive_scan(_InputIterator __first, - _InputIterator __last, - _OutputIterator __result) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +inclusive_scan(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { return std::inclusive_scan(__first, __last, __result, std::plus<>()); } diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/inner_product.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/inner_product.h index 48f2ea3489..0deab3d421 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/inner_product.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/inner_product.h @@ -23,32 +23,32 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD template <class _InputIterator1, class _InputIterator2, class _Tp> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_Tp -inner_product(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _Tp __init) -{ - for (; __first1 != __last1; ++__first1, (void) ++__first2) +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp +inner_product(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _Tp __init) { + for (; __first1 != __last1; ++__first1, (void)++__first2) #if _LIBCPP_STD_VER >= 20 - __init = std::move(__init) + *__first1 * *__first2; + __init = std::move(__init) + *__first1 * *__first2; #else - __init = __init + *__first1 * *__first2; + __init = __init + *__first1 * *__first2; #endif - return __init; + return __init; } template <class _InputIterator1, class _InputIterator2, class _Tp, class _BinaryOperation1, class _BinaryOperation2> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_Tp -inner_product(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, - _Tp __init, _BinaryOperation1 __binary_op1, _BinaryOperation2 __binary_op2) -{ - for (; __first1 != __last1; ++__first1, (void) ++__first2) +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp inner_product( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _Tp __init, + _BinaryOperation1 __binary_op1, + _BinaryOperation2 __binary_op2) { + for (; __first1 != __last1; ++__first1, (void)++__first2) #if _LIBCPP_STD_VER >= 20 - __init = __binary_op1(std::move(__init), __binary_op2(*__first1, *__first2)); + __init = __binary_op1(std::move(__init), __binary_op2(*__first1, *__first2)); #else - __init = __binary_op1(__init, __binary_op2(*__first1, *__first2)); + __init = __binary_op1(__init, __binary_op2(*__first1, *__first2)); #endif - return __init; + return __init; } _LIBCPP_END_NAMESPACE_STD diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/iota.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/iota.h index 473ca969d8..27bd84e395 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/iota.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/iota.h @@ -19,12 +19,10 @@ _LIBCPP_BEGIN_NAMESPACE_STD template <class _ForwardIterator, class _Tp> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -void -iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value) -{ - for (; __first != __last; ++__first, (void) ++__value) - *__first = __value; +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value) { + for (; __first != __last; ++__first, (void)++__value) + *__first = __value; } _LIBCPP_END_NAMESPACE_STD diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/midpoint.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/midpoint.h index 57f19a35b4..5d715c21d8 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/midpoint.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/midpoint.h @@ -35,50 +35,46 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 20 template <class _Tp> -_LIBCPP_HIDE_FROM_ABI constexpr -enable_if_t<is_integral_v<_Tp> && !is_same_v<bool, _Tp> && !is_null_pointer_v<_Tp>, _Tp> -midpoint(_Tp __a, _Tp __b) noexcept -_LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK -{ - using _Up = make_unsigned_t<_Tp>; - constexpr _Up __bitshift = numeric_limits<_Up>::digits - 1; +_LIBCPP_HIDE_FROM_ABI constexpr enable_if_t<is_integral_v<_Tp> && !is_same_v<bool, _Tp> && !is_null_pointer_v<_Tp>, _Tp> +midpoint(_Tp __a, _Tp __b) noexcept _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK { + using _Up = make_unsigned_t<_Tp>; + constexpr _Up __bitshift = numeric_limits<_Up>::digits - 1; - _Up __diff = _Up(__b) - _Up(__a); - _Up __sign_bit = __b < __a; + _Up __diff = _Up(__b) - _Up(__a); + _Up __sign_bit = __b < __a; - _Up __half_diff = (__diff / 2) + (__sign_bit << __bitshift) + (__sign_bit & __diff); + _Up __half_diff = (__diff / 2) + (__sign_bit << __bitshift) + (__sign_bit & __diff); - return __a + __half_diff; + return __a + __half_diff; } - template <class _Tp, enable_if_t<is_object_v<_Tp> && !is_void_v<_Tp> && (sizeof(_Tp) > 0), int> = 0> -_LIBCPP_HIDE_FROM_ABI constexpr _Tp* midpoint(_Tp* __a, _Tp* __b) noexcept -{ - return __a + std::midpoint(ptrdiff_t(0), __b - __a); +_LIBCPP_HIDE_FROM_ABI constexpr _Tp* midpoint(_Tp* __a, _Tp* __b) noexcept { + return __a + std::midpoint(ptrdiff_t(0), __b - __a); } - template <typename _Tp> _LIBCPP_HIDE_FROM_ABI constexpr int __sign(_Tp __val) { - return (_Tp(0) < __val) - (__val < _Tp(0)); + return (_Tp(0) < __val) - (__val < _Tp(0)); } template <typename _Fp> -_LIBCPP_HIDE_FROM_ABI constexpr _Fp __fp_abs(_Fp __f) { return __f >= 0 ? __f : -__f; } +_LIBCPP_HIDE_FROM_ABI constexpr _Fp __fp_abs(_Fp __f) { + return __f >= 0 ? __f : -__f; +} template <class _Fp> -_LIBCPP_HIDE_FROM_ABI constexpr -enable_if_t<is_floating_point_v<_Fp>, _Fp> -midpoint(_Fp __a, _Fp __b) noexcept -{ - constexpr _Fp __lo = numeric_limits<_Fp>::min()*2; - constexpr _Fp __hi = numeric_limits<_Fp>::max()/2; - return std::__fp_abs(__a) <= __hi && std::__fp_abs(__b) <= __hi ? // typical case: overflow is impossible - (__a + __b)/2 : // always correctly rounded - std::__fp_abs(__a) < __lo ? __a + __b/2 : // not safe to halve a - std::__fp_abs(__b) < __lo ? __a/2 + __b : // not safe to halve b - __a/2 + __b/2; // otherwise correctly rounded +_LIBCPP_HIDE_FROM_ABI constexpr enable_if_t<is_floating_point_v<_Fp>, _Fp> midpoint(_Fp __a, _Fp __b) noexcept { + constexpr _Fp __lo = numeric_limits<_Fp>::min() * 2; + constexpr _Fp __hi = numeric_limits<_Fp>::max() / 2; + return std::__fp_abs(__a) <= __hi && std::__fp_abs(__b) <= __hi + ? // typical case: overflow is impossible + (__a + __b) / 2 + : // always correctly rounded + std::__fp_abs(__a) < __lo ? __a + __b / 2 : // not safe to halve a + std::__fp_abs(__b) < __lo ? __a / 2 + __b + : // not safe to halve b + __a / 2 + __b / 2; // otherwise correctly rounded } #endif // _LIBCPP_STD_VER >= 20 diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/partial_sum.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/partial_sum.h index 49afcbb746..7c3cf7fb20 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/partial_sum.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/partial_sum.h @@ -24,48 +24,39 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD template <class _InputIterator, class _OutputIterator> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -partial_sum(_InputIterator __first, _InputIterator __last, _OutputIterator __result) -{ - if (__first != __last) - { - typename iterator_traits<_InputIterator>::value_type __t(*__first); - *__result = __t; - for (++__first, (void) ++__result; __first != __last; ++__first, (void) ++__result) - { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +partial_sum(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { + if (__first != __last) { + typename iterator_traits<_InputIterator>::value_type __t(*__first); + *__result = __t; + for (++__first, (void)++__result; __first != __last; ++__first, (void)++__result) { #if _LIBCPP_STD_VER >= 20 - __t = std::move(__t) + *__first; + __t = std::move(__t) + *__first; #else - __t = __t + *__first; + __t = __t + *__first; #endif - *__result = __t; - } + *__result = __t; } - return __result; + } + return __result; } template <class _InputIterator, class _OutputIterator, class _BinaryOperation> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -partial_sum(_InputIterator __first, _InputIterator __last, _OutputIterator __result, - _BinaryOperation __binary_op) -{ - if (__first != __last) - { - typename iterator_traits<_InputIterator>::value_type __t(*__first); - *__result = __t; - for (++__first, (void) ++__result; __first != __last; ++__first, (void) ++__result) - { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +partial_sum(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryOperation __binary_op) { + if (__first != __last) { + typename iterator_traits<_InputIterator>::value_type __t(*__first); + *__result = __t; + for (++__first, (void)++__result; __first != __last; ++__first, (void)++__result) { #if _LIBCPP_STD_VER >= 20 - __t = __binary_op(std::move(__t), *__first); + __t = __binary_op(std::move(__t), *__first); #else - __t = __binary_op(__t, *__first); + __t = __binary_op(__t, *__first); #endif - *__result = __t; - } + *__result = __t; } - return __result; + } + return __result; } _LIBCPP_END_NAMESPACE_STD diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/reduce.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/reduce.h index eb53053c26..1aeefce132 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/reduce.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/reduce.h @@ -23,16 +23,16 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 17 template <class _InputIterator, class _Tp, class _BinaryOp> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp reduce(_InputIterator __first, _InputIterator __last, - _Tp __init, _BinaryOp __b) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp +reduce(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOp __b) { for (; __first != __last; ++__first) __init = __b(std::move(__init), *__first); return __init; } template <class _InputIterator, class _Tp> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp reduce(_InputIterator __first, _InputIterator __last, - _Tp __init) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp +reduce(_InputIterator __first, _InputIterator __last, _Tp __init) { return std::reduce(__first, __last, __init, std::plus<>()); } diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_exclusive_scan.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_exclusive_scan.h index b8d7bd2c44..fb88aa52cd 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_exclusive_scan.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_exclusive_scan.h @@ -20,26 +20,19 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 17 -template <class _InputIterator, class _OutputIterator, class _Tp, - class _BinaryOp, class _UnaryOp> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -transform_exclusive_scan(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _Tp __init, - _BinaryOp __b, _UnaryOp __u) -{ - if (__first != __last) - { - _Tp __saved = __init; - do - { - __init = __b(__init, __u(*__first)); - *__result = __saved; - __saved = __init; - ++__result; - } while (++__first != __last); - } - return __result; +template <class _InputIterator, class _OutputIterator, class _Tp, class _BinaryOp, class _UnaryOp> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator transform_exclusive_scan( + _InputIterator __first, _InputIterator __last, _OutputIterator __result, _Tp __init, _BinaryOp __b, _UnaryOp __u) { + if (__first != __last) { + _Tp __saved = __init; + do { + __init = __b(__init, __u(*__first)); + *__result = __saved; + __saved = __init; + ++__result; + } while (++__first != __last); + } + return __result; } #endif // _LIBCPP_STD_VER >= 17 diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_inclusive_scan.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_inclusive_scan.h index e1b818ca58..2eab1a1424 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_inclusive_scan.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_inclusive_scan.h @@ -22,33 +22,27 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 17 template <class _InputIterator, class _OutputIterator, class _Tp, class _BinaryOp, class _UnaryOp> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -transform_inclusive_scan(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _BinaryOp __b, _UnaryOp __u, _Tp __init) -{ - for (; __first != __last; ++__first, (void) ++__result) { - __init = __b(__init, __u(*__first)); - *__result = __init; - } - - return __result; +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator transform_inclusive_scan( + _InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryOp __b, _UnaryOp __u, _Tp __init) { + for (; __first != __last; ++__first, (void)++__result) { + __init = __b(__init, __u(*__first)); + *__result = __init; + } + + return __result; } template <class _InputIterator, class _OutputIterator, class _BinaryOp, class _UnaryOp> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 -_OutputIterator -transform_inclusive_scan(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _BinaryOp __b, _UnaryOp __u) -{ - if (__first != __last) { - typename iterator_traits<_InputIterator>::value_type __init = __u(*__first); - *__result++ = __init; - if (++__first != __last) - return std::transform_inclusive_scan(__first, __last, __result, __b, __u, __init); - } - - return __result; +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator transform_inclusive_scan( + _InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryOp __b, _UnaryOp __u) { + if (__first != __last) { + typename iterator_traits<_InputIterator>::value_type __init = __u(*__first); + *__result++ = __init; + if (++__first != __last) + return std::transform_inclusive_scan(__first, __last, __result, __b, __u, __init); + } + + return __result; } #endif // _LIBCPP_STD_VER >= 17 diff --git a/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_reduce.h b/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_reduce.h index 04d02b6c6a..6c0a81e5e4 100644 --- a/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_reduce.h +++ b/contrib/libs/cxxsupp/libcxx/include/__numeric/transform_reduce.h @@ -22,30 +22,30 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 17 template <class _InputIterator, class _Tp, class _BinaryOp, class _UnaryOp> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp transform_reduce(_InputIterator __first, - _InputIterator __last, _Tp __init, - _BinaryOp __b, _UnaryOp __u) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp +transform_reduce(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOp __b, _UnaryOp __u) { for (; __first != __last; ++__first) __init = __b(std::move(__init), __u(*__first)); return __init; } template <class _InputIterator1, class _InputIterator2, class _Tp, class _BinaryOp1, class _BinaryOp2> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp transform_reduce(_InputIterator1 __first1, - _InputIterator1 __last1, - _InputIterator2 __first2, _Tp __init, - _BinaryOp1 __b1, _BinaryOp2 __b2) { +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp transform_reduce( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _Tp __init, + _BinaryOp1 __b1, + _BinaryOp2 __b2) { for (; __first1 != __last1; ++__first1, (void)++__first2) __init = __b1(std::move(__init), __b2(*__first1, *__first2)); return __init; } template <class _InputIterator1, class _InputIterator2, class _Tp> -_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp transform_reduce(_InputIterator1 __first1, - _InputIterator1 __last1, - _InputIterator2 __first2, _Tp __init) { - return std::transform_reduce(__first1, __last1, __first2, std::move(__init), std::plus<>(), - std::multiplies<>()); +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp +transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _Tp __init) { + return std::transform_reduce(__first1, __last1, __first2, std::move(__init), std::plus<>(), std::multiplies<>()); } #endif |