17 lines
357 B
C
17 lines
357 B
C
|
#include <cstdint>
|
||
|
|
||
|
static inline float bellCurveApproximation(float x, float inverseWidth)
|
||
|
{
|
||
|
if (x < 0)
|
||
|
x = -x;
|
||
|
|
||
|
const auto nx = x * inverseWidth * 4;
|
||
|
if (nx > 2)
|
||
|
return 0.0f;
|
||
|
|
||
|
const auto x2 = nx * nx;
|
||
|
const auto x3 = x2 * nx;
|
||
|
const auto res = 1.0f + 0.27606958941084f * x3 - 0.80213917882168f * x2;
|
||
|
|
||
|
return res < 0.0f ? 0.0f : res;
|
||
|
}
|