E.V.E
v2023.02.15
Loading...
Searching...
No Matches
◆
minmag
auto eve::minmag =
functor
<minmag_t>
inline
constexpr
Header file
#include <eve/module/core.hpp>
Callable Signatures
namespace
eve
{
constexpr
auto
minmag
(
eve::value
auto
x,
eve::value
auto
... xs)
noexcept
;
// 1
constexpr
auto
minmag
(eve::non_empty_product_type
auto
const
& tup)
noexcept
;
// 2
// Lanes masking
constexpr
auto
minmag
[
conditional_expr
auto
c](
/* any of the above overloads */
)
noexcept
;
// 3
constexpr
auto
minmag
[
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
minmag
[pedantic](
/* any of the above overloads */
)
noexcept
;
// 4
constexpr
auto
minmag
[numeric ](
/* any of the above overloads */
)
noexcept
;
// 4
}
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::minmag
constexpr auto minmag
Computes the value for which the minimum of the absolute value of its arguments is obtained.
Definition
minmag.hpp:88
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 element of greatest absolute value is returned. For instance for two elements:
If
|x| < |y|
,
x
is returned.
If
|x| > |y|
,
y
is returned.
Otherwise
min(x, y)
is returned. For n parameters the result is computed as if this scheme was recursively used.
equivalent to the call on the elements of the tuple.
The operation is performed conditionnaly
The behaviour of
eve::maxmag
[o](x, y) (where o is one of these two options) is identical except that if
|x| == |y|
,
min
[o]
is used.
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 <<
"-> minmag(wf0, wf1) = "
<<
eve::minmag
(wf0, wf1) <<
"\n"
;
std::cout <<
"-> minmag[ignore_last(2)](wf0, wf1) = "
<<
eve::minmag
[
eve::ignore_last
(2)](wf0, wf1) <<
"\n"
;
std::cout <<
"-> minmag[wf0 != 0](wf0, wf1) = "
<<
eve::minmag
[wf0 != 0](wf0, wf1) <<
"\n"
;
std::cout <<
"-> minmag[pedantic](wf0, wf1) = "
<<
eve::minmag
[eve::pedantic](wf0, wf1) <<
"\n"
;
std::cout <<
"-> minmag[numeric ](wf0, wf1) = "
<<
eve::minmag
[eve::numeric ](wf0, wf1) <<
"\n"
;
std::cout <<
"-> minmag(wu0, wu1) = "
<<
eve::minmag
(wu0, wu1) <<
"\n"
;
std::cout <<
"-> minmag(wi0, wi1) = "
<<
eve::minmag
(wi0, wi1) <<
"\n"
;
}
eve::ignore_last
Conditional expression ignoring the k last lanes from a eve::simd_value.
Definition
conditional.hpp:353
eve::wide
Wrapper for SIMD registers.
Definition
wide.hpp:94
eve