E.V.E
v2022.03.00

◆ fdim

eve::fdim = {}
inlineconstexpr

Computes the positive difference between the two parameters.

Defined in Header

#include <eve/module/core.hpp>

Callable Signatures

namespace eve
{
template< eve::real_value T, eve::real_value U >
T fdim(T x, U y) noexcept;
}
constexpr callable_fdim_ fdim
Computes the positive difference between the two parameters.
Definition: fdim.hpp:65
Definition: all_of.hpp:22

Parameters

  • x, y : real arguments.

Return value

Returns the elementwise positive difference between x and y:

  • if x>y, x-y is returned,
  • if x<=y, +0 is returned,
  • otherwise a Nan is returned.

Example

#include <eve/module/core.hpp>
#include <eve/wide.hpp>
#include <iostream>
int main()
{
wide_it pf = {0, 1, -1, -eve::valmax(eve::as<float>())};
wide_it qf = {1, -1, 0, eve::valmax(eve::as<float>())};
std::cout << "---- simd" << '\n'
<< "<- pf = " << pf << '\n'
<< "<- qf = " << qf << '\n'
<< "-> fdim(pf, qf) = " << eve::fdim(pf, qf) << '\n'
<< '\n';
float xf = -eve::valmax(eve::as<float>());
float yf = eve::valmax(eve::as<float>());
std::cout << "---- scalar" << '\n'
<< "<- xf = " << xf << '\n'
<< "<- yf = " << yf << '\n'
<< "-> fdim(xf, yf) = " << eve::fdim(xf, yf) << '\n'
<< '\n';
return 0;
}
constexpr callable_valmax_ valmax
Computes the the greatest representable value.
Definition: valmax.hpp:55
Lightweight type-wrapper.
Definition: as.hpp:29
Wrapper for SIMD registers.
Definition: wide.hpp:65

Semantic Modifiers

  • Masked Call

    The call eve::fdim[mask](x) provides a masked version of eve::fdim which is equivalent to if_else (mask, fdim(x), x).

    Example

    #include <eve/module/core.hpp>
    #include <eve/wide.hpp>
    #include <iostream>
    int main()
    {
    wide_it pf = {0, 1, -1, -eve::valmax(eve::as<float>())};
    wide_it qf = {1, -1, 0, eve::valmax(eve::as<float>())};
    std::cout << "---- simd" << '\n'
    << "<- pf = " << pf << '\n'
    << "<- qf = " << qf << '\n'
    << "-> fdim[pf > qf](pf, qf) = " << eve::fdim[pf > qf](pf, qf) << '\n';
    return 0;
    }