E.V.E
v2023.02.15
Loading...
Searching...
No Matches
◆
geommean
auto eve::geommean =
functor
<geommean_t>
inline
constexpr
Header file
#include <eve/module/math.hpp>
Callable Signatures
namespace
eve
{
// Regular overloads
constexpr
auto
geommean
(
floating_value
auto
x,
floating_value
auto
... xs)
noexcept
;
// 1
constexpr
auto
geommean
(kumi::non_empty_product_type
auto
const
& tup)
noexcept
;
// 2
// Lanes masking
constexpr
auto
geommean
[
conditional_expr
auto
c](
/*any of the above overloads*/
)
noexcept
;
// 3
constexpr
auto
geommean
[
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::floating_value
The concept floating_value<T> is satisfied if and only if T satisfies eve::value and the element type...
Definition
value.hpp:116
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::geommean
constexpr auto geommean
Callable object computing the geometric mean of the inputs. .
Definition
geommean.hpp:82
eve
EVE Main Namespace.
Definition
abi.hpp:18
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 geometric mean of the inputs is returned
equivalent to the call on the elements of the tuple.
The operation is performed conditionnaly
Example
// revision 1
#include <eve/module/math.hpp>
#include <iostream>
int
main()
{
eve::wide
pf = {3.0, -1.0, -3.0, 10.0};
eve::wide
qf = {4.0, 1.0, 1.0, 15.0};
eve::wide
rf = {-1.0, 2.0, 3.0, 1.5};
kumi::tuple wt{pf, qf, rf};
std::cout <<
"<- pf = "
<< pf <<
"\n"
;
std::cout <<
"<- qf = "
<< qf <<
"\n"
;
std::cout <<
"<- rf = "
<< rf <<
"\n"
;
std::cout <<
"<- wt = "
<< wt <<
"\n"
;
std::cout <<
"-> geommean(pf, qf) = "
<<
eve::geommean
(pf, qf) <<
"\n"
;
std::cout <<
"-> geommean(wt) = "
<<
eve::geommean
(wt) <<
"\n"
;
std::cout <<
"-> geommean[ignore_last(2)](pf, qf)= "
<<
eve::geommean
[
eve::ignore_last
(2)](pf, qf) <<
"\n"
;
std::cout <<
"-> geommean[pf > 0.0](pf, qf) = "
<<
eve::geommean
[pf > 0.0](pf, qf) <<
"\n"
;
std::cout <<
"-> geommean[pf > 0.0](pf, qf, rf) = "
<<
eve::geommean
(pf, qf, rf) <<
"\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:86
eve