E.V.E
v2022.03.00

◆ binarize

eve::binarize = {}
inlineconstexpr

transform logical values to numerical values

binarize(c, v) is semantically equivalent to: if_else(c, v, T(0));

Defined in Header

#include <eve/module/core.hpp>

Callable Signatures

namespace eve
{
template< eve::value C >
C binarize(eve::as_logical<C> c) noexcept; //1
template< eve::value V, eve::logical_value C >
T binarize(C, c, T v = T(1)) noexcept; //2
}
constexpr callable_binarize_ binarize
transform logical values to numerical values
Definition: binarize.hpp:57
Definition: all_of.hpp:22

Parameters

  • c : condition.
  • x : value to return if the condition is met (C(1) if omitted).

Return value

  1. The value of if_else(c, v, T(0)) is returned.
  2. The value of if_else(c, C(1), C(0)) is returned.

Example

#include <eve/module/core.hpp>
#include <eve/wide.hpp>
#include <iostream>
int main()
{
wide_ft pf = { 0.0f, 1.0f, -1.0f, -0.5f};
std::cout
<< "---- simd" << '\n'
<< "<- pf = " << pf << '\n'
<< "-> binarize(pf > 0.0f) = " << eve::binarize(pf> 0.0f) << '\n'
<< "-> binarize(pf > 0.0f, 3) = " << eve::binarize(pf> 0.0f, 3) << '\n';
float xf = -1.0f;
std::cout
<< "---- scalar" << '\n'
<< "<- xf = " << xf << '\n'
<< "-> binarize(true_(eve::as<float>()), xf) = " << eve::binarize(eve::true_(eve::as<float>()), xf) << '\n'
<< "-> binarize(false_(eve::as<float>()), xf) = " << eve::binarize(eve::false_(eve::as<float>()), xf) << '\n' ;
return 0;
}
constexpr callable_false__ false_
Computes the false logical value.
Definition: false.hpp:52
constexpr callable_true__ true_
Computes the logical true_ value.
Definition: true.hpp:52
Lightweight type-wrapper.
Definition: as.hpp:29
Wrapper for SIMD registers.
Definition: wide.hpp:65