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::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 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 conditionally
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:361
eve::wide
Wrapper for SIMD registers.
Definition
wide.hpp:94
eve