E.V.E
v2023.02.15
Loading...
Searching...
No Matches
◆
manhattan
auto eve::manhattan =
functor
<manhattan_t>
inline
constexpr
Header file
#include <eve/module/core.hpp>
Callable Signatures
namespace
eve
{
// Regular overloads
constexpr
auto
manhattan
(
value
auto
x,
value
auto
... xs)
noexcept
;
// 1
constexpr
auto
manhattan
(kumi::non_empty_product_type
auto
const
& tup)
noexcept
;
// 2
// Lanes masking
constexpr
auto
manhattan
[
conditional_expr
auto
c](
/*any of the above overloads*/
)
noexcept
;
// 3
constexpr
auto
manhattan
[
logical_value
auto
m](
/*any of the above overloads*/
)
noexcept
;
// 3
// Semantic options
constexpr
auto
manhattan
[saturated](
/*any of the above overloads*/
)
noexcept
;
// 4
constexpr
auto
manhattan
[pedantic](
/*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:132
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::manhattan
constexpr auto manhattan
tuple_callable object computing the manhattan norm ( ) of its arguments.
Definition
manhattan.hpp:88
eve
EVE Main Namespace.
Definition
abi.hpp:18
Parameters
xs ...
:
real
arguments.
tup
: non empty tuple of arguments.
c
:
Conditional expression
masking the operation.
m
:
Logical value
masking the operation.
Return value
The value of the sum of the absolute value of the arguments is returned.
equivalent to the call on the elements of the tuple.
The operation is performed conditionnaly
internally uses
saturated
options.
returns \(\infty\) as soon as one of its parameter is infinite, regardless of possible
Nan
values.
Example
// revision 0
#include <eve/module/core.hpp>
#include <iostream>
#include <iomanip>
int
main()
{
eve::wide
wf0{0.01, 1.01, 2.01, 3.01, -1.01, -2.01, -3.01, -4.01};
eve::wide
wf1{0.01, -4.01, 1.01, -1.01, 2.01, -2.01, 3.01, -3.01};
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 <<
"-> manhattan(wf0, wf1) = "
<<
eve::manhattan
(wf0, wf1) <<
"\n"
;
std::cout <<
"-> manhattan[ignore_last(2)](wf0, wf1) = "
<<
eve::manhattan
[
eve::ignore_last
(2)](wf0, wf1) <<
"\n"
;
std::cout <<
"-> manhattan[wf0 != 0](wf0, wf1) = "
<<
eve::manhattan
[wf0 != 0](wf0, wf1) <<
"\n"
;
std::cout <<
"-> manhattan[pedantic](wf0, wf1) = "
<<
eve::manhattan
[eve::pedantic](wf0, wf1) <<
"\n"
;
std::cout <<
"-> manhattan(wu0, wu1) = "
<<
eve::manhattan
(wu0, wu1) <<
"\n"
;
std::cout <<
"-> manhattan(wi0, wi1) = "
<<
eve::manhattan
(wi0, wi1) <<
"\n"
;
std::cout << std::hexfloat;
std::cout <<
"-> manhattan[lower][strict](wf0, wf1) = "
<<
eve::manhattan
[eve::lower][eve::strict](wf0, wf1) <<
"\n"
;
std::cout <<
"-> manhattan[lower](wf0, wf1) = "
<<
eve::manhattan
[eve::lower](wf0, wf1) <<
"\n"
;
std::cout <<
"-> manhattan(wf0, wf1) = "
<<
eve::manhattan
(wf0, wf1) <<
"\n"
;
std::cout <<
"-> manhattan[upper](wf0, wf1) = "
<<
eve::manhattan
[eve::upper](wf0, wf1) <<
"\n"
;
std::cout <<
"-> manhattan[upper][strict](wf0, wf1) = "
<<
eve::manhattan
[eve::upper][eve::strict](wf0, wf1) <<
"\n"
;
}
eve::ignore_last
Conditional expression ignoring the k last lanes from a eve::simd_value.
Definition
conditional.hpp:332
eve::wide
Wrapper for SIMD registers.
Definition
wide.hpp:70
eve