◆ inearbyint()

as_integer_t<Value> boost::simd::inearbyint ( Value const &  x)

This function object computes the integer conversion of the nearbyint of its parameter.

Header <boost/simd/function/inearbyint.hpp>
Note:
This operation is NOT properly saturated. To ensure proper saturation use the decorartor pedantic_
Decorators:
  • pedantic_ if you need a full range correctness use this decorator that computes saturated_(toint)(nearbyint(x));

    See also
    nearbyint, ifloor, iround, ifix, iceil
    Example:
    #include <boost/simd/arithmetic.hpp>
    #include <boost/simd/pack.hpp>
    #include <boost/simd/function/enumerate.hpp>
    #include <iostream>
    namespace bs = boost::simd;
    using pack_ft = bs::pack <float, 8>;
    int main()
    {
    pack_ft pf = bs::enumerate<pack_ft>(-2.56, 0.51);
    std::cout
    << "---- simd" << '\n'
    << " <- pf = " << pf << '\n'
    << " -> bs::inearbyint(pf) = " << bs::inearbyint(pf) << '\n';
    float xf = 3.2f, yf = -3.2f;
    std::cout
    << "---- scalar" << '\n'
    << " <- xf = " << xf<< '\n'
    << " -> bs::inearbyint(xf) = " << bs::inearbyint(xf) << '\n'
    << " <- yf = " << yf << '\n'
    << " -> bs::inearbyint(yf) = " << bs::inearbyint(yf) << '\n';
    return 0;
    }
    Possible output:
    ---- simd
    <- pf = (-2.56, -2.05, -1.54, -1.03, -0.52, -0.00999999, 0.5, 1.01)
    -> bs::inearbyint(pf) = (-3, -2, -2, -1, -1, 0, 0, 1)
    ---- scalar
    <- xf = 3.2
    -> bs::inearbyint(xf) = 3
    <- yf = -3.2
    -> bs::inearbyint(yf) = -3