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

◆ diff

auto eve::diff = functor<diff_t>
inlineconstexpr

Header file

#include <eve/module/core.hpp>

Callable Signatures

namespace eve
{
// Regular overloads
constexpr auto diff(eve::floating_value auto const& xs...) noexcept; // 1
constexpr auto diff(eve::non_empty_product_type auto const& x) noexcept; // 1
typename<auto N> constexpr auto diff(kumi::index_t<N>, eve::floating_value auto const& xs...) noexcept; // 2
typename<auto N> constexpr auto diff(kumi::index_t<N>,eve::non_empty_product_type auto const& x) noexcept; // 2
}
The concept floating_value<T> is satisfied if and only if T satisfies eve::value and the element type...
Definition value.hpp:116
constexpr auto diff
tuple_callable computing the nth adjacent differences of its arguments.
Definition diff.hpp:94
EVE Main Namespace.
Definition abi.hpp:19

Parameters

  • xs ... : eve::floating values "real" arguments
  • x : kumi::tuple of arguments

Return value

  • 1. Return a tuple containing the elementwise adjacent differences of the parameters or of the elements of the tuple.
  • 2. Return a tuple containing the elementwise Nth adjacent differences of the parameters or of the elements of the tuple.

External references

// revision 0
#include <eve/module/core.hpp>
#include <iostream>
#include <iomanip>
int main()
{
std::cout << std::hexfloat << std::endl;
{
kumi::tuple tt{1.5000e-5, 2.2500, 3.3750, 5.0625, 7.0, 11.0, 17.0, 25.0};
std::cout << " < - tt = " << tt << std::endl;
std::cout << " -> diff(index_t<0>, tt) = " << eve::diff(kumi::index_t<0>{}, tt) << std::endl;
std::cout << " -> diff(tt) = " << eve::diff(tt) << std::endl;
std::cout << " -> diff(index_t<1>, tt) = " << eve::diff(kumi::index_t<1>{}, tt) << std::endl;
std::cout << " -> diff(index_t<2>, tt) = " << eve::diff(kumi::index_t<2>{}, tt) << std::endl;
std::cout << " -> diff(index_t<7>, tt) = " << eve::diff(kumi::index_t<7>{}, tt) << std::endl;
std::cout << " -> diff(index_t<8>, tt) = " << eve::diff(kumi::index_t<8>{}, tt) << std::endl;
std::cout << "float" << 8*sizeof(kumi::get<0>(eve::diff(kumi::index_t<1>{}, tt))) << std::endl;
}
{
kumi::tuple tt{1.5000e-5f, 2.2500f, 3.3750f, 5.0625f, 7.0f, 11.0f, 17.0f, 25.0f};
std::cout << " < - tt = " << tt << std::endl;
std::cout << " -> diff(index_t<0>, tt) = " << eve::diff(kumi::index_t<0>{}, tt) << std::endl;
std::cout << " -> diff(tt) = " << eve::diff(tt) << std::endl;
std::cout << " -> diff(index_t<1>, tt) = " << eve::diff(kumi::index_t<1>{}, tt) << std::endl;
std::cout << " -> diff(index_t<2>, tt) = " << eve::diff(kumi::index_t<2>{}, tt) << std::endl;
std::cout << " -> diff(index_t<7>, tt) = " << eve::diff(kumi::index_t<7>{}, tt) << std::endl;
std::cout << " -> diff(index_t<8>, tt) = " << eve::diff(kumi::index_t<8>{}, tt) << std::endl;
std::cout << "float" << 8*sizeof(kumi::get<0>(eve::diff(kumi::index_t<1>{}, tt))) << std::endl;
}
using eve::widen;
{
kumi::tuple tt{1.5000e-5f, 2.2500f, 3.3750f, 5.0625f, 7.0f, 11.0f, 17.0f, 25.0f};
std::cout << " < - tt = " << tt << std::endl;
std::cout << " -> diff[widen](index_t<0>, tt) = " << eve::diff[widen](kumi::index_t<0>{}, tt) << std::endl;
std::cout << " -> diff[widen](tt) = " << eve::diff[widen](tt) << std::endl;
std::cout << " -> diff[widen](index_t<1>, tt) = " << eve::diff[widen](kumi::index_t<1>{}, tt) << std::endl;
std::cout << " -> diff[widen](index_t<2>, tt) = " << eve::diff[widen](kumi::index_t<2>{}, tt) << std::endl;
std::cout << " -> diff[widen](index_t<7>, tt) = " << eve::diff[widen](kumi::index_t<7>{}, tt) << std::endl;
std::cout << " -> diff[widen](index_t<8>, tt) = " << eve::diff[widen](kumi::index_t<8>{}, tt) << std::endl;
std::cout << "float" << 8*sizeof(kumi::get<0>(eve::diff[widen](kumi::index_t<1>{}, tt))) << std::endl;
}
{
std::cout << " -> diff( ...) = " << eve::diff(1.5000e-5f, 2.2500f, 3.3750f, 5.0625f, 7.0f, 11.0f, 17.0f, 25.0f) << std::endl;
std::cout << " -> diff(index_t<1>, ...) = " << eve::diff(kumi::index_t<1>{}, 1.5000e-5f, 2.2500f, 3.3750f, 5.0625f, 7.0f, 11.0f, 17.0f, 25.0f) << std::endl;
std::cout << " -> diff[widen]( ...) = " << eve::diff[widen](1.5000e-5f, 2.2500f, 3.3750f, 5.0625f, 7.0f, 11.0f, 17.0f, 25.0f) << std::endl;
std::cout << " -> diff[widen](index_t<1>, ...) = " << eve::diff[widen](kumi::index_t<1>{}, 1.5000e-5f, 2.2500f, 3.3750f, 5.0625f, 7.0f, 11.0f, 17.0f, 25.0f) << std::endl;
}
}