// -*-C++-*- #ifndef MATHFUNCS_ASINH_H #define MATHFUNCS_ASINH_H #include "mathfuncs_base.h" #include namespace vecmathlib { template realvec_t mathfuncs::vml_asinh(realvec_t x) { // Reduce range realvec_t r = fabs(x); r = log(r + sqrt(r * r + RV(1.0))); r = copysign(r, x); return r; } template realvec_t mathfuncs::vml_acosh(realvec_t x) { return log(x + sqrt(x * x - RV(1.0))); } template realvec_t mathfuncs::vml_atanh(realvec_t x) { // Reduce range realvec_t r = fabs(x); r = RV(0.5) * log((RV(1.0) + r) / (RV(1.0) - r)); r = copysign(r, x); return r; } }; // namespace vecmathlib #endif // #ifndef MATHFUNCS_ASINH_H