E.V.E
v2023.02.15
Loading...
Searching...
No Matches
◆
maximum
eve::maximum = functor<maximum_t>
inline
constexpr
Header file
#include <eve/module/core.hpp>
Callable Signatures
namespace
eve
{
// Regular overloads
template
<arithmetic_value T>
element_type_t<T>
maximum
(
T
x
)
requires
(!O::contains(splat))
noexcept
;
// 1
template
<arithmetic_simd_value T>
T
maximum
(
T
x
)
requires
(O::contains(splat))
noexcept
;
// 2
// Lanes masking
auto
maximum
[
conditional_expr
auto
c
](
/* any of the above overloads */
)
noexcept
;
// 3
auto
maximum
[
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::maximum
constexpr auto maximum
Computes the maximal value in a simd vector or valmin if the input is fully masked.
Definition
maximum.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
Parameters
x
:
argument
.
c
:
Conditional expression
masking the operation.
m
:
Logical value
masking the operation.
Return value
The maximal value of all lanes. Scalar values are returned as is.
The maximal value of all lanes splatted across every lane of the 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 <<
"-> maximum(wf0) = "
<<
eve::maximum
(
wf0
) <<
"\n"
;
std::cout <<
"-> maximum[ignore_last(2)](wf0) = "
<<
eve::maximum
[
eve::ignore_last
(2)](
wf0
) <<
"\n"
;
std::cout <<
"-> maximum[wf0 != -2.0f](wf0) = "
<<
eve::maximum
[
wf0
!= -2.0f](
wf0
) <<
"\n"
;
std::cout <<
"-> maximum(wu0) = "
<<
eve::maximum
(
wu0
) <<
"\n"
;
std::cout <<
"-> maximum[ignore_last(2)](wu0) = "
<<
eve::maximum
[
eve::ignore_last
(2)](
wu0
) <<
"\n"
;
std::cout <<
"-> maximum[wu0 != 2u](wu0) = "
<<
eve::maximum
[
wu0
!= 2u](
wu0
) <<
"\n"
;
std::cout <<
"-> maximum(wi0) = "
<<
eve::maximum
(
wi0
) <<
"\n"
;
std::cout <<
"-> maximum[ignore_last(2)](wi0) = "
<<
eve::maximum
[
eve::ignore_last
(2)](
wi0
) <<
"\n"
;
std::cout <<
"-> maximum[wi0 != -2](wi0) = "
<<
eve::maximum
[
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