Namespaces
Variants
Actions

std::experimental::simd<T,Abi>::operator!,~,+,-

From cppreference.com
< cpp‎ | experimental‎ | simd‎ | simd
 
 
Experimental
Filesystem library (filesystem TS)
Library fundamentals (library fundamentals TS)
Library fundamentals 2 (library fundamentals TS v2)
Library fundamentals 3 (library fundamentals TS v3)
Extensions for parallelism (parallelism TS)
Extensions for parallelism 2 (parallelism TS v2)
Extensions for concurrency (concurrency TS)
Extensions for concurrency 2 (concurrency TS v2)
Concepts (concepts TS)
Ranges (ranges TS)
Reflection (reflection TS)
Mathematical special functions (special functions TR)
 
 
 
 
mask_type operator!() const noexcept;
(1) (parallelism TS v2)
simd operator~() const noexcept;
(2) (parallelism TS v2)
simd operator+() const noexcept;
(3) (parallelism TS v2)
simd operator-() const noexcept;
(4) (parallelism TS v2)

Applies the given unary operator on each element of the simd.

1) Returns a simd_mask<T, Abi> where the ith element equals !operator[](i) for all i in the range of [0size() ).
2) Returns a simd where each bit is the inverse of the corresponding bit in *this. This overload participates in overload resolution only if T is an integral type.
3) Returns a copy of itself.
4) Returns a simd where the ith element is initialized to -operator[](i) for all i in the range of [0size() ).

[edit] Example

Run this code
#include <cstddef>
#include <experimental/simd>
#include <iostream>
#include <string_view>
namespace stdx = std::experimental;
 
void println(std::string_view op, const stdx::native_simd_mask<int> x)
{
 std::cout << op << ": ";
 for (std::size_t i = 0; i < x.size(); ++i)
 std::cout << std::boolalpha << x[i] << ' ';
 std::cout << '\n';
}
 
void println(std::string_view op, const stdx::native_simd<int> x)
{
 std::cout << op << ": ";
 for (std::size_t i = 0; i < x.size(); ++i)
 std::cout << x[i] << ' ';
 std::cout << '\n';
}
 
int main()
{
 const stdx::native_simd<int> a([](int i) { return i; });
 
 println(" a", a);
 println(" !a", !a);
 println(" ~a", ~a);
 println("~~a", ~~a);
 println(" +a", +a);
 println(" -a", -a);
 println("+-a", +-a);
}

Possible output:

 a: 0 1 2 3 
 !a: true false false false 
 ~a: -1 -2 -3 -4 
~~a: 0 1 2 3 
 +a: 0 1 2 3 
 -a: 0 -1 -2 -3 
+-a: 0 -1 -2 -3
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/simd/simd/operator_mem_arith2&oldid=159989"

AltStyle によって変換されたページ (->オリジナル) /