function asinh( x ) {
	if (
		x === 0.0 || // +-0.0
		isnan( x ) ||
		isinfinite( x )
	) {
		return x;
	}
	if ( x > 0 ) {
		return ln( x + sqrt( (x*x) + 1 ) );
	}
	// Better precision for large negative `x`:
	return -ln( -x + sqrt( (x*x) + 1 ) );
}
Computes the hyperbolic arcsine of a number.

@param {number} x - input value
@returns {number} hyperbolic arcsine (in radians)

@example
var v = asinh( 0.0 );
// returns 0.0

@example
var v = asinh( 2.0 );
// returns ~1.444

@example
var v = asinh( -2.0 );
// returns ~-1.444

@example
var v = asinh( NaN );
// returns NaN