E.V.E
v2022.09.01

◆ prev

eve::prev = {}
inlineconstexpr

Computes the nth previous representable element.

Defined in Header

#include <eve/module/core.hpp>

Callable Signatures

namespace eve
{
template< eve::value T, eve::integral_value N >
eve::common_compatible_t<T, U> prev(T x, N n = 1) noexcept;
}
constexpr callable_prev_ prev
Computes the nth previous representable element.
Definition: prev.hpp:110
Definition: all_of.hpp:22

Parameters

Return value

The value of the nth representable value less than x is returned. If n is zero returns x.

Example

#include <eve/module/core.hpp>
#include <eve/wide.hpp>
#include <iostream>
#include <iomanip>
int main()
{
wide_ft pf = {-0.0f, 2.0f, eve::eps(eve::as<float>()), 0.0f};
wide_it pi = {-1, 2, -3, -32};
std::cout << "---- simd" << '\n'
<< "<- pf =" << std::setprecision(12) << pf << '\n'
<< "-> prev(pf) =" << eve::prev(pf) << '\n'
<< "-> pedantic(prev)(pf) =" << eve::pedantic(eve::prev)(pf) << '\n'
<< "<- pi =" << pi << '\n'
<< "-> prev(pi) =" << eve::prev(pi) << '\n';
float xf = 0.0f;
std::int16_t xi = -3;
std::cout << "---- scalar" << '\n'
<< "<- xf = " << xf << '\n'
<< "-> prev(xf, 3) = " << eve::prev(xf, 3) << '\n'
<< "<- xi = " << xi << '\n'
<< "-> prev(xi) = " << eve::prev(xi) << '\n';
return 0;
}
constexpr pedantic_type const pedantic
Higher-order Callable Object imbuing more standard semantic onto other Callable Objects.
Definition: pedantic.hpp:56
constexpr callable_pi_ pi
Callable object computing the constant .
Definition: pi.hpp:49
Lightweight type-wrapper.
Definition: as.hpp:29
Wrapper for SIMD registers.
Definition: wide.hpp:65

Semantic Modifiers

  • Masked Call

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

    Example

    #include <eve/module/core.hpp>
    #include <eve/wide.hpp>
    #include <iostream>
    #include <iomanip>
    int main()
    {
    wide_ft pf = {-10.0f, 2.0f, eve::eps(eve::as<float>()), 0.0f};
    std::cout << "---- simd" << '\n'
    << "<- pf =" << std::setprecision(12) << pf << '\n'
    << "-> prev[pf > 0](pf) =" << eve::prev[pf > 0](pf) << '\n';
    return 0;
    }