|  | .\" 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. | 
|  | .\" 3. All advertising materials mentioning features or use of this software | 
|  | .\"    must display the following acknowledgement: | 
|  | .\"	This product includes software developed by the University of | 
|  | .\"	California, Berkeley and its contributors. | 
|  | .\" 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.22 2005/01/16 16:46:14 ru 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 | 
|  | .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" | 
|  | .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)|. | 
|  | .Pp | 
|  | 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 | 
|  | .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. | 
|  | .Fn tgamma x | 
|  | returns \(*G(x), with no effect on | 
|  | .Fa signgam . | 
|  | .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 | 
|  | and | 
|  | .Fn tgamma | 
|  | 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 . |