E.V.E
v2023.02.15
Loading...
Searching...
No Matches
◆
min
auto eve::min =
functor
<min_t>
inline
constexpr
Header file
#include <eve/module/core.hpp>
Callable Signatures
namespace
eve
{
// Regular overloads
constexpr
auto
min
(
eve::value
auto
x,
eve::value
auto
... xs)
noexcept
;
// 1
constexpr
auto
min
(eve::non_empty_product_type
auto
const
& tup)
noexcept
;
// 2
// Lanes masking
constexpr
auto
min
[
conditional_expr
auto
c](
/* any of the above overloads */
)
noexcept
;
// 3
constexpr
auto
min
[
logical_value
auto
m](
/* any of the above overloads */
)
noexcept
;
// 3
// Exclusive Semantic options - Only one of those can be set at once
constexpr
auto
min
[
pedantic
](
/* any of the above overloads */
)
noexcept
;
// 4
constexpr
auto
min
[
numeric
](
/* any of the above overloads */
)
noexcept
;
// 5
}
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::value
The concept value<T> is satisfied if and only if T satisfies either eve::scalar_value or eve::simd_va...
Definition
value.hpp:34
eve::min
constexpr auto min
Computes the minimum of its arguments.
Definition
min.hpp:100
eve::numeric
constexpr auto numeric
Makes NaN lose against any definite value.
Definition
core.hpp:89
eve::pedantic
constexpr auto pedantic
Follows the corner cases of the corresponding standard function.
Definition
core.hpp:91
eve
EVE Main Namespace.
Definition
abi.hpp:19
Parameters
x
,
xs...
:
arguments
.
tup
:
non empty tuple
of arguments.
c
:
Conditional expression
masking the operation.
m
:
Logical value
masking the operation.
Return value
the miniimal element is returned. If one of the elements is
NaN
the result is system dependent.
equivalent to the call on the elements of the tuple.
The operation is performed conditionally
Ensures conformity to the standard. That is for two parameters to be equivalent to:
(x < y) ? x : y
and this behaviour is also ensured on n parameters calls as if this scheme is recursively used.
NaNs
are considered greater than anything else.
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
wf1{0.0, -4.0, 1.0, -1.0, 2.0, -2.0, 3.0, -3.0};
eve::wide
wi0{0, 1, 2, 3, -1, -2, -3, -4};
eve::wide
wi1{0, -4, 1, -1, 2, -2, 3, -3};
eve::wide
wu0{0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u};
eve::wide
wu1{7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u};
std::cout <<
"<- wf0 = "
<< wf0 <<
"\n"
;
std::cout <<
"<- wf1 = "
<< wf1 <<
"\n"
;
std::cout <<
"<- wi0 = "
<< wi0 <<
"\n"
;
std::cout <<
"<- wi1 = "
<< wi1 <<
"\n"
;
std::cout <<
"<- wu0 = "
<< wu0 <<
"\n"
;
std::cout <<
"<- wu1 = "
<< wu1 <<
"\n"
;
std::cout <<
"-> min(wf0, wf1) = "
<<
eve::min
(wf0, wf1) <<
"\n"
;
std::cout <<
"-> min[ignore_last(2)](wf0, wf1) = "
<<
eve::min
[
eve::ignore_last
(2)](wf0, wf1) <<
"\n"
;
std::cout <<
"-> min[wf0 != 0](wf0, wf1) = "
<<
eve::min
[wf0 != 0](wf0, wf1) <<
"\n"
;
std::cout <<
"-> min[pedantic](wf0, wf1) = "
<<
eve::min
[
eve::pedantic
](wf0, wf1) <<
"\n"
;
std::cout <<
"-> min[numeric ](wf0, wf1) = "
<<
eve::min
[
eve::numeric
](wf0, wf1) <<
"\n"
;
std::cout <<
"-> min(wu0, wu1) = "
<<
eve::min
(wu0, wu1) <<
"\n"
;
std::cout <<
"-> min(wi0, wi1) = "
<<
eve::min
(wi0, wi1) <<
"\n"
;
std::cout <<
"-> min(0.,1.,2.,3.,-3.,-4.,-6.0) = "
<<
eve::min
(0.0, 1.0, 2.0, 3.0, -3.0, -4., -6.0) <<
"\n"
;
}
eve::ignore_last
Conditional expression ignoring the k last lanes from a eve::simd_value.
Definition
conditional.hpp:361
eve::wide
Wrapper for SIMD registers.
Definition
wide.hpp:94
eve