@cindex exponential function
@cindex exp

The functions described in this section are declared in the header file
@file{gsl_sf_exp.h}.

@menu
* Exponential Function::        
* Relative Exponential Functions::  
* Exponentiation With Error Estimate::  
@end menu

@node Exponential Function
@subsection Exponential Function

@deftypefun double gsl_sf_exp (double @var{x})
@deftypefunx int gsl_sf_exp_e (double @var{x}, gsl_sf_result * @var{result})
These routines provide an exponential function @math{\exp(x)} using GSL
semantics and error checking.
@comment Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW
@end deftypefun

@deftypefun int gsl_sf_exp_e10_e (double @var{x}, gsl_sf_result_e10 * @var{result})
This function computes the exponential @math{\exp(x)} using the
@code{gsl_sf_result_e10} type to return a result with extended range.
This function may be useful if the value of @math{\exp(x)} would
overflow the  numeric range of @code{double}.
@comment Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW
@end deftypefun

@deftypefun double gsl_sf_exp_mult (double @var{x}, double @var{y})
@deftypefunx int gsl_sf_exp_mult_e (double @var{x}, double @var{y}, gsl_sf_result * @var{result})
These routines exponentiate @var{x} and multiply by the factor @var{y}
to return the product @math{y \exp(x)}.
@comment Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW
@end deftypefun

@deftypefun int gsl_sf_exp_mult_e10_e (const double @var{x}, const double @var{y}, gsl_sf_result_e10 * @var{result})
This function computes the product @math{y \exp(x)} using the
@code{gsl_sf_result_e10} type to return a result with extended numeric
range.
@comment Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW
@end deftypefun



@node Relative Exponential Functions
@subsection Relative Exponential Functions

@deftypefun double gsl_sf_expm1 (double @var{x})
@deftypefunx int gsl_sf_expm1_e (double @var{x}, gsl_sf_result * @var{result})
These routines compute the quantity @math{\exp(x)-1} using an algorithm
that is accurate for small @math{x}.
@comment Exceptional Return Values:  GSL_EOVRFLW
@end deftypefun

@deftypefun double gsl_sf_exprel (double @var{x})
@deftypefunx int gsl_sf_exprel_e (double @var{x}, gsl_sf_result * @var{result})
These routines compute the quantity @math{(\exp(x)-1)/x} using an
algorithm that is accurate for small @math{x}.  For small @math{x} the
algorithm is based on the expansion @math{(\exp(x)-1)/x = 1 + x/2 +
x^2/(2*3) + x^3/(2*3*4) + \dots}.
@comment Exceptional Return Values:  GSL_EOVRFLW
@end deftypefun

@deftypefun double gsl_sf_exprel_2 (double @var{x})
@deftypefunx int gsl_sf_exprel_2_e (double @var{x}, gsl_sf_result * @var{result})
These routines compute the quantity @math{2(\exp(x)-1-x)/x^2} using an
algorithm that is accurate for small @math{x}.  For small @math{x} the
algorithm is based on the expansion @math{2(\exp(x)-1-x)/x^2 = 
1 + x/3 + x^2/(3*4) + x^3/(3*4*5) + \dots}.
@comment Exceptional Return Values:  GSL_EOVRFLW
@end deftypefun

@deftypefun double gsl_sf_exprel_n (int @var{n}, double @var{x})
@deftypefunx int gsl_sf_exprel_n_e (int @var{n}, double @var{x}, gsl_sf_result * @var{result})
These routines compute the @math{N}-relative exponential, which is the
@var{n}-th generalization of the functions @code{gsl_sf_exprel} and
@code{gsl_sf_exprel_2}.  The @math{N}-relative exponential is given by,
@tex
\beforedisplay
$$
\eqalign{
\hbox{exprel}_N(x)
            &= N!/x^N \left(\exp(x) - \sum_{k=0}^{N-1} x^k/k!\right)\cr
            &= 1 + x/(N+1) + x^2/((N+1)(N+2)) + \dots\cr
            &= {}_1F_1(1,1+N,x)\cr
}
$$
\afterdisplay
@end tex
@ifinfo

@example
exprel_N(x) = N!/x^N (\exp(x) - \sum_@{k=0@}^@{N-1@} x^k/k!)
            = 1 + x/(N+1) + x^2/((N+1)(N+2)) + ...
            = 1F1 (1,1+N,x)
@end example
@end ifinfo
@comment Exceptional Return Values: 
@end deftypefun



@node Exponentiation With Error Estimate
@subsection Exponentiation With Error Estimate


@deftypefun int gsl_sf_exp_err_e (double @var{x}, double @var{dx}, gsl_sf_result * @var{result})
This function exponentiates @var{x} with an associated absolute error
@var{dx}.
@comment Exceptional Return Values: 
@end deftypefun

@deftypefun int gsl_sf_exp_err_e10_e (double @var{x}, double @var{dx}, gsl_sf_result_e10 * @var{result})
This function exponentiates a quantity @var{x} with an associated absolute 
error @var{dx} using the @code{gsl_sf_result_e10} type to return a result with
extended range.
@comment Exceptional Return Values: 
@end deftypefun

@deftypefun int gsl_sf_exp_mult_err_e (double @var{x}, double @var{dx}, double @var{y}, double @var{dy}, gsl_sf_result * @var{result})
This routine computes the product @math{y \exp(x)} for the quantities
@var{x}, @var{y} with associated absolute errors @var{dx}, @var{dy}.
@comment Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW
@end deftypefun


@deftypefun int gsl_sf_exp_mult_err_e10_e (double @var{x}, double @var{dx}, double @var{y}, double @var{dy}, gsl_sf_result_e10 * @var{result})
This routine computes the product @math{y \exp(x)} for the quantities
@var{x}, @var{y} with associated absolute errors @var{dx}, @var{dy} using the
@code{gsl_sf_result_e10} type to return a result with extended range.
@comment Exceptional Return Values: GSL_EOVRFLW, GSL_EUNDRFLW
@end deftypefun

