Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::experimental::clamp(3)   C++ Standard Libary  std::experimental::clamp(3)

NAME
       std::experimental::clamp	- std::experimental::clamp

Synopsis
	  Defined in header <experimental/simd>
	  template< class T, class Abi >

	  simd<T,							  Abi>
       (parallelism TS v2)

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

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

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

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

See also
	  clamp	  clamps a value between a pair	of boundary values
	  (C++17) (function template)

http://cppreference.com		  2024.06.10	   std::experimental::clamp(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::experimental::clamp&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help