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

FreeBSD Manual Pages

  
 
  

home | help
std::experi...al::popcount(3) C++ Standard Libarystd::experi...al::popcount(3)

NAME
       std::experimental::popcount - std::experimental::popcount

Synopsis
	  Defined in header <experimental/simd>
	  template<  class  T, class Abi >			  (parallelism
       TS v2)
	  int popcount(	const simd_mask<T, Abi>& k ) noexcept;

	  Returns the number of	true values in the mask	k.

Parameters
	  k - the simd_mask to apply the reduction to

Return value
	  An int in the	range [0, simd_size_v<T, Abi>).

Example
       // Run this code

	#include <cstddef>
	#include <experimental/simd>
	#include <iostream>
	namespace stdx = std::experimental;

	template<typename Abi>
	int count_zeros(stdx::simd<int,	Abi> v)
	{
	    return stdx::popcount(v == 0); // v	== 0 returns a simd_mask
	}

	void println(auto rem, auto const v)
	{
	    std::cout << rem <<	": ";
	    for	(std::size_t i = 0; i != v.size(); ++i)
		std::cout << v[i] << ' ';
	}

	int main()
	{
	    stdx::simd<int> x{8};
	    println("x", x);
	    std::cout << "  zeros: " <<	count_zeros(x) << '\n';

	    x[3] = x[1]	= false;
	    println("x", x);
	    std::cout << "  zeros: " <<	count_zeros(x) << '\n';
	}

Possible output:
	x: 8 8 8 8   zeros: 0
	x: 8 0 8 0   zeros: 2

http://cppreference.com		  2024.06.10	 std::experi...al::popcount(3)

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

home | help