123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- .\" Copyright (c) 1985, 1991 Regents of the University of California.
- .\" All rights reserved.
- .\"
- .\" Redistribution and use in source and binary forms, with or without
- .\" modification, are permitted provided that the following conditions
- .\" are met:
- .\" 1. Redistributions of source code must retain the above copyright
- .\" notice, this list of conditions and the following disclaimer.
- .\" 2. Redistributions in binary form must reproduce the above copyright
- .\" notice, this list of conditions and the following disclaimer in the
- .\" documentation and/or other materials provided with the distribution.
- .\" 4. Neither the name of the University nor the names of its contributors
- .\" may be used to endorse or promote products derived from this software
- .\" without specific prior written permission.
- .\"
- .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- .\" SUCH DAMAGE.
- .\"
- .\" from: @(#)lgamma.3 6.6 (Berkeley) 12/3/92
- .\" $FreeBSD: src/lib/msun/man/lgamma.3,v 1.24 2008/02/18 17:27:11 das Exp $
- .\"
- .Dd January 14, 2005
- .Dt LGAMMA 3
- .Os
- .Sh NAME
- .Nm lgamma ,
- .Nm lgamma_r ,
- .Nm lgammaf ,
- .Nm lgammaf_r ,
- .Nm gamma ,
- .Nm gamma_r ,
- .Nm gammaf ,
- .Nm gammaf_r ,
- .Nm tgamma ,
- .Nm tgammaf
- .Nd log gamma functions, gamma function
- .Sh LIBRARY
- .Lb libm
- .Sh SYNOPSIS
- .In math.h
- .Ft extern int
- .Fa signgam ;
- .sp
- .Ft double
- .Fn lgamma "double x"
- .Ft double
- .Fn lgamma_r "double x" "int *signgamp"
- .Ft float
- .Fn lgammaf "float x"
- .Ft float
- .Fn lgammaf_r "float x" "int *signgamp"
- .Ft double
- .Fn gamma "double x"
- .Ft double
- .Fn gamma_r "double x" "int *signgamp"
- .Ft float
- .Fn gammaf "float x"
- .Ft float
- .Fn gammaf_r "float x" "int *signgamp"
- .Ft double
- .Fn tgamma "double x"
- .Ft float
- .Fn tgammaf "float x"
- .Sh DESCRIPTION
- .Fn lgamma x
- and
- .Fn lgammaf x
- .if t \{\
- return ln\||\(*G(x)| where
- .Bd -unfilled -offset indent
- \(*G(x) = \(is\d\s8\z0\s10\u\u\s8\(if\s10\d t\u\s8x\-1\s10\d e\u\s8\-t\s10\d dt for x > 0 and
- \(*G(x) = \(*p/(\(*G(1\-x)\|sin(\(*px)) for x < 1.
- .Ed
- .\}
- .if n \
- return ln\||\(*G(x)|.
- The external integer
- .Fa signgam
- returns the sign of \(*G(x).
- .Pp
- .Fn lgamma_r x signgamp
- and
- .Fn lgammaf_r x signgamp
- provide the same functionality as
- .Fn lgamma x
- and
- .Fn lgammaf x
- but the caller must provide an integer to store the sign of \(*G(x).
- .Pp
- The
- .Fn tgamma x
- and
- .Fn tgammaf x
- functions return \(*G(x), with no effect on
- .Fa signgam .
- .Pp
- .Fn gamma ,
- .Fn gammaf ,
- .Fn gamma_r ,
- and
- .Fn gammaf_r
- are deprecated aliases for
- .Fn lgamma ,
- .Fn lgammaf ,
- .Fn lgamma_r ,
- and
- .Fn lgammaf_r ,
- respectively.
- .Sh IDIOSYNCRASIES
- Do not use the expression
- .Dq Li signgam\(**exp(lgamma(x))
- to compute g := \(*G(x).
- Instead use a program like this (in C):
- .Bd -literal -offset indent
- lg = lgamma(x); g = signgam\(**exp(lg);
- .Ed
- .Pp
- Only after
- .Fn lgamma
- or
- .Fn lgammaf
- has returned can signgam be correct.
- .Pp
- For arguments in its range,
- .Fn tgamma
- is preferred, as for positive arguments
- it is accurate to within one unit in the last place.
- Exponentiation of
- .Fn lgamma
- will lose up to 10 significant bits.
- .Sh RETURN VALUES
- .Fn gamma ,
- .Fn gamma_r ,
- .Fn gammaf ,
- .Fn gammaf_r ,
- .Fn lgamma ,
- .Fn lgamma_r ,
- .Fn lgammaf ,
- and
- .Fn lgammaf_r
- return appropriate values unless an argument is out of range.
- Overflow will occur for sufficiently large positive values, and
- non-positive integers.
- For large non-integer negative values,
- .Fn tgamma
- will underflow.
- .Sh SEE ALSO
- .Xr math 3
- .Sh STANDARDS
- The
- .Fn lgamma ,
- .Fn lgammaf ,
- .Fn tgamma ,
- and
- .Fn tgammaf
- functions are expected to conform to
- .St -isoC-99 .
- .Sh HISTORY
- The
- .Fn lgamma
- function appeared in
- .Bx 4.3 .
- The
- .Fn gamma
- function appeared in
- .Bx 4.4
- as a function which computed \(*G(x).
- This version was used in
- .Fx 1.1 .
- The name
- .Fn gamma
- was originally dedicated to the
- .Fn lgamma
- function,
- and that usage was restored by switching to Sun's fdlibm in
- .Fx 1.1.5 .
- The
- .Fn tgamma
- function appeared in
- .Fx 5.0 .
|