13a8617a8SJordan K. Hubbard.\" Copyright (c) 1985, 1991 Regents of the University of California. 23a8617a8SJordan K. Hubbard.\" All rights reserved. 33a8617a8SJordan K. Hubbard.\" 43a8617a8SJordan K. Hubbard.\" Redistribution and use in source and binary forms, with or without 53a8617a8SJordan K. Hubbard.\" modification, are permitted provided that the following conditions 63a8617a8SJordan K. Hubbard.\" are met: 73a8617a8SJordan K. Hubbard.\" 1. Redistributions of source code must retain the above copyright 83a8617a8SJordan K. Hubbard.\" notice, this list of conditions and the following disclaimer. 93a8617a8SJordan K. Hubbard.\" 2. Redistributions in binary form must reproduce the above copyright 103a8617a8SJordan K. Hubbard.\" notice, this list of conditions and the following disclaimer in the 113a8617a8SJordan K. Hubbard.\" documentation and/or other materials provided with the distribution. 123a8617a8SJordan K. Hubbard.\" 4. Neither the name of the University nor the names of its contributors 133a8617a8SJordan K. Hubbard.\" may be used to endorse or promote products derived from this software 143a8617a8SJordan K. Hubbard.\" without specific prior written permission. 153a8617a8SJordan K. Hubbard.\" 163a8617a8SJordan K. Hubbard.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 173a8617a8SJordan K. Hubbard.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 183a8617a8SJordan K. Hubbard.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 193a8617a8SJordan K. Hubbard.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 203a8617a8SJordan K. Hubbard.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 213a8617a8SJordan K. Hubbard.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 223a8617a8SJordan K. Hubbard.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 233a8617a8SJordan K. Hubbard.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 243a8617a8SJordan K. Hubbard.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 253a8617a8SJordan K. Hubbard.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 263a8617a8SJordan K. Hubbard.\" SUCH DAMAGE. 273a8617a8SJordan K. Hubbard.\" 283a8617a8SJordan K. Hubbard.\" from: @(#)lgamma.3 6.6 (Berkeley) 12/3/92 297f3dea24SPeter Wemm.\" $FreeBSD$ 303a8617a8SJordan K. Hubbard.\" 31*f7efd14dSSteve Kargl.Dd September 12, 2014 323a8617a8SJordan K. Hubbard.Dt LGAMMA 3 33a307d598SRuslan Ermilov.Os 343a8617a8SJordan K. Hubbard.Sh NAME 353a8617a8SJordan K. Hubbard.Nm lgamma , 36457f6cd2SWarner Losh.Nm lgamma_r , 377a15a32aSJordan K. Hubbard.Nm lgammaf , 38457f6cd2SWarner Losh.Nm lgammaf_r , 39*f7efd14dSSteve Kargl.Nm lgammal , 40*f7efd14dSSteve Kargl.Nm lgammal_r , 417a15a32aSJordan K. Hubbard.Nm gamma , 42457f6cd2SWarner Losh.Nm gamma_r , 4346d7c297SBruce Evans.Nm gammaf , 44457f6cd2SWarner Losh.Nm gammaf_r , 4571c11dd5SDavid Schultz.Nm tgamma , 4671c11dd5SDavid Schultz.Nm tgammaf 4746d7c297SBruce Evans.Nd log gamma functions, gamma function 4864890443SBruce Evans.Sh LIBRARY 4964890443SBruce Evans.Lb libm 503a8617a8SJordan K. Hubbard.Sh SYNOPSIS 5132eef9aeSRuslan Ermilov.In math.h 523a8617a8SJordan K. Hubbard.Ft extern int 533a8617a8SJordan K. Hubbard.Fa signgam ; 543a8617a8SJordan K. Hubbard.sp 553a8617a8SJordan K. Hubbard.Ft double 563a8617a8SJordan K. Hubbard.Fn lgamma "double x" 57457f6cd2SWarner Losh.Ft double 583892c300SRuslan Ermilov.Fn lgamma_r "double x" "int *signgamp" 597a15a32aSJordan K. Hubbard.Ft float 607a15a32aSJordan K. Hubbard.Fn lgammaf "float x" 61457f6cd2SWarner Losh.Ft float 623892c300SRuslan Ermilov.Fn lgammaf_r "float x" "int *signgamp" 63*f7efd14dSSteve Kargl.Ft "long double" 64*f7efd14dSSteve Kargl.Fn lgammal "long double x" 65*f7efd14dSSteve Kargl.Ft "long double" 66*f7efd14dSSteve Kargl.Fn lgammal_r "long double x" "int *signgamp" 673a8617a8SJordan K. Hubbard.Ft double 683a8617a8SJordan K. Hubbard.Fn gamma "double x" 69457f6cd2SWarner Losh.Ft double 703892c300SRuslan Ermilov.Fn gamma_r "double x" "int *signgamp" 717a15a32aSJordan K. Hubbard.Ft float 72354fb385SBruce Evans.Fn gammaf "float x" 73457f6cd2SWarner Losh.Ft float 743892c300SRuslan Ermilov.Fn gammaf_r "float x" "int *signgamp" 75*f7efd14dSSteve Kargl.Ft "long double" 7646d7c297SBruce Evans.Fn tgamma "double x" 7771c11dd5SDavid Schultz.Ft float 7871c11dd5SDavid Schultz.Fn tgammaf "float x" 793a8617a8SJordan K. Hubbard.Sh DESCRIPTION 80*f7efd14dSSteve Kargl.Fn lgamma x , 81*f7efd14dSSteve Kargl.Fn lgammaf x , 827a15a32aSJordan K. Hubbardand 83*f7efd14dSSteve Kargl.Fn lgammal x 843a8617a8SJordan K. Hubbard.if t \{\ 857a15a32aSJordan K. Hubbardreturn ln\||\(*G(x)| where 863a8617a8SJordan K. Hubbard.Bd -unfilled -offset indent 873a8617a8SJordan K. Hubbard\(*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 883a8617a8SJordan K. Hubbard\(*G(x) = \(*p/(\(*G(1\-x)\|sin(\(*px)) for x < 1. 893a8617a8SJordan K. Hubbard.Ed 903a8617a8SJordan K. Hubbard.\} 913a8617a8SJordan K. Hubbard.if n \ 92354fb385SBruce Evansreturn ln\||\(*G(x)|. 933a8617a8SJordan K. HubbardThe external integer 943a8617a8SJordan K. Hubbard.Fa signgam 953a8617a8SJordan K. Hubbardreturns the sign of \(*G(x). 963a8617a8SJordan K. Hubbard.Pp 97*f7efd14dSSteve Kargl.Fn lgamma_r x signgamp , 98*f7efd14dSSteve Kargl.Fn lgammaf_r x signgamp , 997a15a32aSJordan K. Hubbardand 100*f7efd14dSSteve Kargl.Fn lgammal_r x signgamp 101457f6cd2SWarner Loshprovide the same functionality as 102*f7efd14dSSteve Kargl.Fn lgamma x , 103*f7efd14dSSteve Kargl.Fn lgammaf x , 104457f6cd2SWarner Loshand 105*f7efd14dSSteve Kargl.Fn lgammal x , 1063892c300SRuslan Ermilovbut the caller must provide an integer to store the sign of \(*G(x). 107457f6cd2SWarner Losh.Pp 10871c11dd5SDavid SchultzThe 10971c11dd5SDavid Schultz.Fn tgamma x 11071c11dd5SDavid Schultzand 11171c11dd5SDavid Schultz.Fn tgammaf x 11271c11dd5SDavid Schultzfunctions return \(*G(x), with no effect on 11371c11dd5SDavid Schultz.Fa signgam . 11471c11dd5SDavid Schultz.Pp 115457f6cd2SWarner Losh.Fn gamma , 116457f6cd2SWarner Losh.Fn gammaf , 117457f6cd2SWarner Losh.Fn gamma_r , 118457f6cd2SWarner Loshand 119457f6cd2SWarner Losh.Fn gammaf_r 120675902aaSBruce Evansare deprecated aliases for 121457f6cd2SWarner Losh.Fn lgamma , 122675902aaSBruce Evans.Fn lgammaf , 123457f6cd2SWarner Losh.Fn lgamma_r , 124457f6cd2SWarner Loshand 125457f6cd2SWarner Losh.Fn lgammaf_r , 126675902aaSBruce Evansrespectively. 127*f7efd14dSSteve Kargl 1283a8617a8SJordan K. Hubbard.Sh IDIOSYNCRASIES 1293a8617a8SJordan K. HubbardDo not use the expression 1303a8617a8SJordan K. Hubbard.Dq Li signgam\(**exp(lgamma(x)) 1313a8617a8SJordan K. Hubbardto compute g := \(*G(x). 1323a8617a8SJordan K. HubbardInstead use a program like this (in C): 1333a8617a8SJordan K. Hubbard.Bd -literal -offset indent 1343a8617a8SJordan K. Hubbardlg = lgamma(x); g = signgam\(**exp(lg); 1353a8617a8SJordan K. Hubbard.Ed 1363a8617a8SJordan K. Hubbard.Pp 1373a8617a8SJordan K. HubbardOnly after 1383a8617a8SJordan K. Hubbard.Fn lgamma 1397a15a32aSJordan K. Hubbardor 1407a15a32aSJordan K. Hubbard.Fn lgammaf 1413a8617a8SJordan K. Hubbardhas returned can signgam be correct. 14246d7c297SBruce Evans.Pp 14346d7c297SBruce EvansFor arguments in its range, 14446d7c297SBruce Evans.Fn tgamma 14546d7c297SBruce Evansis preferred, as for positive arguments 14646d7c297SBruce Evansit is accurate to within one unit in the last place. 14746d7c297SBruce EvansExponentiation of 14846d7c297SBruce Evans.Fn lgamma 14946d7c297SBruce Evanswill lose up to 10 significant bits. 1503a8617a8SJordan K. Hubbard.Sh RETURN VALUES 1517a15a32aSJordan K. Hubbard.Fn gamma , 1527a15a32aSJordan K. Hubbard.Fn gammaf , 153*f7efd14dSSteve Kargl.Fn gammal , 154*f7efd14dSSteve Kargl.Fn gamma_r , 155457f6cd2SWarner Losh.Fn gammaf_r , 156*f7efd14dSSteve Kargl.Fn gammal_r , 1577a15a32aSJordan K. Hubbard.Fn lgamma , 158457f6cd2SWarner Losh.Fn lgammaf , 159*f7efd14dSSteve Kargl.Fn lgammal , 160*f7efd14dSSteve Kargl.Fn lgamma_r , 161*f7efd14dSSteve Kargl.Fn lgammaf_r , 1623a8617a8SJordan K. Hubbardand 163*f7efd14dSSteve Kargl.Fn lgammal_r 1643a8617a8SJordan K. Hubbardreturn appropriate values unless an argument is out of range. 1653a8617a8SJordan K. HubbardOverflow will occur for sufficiently large positive values, and 1663a8617a8SJordan K. Hubbardnon-positive integers. 16746d7c297SBruce EvansFor large non-integer negative values, 16846d7c297SBruce Evans.Fn tgamma 16946d7c297SBruce Evanswill underflow. 1703a8617a8SJordan K. Hubbard.Sh SEE ALSO 1714bd9ba3cSMike Pritchard.Xr math 3 17246d7c297SBruce Evans.Sh STANDARDS 17346d7c297SBruce EvansThe 17471c11dd5SDavid Schultz.Fn lgamma , 17571c11dd5SDavid Schultz.Fn lgammaf , 176*f7efd14dSSteve Kargl.Fn lgammal , 17771c11dd5SDavid Schultz.Fn tgamma , 17846d7c297SBruce Evansand 17971c11dd5SDavid Schultz.Fn tgammaf 18046d7c297SBruce Evansfunctions are expected to conform to 18146d7c297SBruce Evans.St -isoC-99 . 1823a8617a8SJordan K. Hubbard.Sh HISTORY 1833a8617a8SJordan K. HubbardThe 184563f6bdeSRuslan Ermilov.Fn lgamma 1853a8617a8SJordan K. Hubbardfunction appeared in 1863a8617a8SJordan K. Hubbard.Bx 4.3 . 1873a8617a8SJordan K. HubbardThe 188563f6bdeSRuslan Ermilov.Fn gamma 1893a8617a8SJordan K. Hubbardfunction appeared in 190a9dbc63dSDavid Malone.Bx 4.4 191a9dbc63dSDavid Maloneas a function which computed \(*G(x). 192675902aaSBruce EvansThis version was used in 193675902aaSBruce Evans.Fx 1.1 . 194675902aaSBruce EvansThe name 1953a8617a8SJordan K. Hubbard.Fn gamma 196675902aaSBruce Evanswas originally dedicated to the 197675902aaSBruce Evans.Fn lgamma 198675902aaSBruce Evansfunction, 199675902aaSBruce Evansand that usage was restored by switching to Sun's fdlibm in 200675902aaSBruce Evans.Fx 1.1.5 . 201a9dbc63dSDavid MaloneThe 202a9dbc63dSDavid Malone.Fn tgamma 20346d7c297SBruce Evansfunction appeared in 20446d7c297SBruce Evans.Fx 5.0 . 205