CMS 3D CMS Logo

approx_erf.h
Go to the documentation of this file.
1 #ifndef APPROX_ERF_H
2 #define APPROX_ERF_H
4 
5 constexpr float approx_erf(float x) {
6  auto xx = std::min(std::abs(x), 5.f);
7  xx *= xx;
8  return std::copysign(std::sqrt(1.f - unsafe_expf<4>(-xx * (1.f + 0.2733f / (1.f + 0.147f * xx)))), x);
9  // return std::sqrt(1.f- std::exp(-x*x*(1.f+0.2733f/(1.f+0.147f*x*x)) ));
10 }
11 
12 #endif
T sqrt(T t)
Definition: SSEVec.h:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double f[11][100]
T min(T a, T b)
Definition: MathUtil.h:58
constexpr float approx_erf(float x)
Definition: approx_erf.h:5
#define constexpr