Speedup for scalar xlog functions
This commit is contained in:
parent
e07ff4032b
commit
0edac2dac7
@ -532,7 +532,7 @@ __inline double xlog(double d) {
|
|||||||
|
|
||||||
x = x * t + 0.693147180559945286226764 * e;
|
x = x * t + 0.693147180559945286226764 * e;
|
||||||
|
|
||||||
if (xisinf(d)) x = rtengine::RT_INFINITY;
|
if (xispinf(d)) x = rtengine::RT_INFINITY;
|
||||||
if (d < 0) x = rtengine::RT_NAN;
|
if (d < 0) x = rtengine::RT_NAN;
|
||||||
if (d == 0) x = -rtengine::RT_INFINITY;
|
if (d == 0) x = -rtengine::RT_INFINITY;
|
||||||
|
|
||||||
@ -864,7 +864,7 @@ __inline double xlog10(double a) {
|
|||||||
double2 d = mul_dd(logk(a), dd(0.43429448190325176116, 6.6494347733425473126e-17));
|
double2 d = mul_dd(logk(a), dd(0.43429448190325176116, 6.6494347733425473126e-17));
|
||||||
double x = d.x + d.y;
|
double x = d.x + d.y;
|
||||||
|
|
||||||
if (xisinf(a)) x = rtengine::RT_INFINITY;
|
if (xispinf(a)) x = rtengine::RT_INFINITY;
|
||||||
if (a < 0) x = rtengine::RT_NAN;
|
if (a < 0) x = rtengine::RT_NAN;
|
||||||
if (a == 0) x = -rtengine::RT_INFINITY;
|
if (a == 0) x = -rtengine::RT_INFINITY;
|
||||||
|
|
||||||
@ -875,7 +875,7 @@ __inline double xlog1p(double a) {
|
|||||||
double2 d = logk2(add2_ss(a, 1));
|
double2 d = logk2(add2_ss(a, 1));
|
||||||
double x = d.x + d.y;
|
double x = d.x + d.y;
|
||||||
|
|
||||||
if (xisinf(a)) x = rtengine::RT_INFINITY;
|
if (xispinf(a)) x = rtengine::RT_INFINITY;
|
||||||
if (a < -1) x = rtengine::RT_NAN;
|
if (a < -1) x = rtengine::RT_NAN;
|
||||||
if (a == -1) x = -rtengine::RT_INFINITY;
|
if (a == -1) x = -rtengine::RT_INFINITY;
|
||||||
|
|
||||||
@ -1208,7 +1208,7 @@ __inline float xlogf(float d) {
|
|||||||
|
|
||||||
x = x * t + 0.693147180559945286226764f * e;
|
x = x * t + 0.693147180559945286226764f * e;
|
||||||
|
|
||||||
if (xisinff(d)) x = rtengine::RT_INFINITY_F;
|
if (xispinff(d)) x = rtengine::RT_INFINITY_F;
|
||||||
if (d < 0) x = rtengine::RT_NAN_F;
|
if (d < 0) x = rtengine::RT_NAN_F;
|
||||||
if (d == 0) x = -rtengine::RT_INFINITY_F;
|
if (d == 0) x = -rtengine::RT_INFINITY_F;
|
||||||
|
|
||||||
@ -1233,7 +1233,7 @@ __inline float xlogf1(float d) { // does xlogf(vmaxf(d, 1.f)) but faster
|
|||||||
|
|
||||||
x = x * t + 0.693147180559945286226764f * e;
|
x = x * t + 0.693147180559945286226764f * e;
|
||||||
|
|
||||||
if (xisinff(d)) x = rtengine::RT_INFINITY_F;
|
if (xispinff(d)) x = rtengine::RT_INFINITY_F;
|
||||||
if (d <= 1.f) x = 0;
|
if (d <= 1.f) x = 0;
|
||||||
|
|
||||||
return x;
|
return x;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user