diff --git a/source/numerics.tex b/source/numerics.tex index 4376e274b3..ad7da88243 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -16532,10 +16532,24 @@ template>> using @\libmember{vec}{simd}@ = basic_vec>; - // \ref{simd.mask.class}, class template \tcode{basic_mask} - template>> class basic_mask; - template>> - using @\libmember{mask}{simd}@ = basic_mask>; + // \ref{simd.reductions}, \tcode{basic_vec} reductions + template> + constexpr T reduce(const basic_vec&, BinaryOperation = {}); + template> + constexpr T reduce( + const basic_vec& x, const typename basic_vec::mask_type& mask, + BinaryOperation binary_op = {}, type_identity_t identity_element = @\seebelow@); + + template + constexpr T reduce_min(const basic_vec&) noexcept; + template + constexpr T reduce_min(const basic_vec&, + const typename basic_vec::mask_type&) noexcept; + template + constexpr T reduce_max(const basic_vec&) noexcept; + template + constexpr T reduce_max(const basic_vec&, + const typename basic_vec::mask_type&) noexcept; // \ref{simd.loadstore}, \tcode{basic_vec} load and store functions template @@ -16715,46 +16729,6 @@ (basic_mask::size() + ...)>> cat(const basic_mask&...) noexcept; - // \ref{simd.mask.reductions}, \tcode{basic_mask} reductions - template - constexpr bool all_of(const basic_mask&) noexcept; - template - constexpr bool any_of(const basic_mask&) noexcept; - template - constexpr bool none_of(const basic_mask&) noexcept; - template - constexpr @\exposid{simd-size-type}@ reduce_count(const basic_mask&) noexcept; - template - constexpr @\exposid{simd-size-type}@ reduce_min_index(const basic_mask&); - template - constexpr @\exposid{simd-size-type}@ reduce_max_index(const basic_mask&); - - constexpr bool all_of(@\libconcept{same_as}@ auto) noexcept; - constexpr bool any_of(@\libconcept{same_as}@ auto) noexcept; - constexpr bool none_of(@\libconcept{same_as}@ auto) noexcept; - constexpr @\exposid{simd-size-type}@ reduce_count(@\libconcept{same_as}@ auto) noexcept; - constexpr @\exposid{simd-size-type}@ reduce_min_index(@\libconcept{same_as}@ auto); - constexpr @\exposid{simd-size-type}@ reduce_max_index(@\libconcept{same_as}@ auto); - - // \ref{simd.reductions}, \tcode{basic_vec} reductions - template> - constexpr T reduce(const basic_vec&, BinaryOperation = {}); - template> - constexpr T reduce( - const basic_vec& x, const typename basic_vec::mask_type& mask, - BinaryOperation binary_op = {}, type_identity_t identity_element = @\seebelow@); - - template - constexpr T reduce_min(const basic_vec&) noexcept; - template - constexpr T reduce_min(const basic_vec&, - const typename basic_vec::mask_type&) noexcept; - template - constexpr T reduce_max(const basic_vec&) noexcept; - template - constexpr T reduce_max(const basic_vec&, - const typename basic_vec::mask_type&) noexcept; - // \ref{simd.alg}, algorithms template constexpr basic_vec @@ -17021,6 +16995,32 @@ rebind_t, V> polar(const V& x, const V& y = {}); template<@\exposconcept{simd-complex}@ V> constexpr V pow(const V& x, const V& y); + + // \ref{simd.mask.class}, class template \tcode{basic_mask} + template>> class basic_mask; + template>> + using @\libmember{mask}{simd}@ = basic_mask>; + + // \ref{simd.mask.reductions}, \tcode{basic_mask} reductions + template + constexpr bool all_of(const basic_mask&) noexcept; + template + constexpr bool any_of(const basic_mask&) noexcept; + template + constexpr bool none_of(const basic_mask&) noexcept; + template + constexpr @\exposid{simd-size-type}@ reduce_count(const basic_mask&) noexcept; + template + constexpr @\exposid{simd-size-type}@ reduce_min_index(const basic_mask&); + template + constexpr @\exposid{simd-size-type}@ reduce_max_index(const basic_mask&); + + constexpr bool all_of(@\libconcept{same_as}@ auto) noexcept; + constexpr bool any_of(@\libconcept{same_as}@ auto) noexcept; + constexpr bool none_of(@\libconcept{same_as}@ auto) noexcept; + constexpr @\exposid{simd-size-type}@ reduce_count(@\libconcept{same_as}@ auto) noexcept; + constexpr @\exposid{simd-size-type}@ reduce_min_index(@\libconcept{same_as}@ auto); + constexpr @\exposid{simd-size-type}@ reduce_max_index(@\libconcept{same_as}@ auto); } namespace std {