E.V.E  0.1-beta

◆ ifnot_else

eve::ifnot_else = {}
inlineconstexpr

Callable object computing the ifnot_else operation.

Required header: #include <eve/function/ifnot_else.hpp>

Members Functions

Member Effect
operator() the ifnot_else operation

template< value T, value U, value V > auto operator()( T x, U y, V z ) const noexcept
requires compatible< U, V >;

Parameters

x, y, z: values

Return value

The call eve::ifnot_else(x, y, z) performs a choice between the elements of y and z according to the truth value of the elements of x. It is merely syntaxic sugar for eve::if_else(x, z, y)


Supported decorators

no decorators are supported

Example

See it live on Compiler Explorer

#include <eve/function/logical.hpp>
#include <eve/wide.hpp>
#include <iostream>
using iT = std::int32_t;
using wide_it = eve::wide<iT, eve::fixed<4>>;
using wide_lt = eve::as_logical_t<wide_it>;
int main()
{
wide_it pi = {3, -2, -10, 0};
wide_it qi = {4, -1, 0, 5};
wide_it si = {2, -3, 0, 4};
wide_lt lsi = {true, false, false, true};
std::cout << "---- simd" << '\n'
<< " <- si = " << si << '\n'
<< " <- lsi = " << lsi << '\n'
<< " <- pi = " << pi << '\n'
<< " <- qi = " << qi << '\n'
<< " -> eve::ifnot_else(si, pi, qi) = " << eve::ifnot_else(si, pi, qi) << '\n'
<< " -> eve::ifnot_else(lsi, pi, qi) = " << eve::ifnot_else(lsi, pi, qi) << '\n';
iT ssi = 3, xi = 3, yi = 4;
eve::logical<iT> lssi = false;
std::cout << "---- scalar" << '\n'
<< " ssi = = " << ssi << '\n'
<< " lssi = = " << lssi << '\n'
<< " xi = = " << xi << '\n'
<< " yi = = " << yi << '\n'
<< " -> eve::ifnot_else(ssi, xi, yi) = " << eve::ifnot_else(ssi, xi, yi) << '\n'
<< " -> eve::ifnot_else(lssi, xi, yi) = " << eve::ifnot_else(lssi, xi, yi) << '\n';
return 0;
}
constexpr callable_pi_ pi
Callable object computing the value.
Definition: pi.hpp:54
constexpr callable_ifnot_else_ ifnot_else
Callable object computing the ifnot_else operation.
Definition: ifnot_else.hpp:61
Wrapper for SIMD compatible logical types.
Definition: logical.hpp:36
Wrapper for SIMD registers.
Definition: wide.hpp:65