E.V.E
v2023.02.15
Loading...
Searching...
No Matches
◆
maxmag
auto eve::maxmag =
functor
<maxmag_t>
inline
constexpr
Header file
#include <eve/module/core.hpp>
Callable Signatures
namespace
eve
{
// Regular overloads
constexpr
auto
maxmag
(
eve::value
auto
x,
eve::value
auto
... xs)
noexcept
;
// 1
constexpr
auto
maxmag
(eve::non_empty_product_type
auto
const
& tup)
noexcept
;
// 2
// Lanes masking
constexpr
auto
maxmag
[
conditional_expr
auto
c](
/* any of the above overloads */
)
noexcept
;
// 3
constexpr
auto
maxmag
[
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
maxmag
[pedantic](
/* any of the above overloads */
)
noexcept
;
// 4
constexpr
auto
maxmag
[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::maxmag
constexpr auto maxmag
Computes the value for which the maximum of the absolute value of its arguments is obtained.
Definition
maxmag.hpp:90
eve
EVE Main Namespace.
Definition
abi.hpp:19
Parameters
x
,
xs...
:
real
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
max(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|
,
max
[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 <<
"-> maxmag(wf0, wf1) = "
<<
eve::maxmag
(wf0, wf1) <<
"\n"
;
std::cout <<
"-> maxmag[ignore_last(2)](wf0, wf1) = "
<<
eve::maxmag
[
eve::ignore_last
(2)](wf0, wf1) <<
"\n"
;
std::cout <<
"-> maxmag[wf0 != 0](wf0, wf1) = "
<<
eve::maxmag
[wf0 != 0](wf0, wf1) <<
"\n"
;
std::cout <<
"-> maxmag[pedantic](wf0, wf1) = "
<<
eve::maxmag
[eve::pedantic](wf0, wf1) <<
"\n"
;
std::cout <<
"-> maxmag[numeric ](wf0, wf1) = "
<<
eve::maxmag
[eve::numeric ](wf0, wf1) <<
"\n"
;
std::cout <<
"-> maxmag(wu0, wu1) = "
<<
eve::maxmag
(wu0, wu1) <<
"\n"
;
std::cout <<
"-> maxmag(wi0, wi1) = "
<<
eve::maxmag
(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