Namespaces
Variants
Actions

std::experimental::clamp

From cppreference.com
< cpp‎ | experimental‎ | 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)
 
 
 
Defined in header <experimental/simd>
template< class T, class Abi >

simd<T, Abi>

clamp( const simd<T, Abi>& v, const simd<T, Abi>& lo, const simd<T, Abi>& hi );
(parallelism TS v2)

[edit] Parameters

v - the elements to clamp
lo, hi - the boundaries to clamp v to

[edit] Return value

The result of element-wise application of std::clamp (v[i], lo[i], hi[i]) for all i ∈ [0size()).

[edit] Example

Run this code
#include <cstddef>
#include <cstdint>
#include <experimental/simd>
#include <iomanip>
#include <iostream>
namespace stdx = std::experimental;
 
void println(auto rem, auto const v)
{
 std::cout << rem << ": ";
 for (std::size_t i = 0; i != v.size(); ++i)
 std::cout << std::setw (4) << v[i] << ' ';
 std::cout << '\n';
}
 
int main()
{
 stdx::fixed_size_simd<int, 8> a{[](int i) {
 static constexpr auto c = {-129, -128, -1, 0, 42, 127, 128, 255};
 return c.begin()[i];
 }};
 println("a", a);
 
 stdx::fixed_size_simd<int, 8> lo1{INT8_MIN };
 stdx::fixed_size_simd<int, 8> hi1{INT8_MAX };
 const auto b = stdx::clamp(a, lo1, hi1);
 println("b", b);
 
 stdx::fixed_size_simd<int, 8> lo2{0};
 stdx::fixed_size_simd<int, 8> hi2{UINT8_MAX };
 const auto c = stdx::clamp(a, lo2, hi2);
 println("c", c);
}

Output:

a: -129 -128 -1 0 42 127 128 255 
b: -128 -128 -1 0 42 127 127 127 
c: 0 0 0 0 42 127 128 255

[edit] See also

(C++17)
clamps a value between a pair of boundary values
(function template) [edit]
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/simd/clamp&oldid=160007"

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