.\" Copyright (c) 1985, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" %sccs.include.redist.roff% .\" .\" @(#)lgamma.3 8.2 (Berkeley) 12/11/93 .\" .Dd .Dt LGAMMA 3 .Os BSD 4.3 .Sh NAME .Nm lgamma .Nm gamma .Nd log gamma function, gamma function .Sh SYNOPSIS .Fd #include .Ft extern int .Fa signgam ; .sp .Ft double .Fn lgamma "double x" .Ft double .Fn gamma "double x" .Sh DESCRIPTION .Fn Lgamma x .if t \{\ returns 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 .br \(*G(x) = \(*p/(\(*G(1\-x)\|sin(\(*px)) for x < 1. .Ed .\} .if n \ returns ln\||\(*G(x)|. .Pp The external integer .Fa signgam returns the sign of \(*G(x). .Pp .Fn Gamma 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 has returned can signgam be correct. .Pp For arguments in its range, .Fn gamma 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 and .Fn lgamma return appropriate values unless an argument is out of range. Overflow will occur for sufficiently large positive values, and non-positive integers. On the .Tn VAX, the reserved operator is returned, and .Va errno is set to .Er ERANGE For large non-integer negative values, .Fn gamma will underflow. .Sh SEE ALSO .Xr math 3 , .Xr infnan 3 .Sh HISTORY The .Nm lgamma function appeared in .Bx 4.3 . The .Nm gamma function appeared in .Bx 4.4 . The name .Fn gamma was originally dedicated to the .Fn lgamma function, so some old code may no longer be compatible.