◆ inearbyint()

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

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

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));

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