double do_acosh(double x) { double t; if (x > 1.0e20) return (LOG1P(x) + log(2.0)); else { t = sqrt(x - 1.0); return (LOG1P(t * (t + sqrt(x + 1)))); } }
double do_asinh(double x) { double s, t; if (1.0 + x * x == 1.0) return (x); if (sqrt(1.0 + x * x) == 1.0) return (do_sign(1.0, x) * (LOG1P(x) + log(2.0))); else { t = fabs(x); s = 1.0 / t; return (do_sign(1.0, x) * LOG1P(t + t / (s + sqrt(1 + s * s)))); } }
double do_atanh(double x) { double z; z = do_sign(0.5, x); x = do_sign(x, 1.0); x = x / (1.0 - x); return (z * LOG1P(x + x)); }
void KERNEL_NAME(VMLLONG n, VML_FLOAT * a, VML_FLOAT * b, VML_FLOAT * y, VML_FLOAT * z, VML_FLOAT * other_params) { VMLLONG i=0; for(i=0; i<n; i++){ y[i]=LOG1P(a[i]); } }
double do_log1p(double x) { return LOG1P(x); }