17 #if !defined escript_UnaryFuncs_20041124_H
18 #define escript_UnaryFuncs_20041124_H
24 #define FP_NAN IEEE_NaN()
28 #define INFINITY IEEE_Infy()
38 return log(y) - ((y-1)-x)/y ;
46 static unsigned char nan[4]={ 0, 0, 0xc0, 0x7f };
47 return *(
float *)nan;
55 static unsigned char infy[8]={ 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
56 return *(
double *)infy;
62 #if defined (_WIN32) && !defined(__INTEL_COMPILER)
65 acosh_substitute (
const double x)
69 return log (x) +
M_LN2;
73 return log (2 * x - 1 / (sqrt (x * x - 1) + x));
78 return log1p (t + sqrt (2 * t + t * t));
95 asinh_substitute (
const double x)
98 double s = (x < 0) ? -1 : 1;
102 return s * (log (a) +
M_LN2);
106 return s * log (2 * a + 1 / (a + sqrt (a * a + 1)));
111 return s *
log1p (a + a2 / (1 + sqrt (1 + a2)));
124 atanh_substitute (
const double x)
127 double s = (x < 0) ? -1 : 1;
139 return s * 0.5 *
log1p (2 * a / (1 - a));
141 else if (a > DBL_EPSILON)
143 return s * 0.5 *
log1p (2 * a + 2 * a * a / (1 - a));
150 #endif // windows substitutes for stupid microsoft compiler.