@cindex W function
@cindex Lambert function

Lambert's W functions, @math{W(x)}, are defined to be solutions
of the equation @math{W(x) \exp(W(x)) = x}. This function has
multiple branches for @math{x < 0}; however, it has only
two real-valued branches. We define @math{W_0(x)} to be the
principal branch, where @math{W > -1} for @math{x < 0}, and 
@c{$W_{-1}(x)$}
@math{W_@{-1@}(x)} to be the other real branch, where
@math{W < -1} for @math{x < 0}.  The Lambert functions are
declared in the header file @file{gsl_sf_lambert.h}.


@deftypefun double gsl_sf_lambert_W0 (double @var{x})
@deftypefunx int gsl_sf_lambert_W0_e (double @var{x}, gsl_sf_result * @var{result})
These compute the principal branch of the Lambert W function, @math{W_0(x)}.
@comment exceptions: GSL_EDOM, GSL_EMAXITER
@end deftypefun

@deftypefun double gsl_sf_lambert_Wm1 (double @var{x})
@deftypefunx int gsl_sf_lambert_Wm1_e (double @var{x}, gsl_sf_result * @var{result})
These compute the secondary real-valued branch of the Lambert W function, 
@c{$W_{-1}(x)$}
@math{W_@{-1@}(x)}.
@comment exceptions: GSL_EDOM, GSL_EMAXITER
@end deftypefun

