## Elementary Functions

The following routines provide portable implementations of functions found in the BSD math library. When native versions are not available the functions described here can be used instead. The substitution can be made automatically if you use `autoconf` to compile your application (see section Portability functions).

Function: double gsl_log1p (const double x)
  This function computes the value of \log(1+x) in a way that is accurate for small x. It provides an alternative to the BSD math function `log1p(x)`.

Function: double gsl_expm1 (const double x)
  This function computes the value of \exp(x)-1 in a way that is accurate for small x. It provides an alternative to the BSD math function `expm1(x)`.

Function: double gsl_hypot (const double x, const double y)
  This function computes the value of \sqrt{x^2 + y^2} in a way that avoids overflow. It provides an alternative to the BSD math function `hypot(x,y)`.

Function: double gsl_acosh (const double x)
  This function computes the value of \arccosh(x). It provides an alternative to the standard math function `acosh(x)`.

Function: double gsl_asinh (const double x)
  This function computes the value of \arcsinh(x). It provides an alternative to the standard math function `asinh(x)`.

Function: double gsl_atanh (const double x)
  This function computes the value of \arctanh(x). It provides an alternative to the standard math function `atanh(x)`.

Function: double gsl_ldexp (double x, int e)
  This function computes the value of x * 2^e. It provides an alternative to the standard math function `ldexp(x)`.

Function: double gsl_frexp (double x, int * e)
  This function splits the number x into its normalized fraction f and exponent e, such that x = f * 2^e and 0.5 <= f < 1. Ihe function returns f and stores the exponent in e. If x is zero, both f and e are set to zero. This function provides an alternative to the standard math function `frexp(x, e)`.