E.V.E
v2023.02.15
Loading...
Searching...
No Matches
◆
minimum
eve::minimum = functor<minimum_t>
inline
constexpr
Header file
#include <eve/module/core.hpp>
Callable Signatures
namespace
eve
{
// Regular overload
template
<arithmetic_value T>
element_type_t<T>
minimum
(
T
v)
requires
(!O::contains(splat))
noexcept
;
// 1
template
<arithmetic_simd_value T>
T
minimum
(
T
v)
requires
(O::contains(splat))
noexcept
;
// 2
// Lanes masking
auto
minimum
[
conditional_expr
auto
c
](
/*any of the above overloads*/
)
noexcept
;
// 3
auto
minimum
[
logical_value
auto
m
](
/*any of the above overloads*/
)
noexcept
;
// 3
}
eve::conditional_expr
Specifies that a type is a Conditional Expression.
Definition
conditional.hpp:28
eve::logical_value
The concept logical_value<T> is satisfied if and only if T satisfies eve::value and the element type ...
Definition
value.hpp:134
eve::minimum
constexpr auto minimum
Computes the minimal value in a simd vector or majorant if the input is fully masked.
Definition
minimum.hpp:82
eve::translate_t
typename decltype(detail::as_translated_type(as< T >{}))::type translate_t
Returns the final translated type of T.
Definition
translation.hpp:107
eve
EVE Main Namespace.
Definition
abi.hpp:19
Parameter
v
:
argument
.
c
:
Conditional expression
masking the operation.
m
:
Logical value
masking the operation.
Return value
The minimal value of all lanes. Scalar values are returned as is.
The minimal value of all lanes splatted across every lane of said input.
Same as the above but the masked lanes are ignored during the operation.
Example
// revision 0
#include <eve/module/core.hpp>
#include <iostream>
int
main
()
{
eve::wide
wf0
{0.0, 1.0, 2.0, 3.0, -1.0, -2.0, -3.0, -4.0};
eve::wide
wi0
{0, 1, 2, 3, -1, -2, -3, -4};
eve::wide
wu0
{0
u
, 1u, 2u, 3u, 4u, 5u, 6u, 7u};
std::cout <<
"<- wf0 = "
<<
wf0
<<
"\n"
;
std::cout <<
"<- wi0 = "
<<
wi0
<<
"\n"
;
std::cout <<
"<- wu0 = "
<<
wu0
<<
"\n"
;
std::cout <<
"-> minimum(wf0) = "
<<
eve::minimum
(
wf0
) <<
"\n"
;
std::cout <<
"-> minimum[ignore_last(2)](wf0) = "
<<
eve::minimum
[
eve::ignore_last
(2)](
wf0
) <<
"\n"
;
std::cout <<
"-> minimum[wf0 != -2.0f](wf0) = "
<<
eve::minimum
[
wf0
!= -2.0f](
wf0
) <<
"\n"
;
std::cout <<
"-> minimum(wu0) = "
<<
eve::minimum
(
wu0
) <<
"\n"
;
std::cout <<
"-> minimum[ignore_last(2)](wu0) = "
<<
eve::minimum
[
eve::ignore_last
(2)](
wu0
) <<
"\n"
;
std::cout <<
"-> minimum[wu0 != 2u](wu0) = "
<<
eve::minimum
[
wu0
!= 2u](
wu0
) <<
"\n"
;
std::cout <<
"-> minimum(wi0) = "
<<
eve::minimum
(
wi0
) <<
"\n"
;
std::cout <<
"-> minimum[ignore_last(2)](wi0) = "
<<
eve::minimum
[
eve::ignore_last
(2)](
wi0
) <<
"\n"
;
std::cout <<
"-> minimum[wi0 != -2](wi0) = "
<<
eve::minimum
[
wi0
!= -2](
wi0
) <<
"\n"
;
}
eve::ignore_last
Conditional expression ignoring the k last lanes from a eve::simd_value.
Definition
conditional.hpp:320
eve::wide
Wrapper for SIMD registers.
Definition
wide.hpp:94
eve