Templated vectorizable Fast RSQRT
Provides a fast reciprocal square root that is templated, and vectorizable.
Usage:
#include "LHCbMath/FastMaths.h"
float a = LHCb::Math::rsqrt<LHCb::Math::fastest>(2.f);
using namespace LHCb::Math;
float b = rsqrt<fastest>(3.f);
It works with float
, double
, intrinsic SIMD types and any numerical type.
5 variants exist:
rsqrt<accurate>(x); // best accuracy efficiently possible usually the same as ieee
rsqrt<ieee >(x); // same as 1/sqrt(x) (with intermediate perfect rounding): use for reproducible results
rsqrt<fast >(x); // usually less then 2 bits of error
rsqrt<faster >(x); // good estimation
rsqrt<fastest >(x); // rough estimation
For more information, please refer to the documentation
Edited by Marco Cattaneo