E.V.E
v2023.02.15
 
Loading...
Searching...
No Matches

◆ geommean

eve::geommean = functor<geommean_t>
inlineconstexpr

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
}
Specifies that a type is a Conditional Expression.
Definition: conditional.hpp:27
The concept floating_value<T> is satisfied if and only if T satisfies eve::value and the element type...
Definition: value.hpp:95
The concept logical_value<T> is satisfied if and only if T satisfies eve::value and the element type ...
Definition: value.hpp:107
constexpr auto geommean
Callable object computing the geometric mean of the inputs. .
Definition: geommean.hpp:82
EVE Main Namespace.
Definition: abi.hpp:18

Parameters

* `x`, `...xs`: [real](@ref value) arguments.
* `tup`: [non empty tuple](@ref kumi::non_empty_product_type) of arguments.
* `c`: [Conditional expression](@ref conditional_expr) masking the operation.
* `m`: [Logical value](@ref logical) masking the operation.

Return value

  1. The geometric mean of the inputs is returned
  2. equivalent to the call on the elements of the tuple.
  3. 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";
}
Conditional expression ignoring the k last lanes from a eve::simd_value.
Definition: conditional.hpp:304
Wrapper for SIMD registers.
Definition: wide.hpp:71