xref: /dflybsd-src/contrib/openbsd_libm/man/lgamma.3 (revision d46ba01e9cb8841869e56e6cbb89191491e9371e)
105a0b428SJohn Marino.\"	$OpenBSD: lgamma.3,v 1.22 2015/01/15 19:06:31 schwarze Exp $
205a0b428SJohn Marino.\" Copyright (c) 1985, 1991 Regents of the University of California.
305a0b428SJohn Marino.\" All rights reserved.
405a0b428SJohn Marino.\"
505a0b428SJohn Marino.\" Redistribution and use in source and binary forms, with or without
605a0b428SJohn Marino.\" modification, are permitted provided that the following conditions
705a0b428SJohn Marino.\" are met:
805a0b428SJohn Marino.\" 1. Redistributions of source code must retain the above copyright
905a0b428SJohn Marino.\"    notice, this list of conditions and the following disclaimer.
1005a0b428SJohn Marino.\" 2. Redistributions in binary form must reproduce the above copyright
1105a0b428SJohn Marino.\"    notice, this list of conditions and the following disclaimer in the
1205a0b428SJohn Marino.\"    documentation and/or other materials provided with the distribution.
1305a0b428SJohn Marino.\" 3. Neither the name of the University nor the names of its contributors
1405a0b428SJohn Marino.\"    may be used to endorse or promote products derived from this software
1505a0b428SJohn Marino.\"    without specific prior written permission.
1605a0b428SJohn Marino.\"
1705a0b428SJohn Marino.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
1805a0b428SJohn Marino.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1905a0b428SJohn Marino.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2005a0b428SJohn Marino.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2105a0b428SJohn Marino.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2205a0b428SJohn Marino.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2305a0b428SJohn Marino.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2405a0b428SJohn Marino.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2505a0b428SJohn Marino.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2605a0b428SJohn Marino.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2705a0b428SJohn Marino.\" SUCH DAMAGE.
2805a0b428SJohn Marino.\"
2905a0b428SJohn Marino.\"     from: @(#)lgamma.3	6.6 (Berkeley) 12/3/92
3005a0b428SJohn Marino.\"
3105a0b428SJohn Marino.Dd $Mdocdate: January 15 2015 $
3205a0b428SJohn Marino.Dt LGAMMA 3
3305a0b428SJohn Marino.Os
3405a0b428SJohn Marino.Sh NAME
3505a0b428SJohn Marino.Nm lgamma ,
3605a0b428SJohn Marino.Nm lgammaf ,
3705a0b428SJohn Marino.Nm lgammal ,
3805a0b428SJohn Marino.Nm lgamma_r ,
3905a0b428SJohn Marino.Nm lgammaf_r ,
40*d46ba01eSSascha Wildner.\".Nm lgammal_r ,
4105a0b428SJohn Marino.Nm tgamma ,
4205a0b428SJohn Marino.Nm tgammaf ,
4305a0b428SJohn Marino.Nm tgammal
4405a0b428SJohn Marino.Nd log gamma functions
4505a0b428SJohn Marino.Sh SYNOPSIS
4605a0b428SJohn Marino.In math.h
4705a0b428SJohn Marino.Ft extern int
4805a0b428SJohn Marino.Fa signgam ;
4905a0b428SJohn Marino.sp
5005a0b428SJohn Marino.Ft double
5105a0b428SJohn Marino.Fn lgamma "double x"
5205a0b428SJohn Marino.Ft float
5305a0b428SJohn Marino.Fn lgammaf "float x"
5405a0b428SJohn Marino.Ft long double
5505a0b428SJohn Marino.Fn lgammal "long double x"
5605a0b428SJohn Marino.Ft double
5705a0b428SJohn Marino.Fn lgamma_r "double x" "int *signgamp"
5805a0b428SJohn Marino.Ft float
5905a0b428SJohn Marino.Fn lgammaf_r "float x" "int *signgamp"
60*d46ba01eSSascha Wildner.\".Ft long double
61*d46ba01eSSascha Wildner.\".Fn lgammal_r "long double x" "int *signgamp"
6205a0b428SJohn Marino.Ft double
6305a0b428SJohn Marino.Fn tgamma "double x"
6405a0b428SJohn Marino.Ft float
6505a0b428SJohn Marino.Fn tgammaf "float x"
6605a0b428SJohn Marino.Ft long double
6705a0b428SJohn Marino.Fn tgammal "long double x"
6805a0b428SJohn Marino.Sh DESCRIPTION
6905a0b428SJohn Marino.Fn lgamma x
7005a0b428SJohn Marino.if t \{\
7105a0b428SJohn Marinoreturns ln\||\(*G(x)| where
7205a0b428SJohn Marino.Bd -unfilled -offset indent
7305a0b428SJohn Marino\(*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
7405a0b428SJohn Marino.br
7505a0b428SJohn Marino\(*G(x) = \(*p/(\(*G(1\-x)\|sin(\(*px))	for x < 1.
7605a0b428SJohn Marino.Ed
7705a0b428SJohn Marino.\}
7805a0b428SJohn Marino.if n \
7905a0b428SJohn Marinoreturns ln\||\(*G(x)|.
8005a0b428SJohn Marino.Pp
8105a0b428SJohn MarinoThe external integer
8205a0b428SJohn Marino.Fa signgam
8305a0b428SJohn Marinoreturns the sign of \(*G(x).
8405a0b428SJohn MarinoThe
8505a0b428SJohn Marino.Fn lgammaf
8605a0b428SJohn Marinofunction is a single precision version of
8705a0b428SJohn Marino.Fn lgamma .
8805a0b428SJohn MarinoThe
8905a0b428SJohn Marino.Fn lgammal
9005a0b428SJohn Marinofunction is an extended precision version of
9105a0b428SJohn Marino.Fn lgamma .
9205a0b428SJohn Marino.Pp
9305a0b428SJohn MarinoThe
94*d46ba01eSSascha Wildner.Fn lgamma_r
9505a0b428SJohn Marinoand
96*d46ba01eSSascha Wildner.Fn lgammaf_r
97*d46ba01eSSascha Wildner.\"and
98*d46ba01eSSascha Wildner.\".Fn lgammal_r
9905a0b428SJohn Marinofunctions are thread-safe versions of
100*d46ba01eSSascha Wildner.Fn lgamma
10105a0b428SJohn Marinoand
102*d46ba01eSSascha Wildner.Fn lgammaf
103*d46ba01eSSascha Wildner.\"and
104*d46ba01eSSascha Wildner.\".Fn lgammal
10505a0b428SJohn Marinothat return the sign via the
10605a0b428SJohn Marino.Fa signgamp
10705a0b428SJohn Marinopointer instead of modifying
10805a0b428SJohn Marino.Fa signgam .
10905a0b428SJohn Marino.Pp
11005a0b428SJohn MarinoThe
11105a0b428SJohn Marino.Fn tgamma x ,
11205a0b428SJohn Marino.Fn tgammaf x
11305a0b428SJohn Marinoand
11405a0b428SJohn Marino.Fn tgammal x
11505a0b428SJohn Marinofunctions return \(*G(x), with no effect on
11605a0b428SJohn Marino.Fa signgam .
11705a0b428SJohn Marino.Sh IDIOSYNCRASIES
11805a0b428SJohn MarinoDo not use the expression
11905a0b428SJohn Marino.Sq Li signgam\(**exp(lgamma(x))
12005a0b428SJohn Marinoto compute g := \(*G(x).
12105a0b428SJohn MarinoInstead use a program like this (in C):
12205a0b428SJohn Marino.Bd -literal -offset indent
12305a0b428SJohn Marinolg = lgamma(x); g = signgam\(**exp(lg);
12405a0b428SJohn Marino.Ed
12505a0b428SJohn Marino.Pp
12605a0b428SJohn MarinoOnly after
12705a0b428SJohn Marino.Fn lgamma
12805a0b428SJohn Marinohas returned can signgam be correct.
12905a0b428SJohn Marino.Pp
13005a0b428SJohn MarinoFor arguments in its range,
13105a0b428SJohn Marino.Fn tgamma
13205a0b428SJohn Marinois preferred, as for positive arguments
13305a0b428SJohn Marinoit is accurate to within one unit in the last place.
13405a0b428SJohn Marino.Sh RETURN VALUES
13505a0b428SJohn Marino.Fn lgamma
13605a0b428SJohn Marinoreturns appropriate values unless an argument is out of range.
13705a0b428SJohn MarinoOverflow will occur for sufficiently large positive values, and
13805a0b428SJohn Marinonon-positive integers.
13905a0b428SJohn MarinoFor large non-integer negative values,
14005a0b428SJohn Marino.Fn tgamma
14105a0b428SJohn Marinowill underflow.
14205a0b428SJohn MarinoOn the VAX, the reserved operator is returned, and
14305a0b428SJohn Marino.Va errno
14405a0b428SJohn Marinois set to
14505a0b428SJohn Marino.Er ERANGE .
14605a0b428SJohn Marino.Sh SEE ALSO
14705a0b428SJohn Marino.Xr infnan 3
14805a0b428SJohn Marino.Sh STANDARDS
14905a0b428SJohn MarinoThe
15005a0b428SJohn Marino.Fn lgamma ,
15105a0b428SJohn Marino.Fn lgammaf ,
15205a0b428SJohn Marino.Fn lgammal ,
15305a0b428SJohn Marino.Fn tgamma ,
15405a0b428SJohn Marino.Fn tgammaf ,
15505a0b428SJohn Marinoand
15605a0b428SJohn Marino.Fn tgammal
15705a0b428SJohn Marinofunctions are expected to conform to
15805a0b428SJohn Marino.St -isoC-99 .
15905a0b428SJohn Marino.Pp
16005a0b428SJohn MarinoThe
161*d46ba01eSSascha Wildner.Fn lgamma_r
16205a0b428SJohn Marinoand
163*d46ba01eSSascha Wildner.Fn lgammaf_r
164*d46ba01eSSascha Wildner.\"and
165*d46ba01eSSascha Wildner.\".Fn lgammal_r
16605a0b428SJohn Marinofunctions are
16705a0b428SJohn Marino.Bx
16805a0b428SJohn Marinoextensions.
16905a0b428SJohn Marino.Pp
17005a0b428SJohn Marino.Fn gamma
17105a0b428SJohn Marinoand
17205a0b428SJohn Marino.Fn gammaf
17305a0b428SJohn Marinoare deprecated aliases for
17405a0b428SJohn Marino.Fn lgamma
17505a0b428SJohn Marinoand
17605a0b428SJohn Marino.Fn lgammaf ,
17705a0b428SJohn Marinorespectively.
17805a0b428SJohn Marino.Sh HISTORY
17905a0b428SJohn MarinoA
18005a0b428SJohn Marino.Fn gamma
18105a0b428SJohn Marinofunction first appeared in
18205a0b428SJohn Marino.At v5 .
18305a0b428SJohn MarinoThe
18405a0b428SJohn Marino.Fn lgamma
18505a0b428SJohn Marinofunction first appeared in
18605a0b428SJohn Marino.Bx 4.3 .
18705a0b428SJohn MarinoThe
18805a0b428SJohn Marino.Fn tgamma
18905a0b428SJohn Marinofunction first appeared in
19005a0b428SJohn Marino.Ox 4.4 ,
19105a0b428SJohn Marinoand is based on the
19205a0b428SJohn Marino.Fn gamma
19305a0b428SJohn Marinofunction that appeared in
19405a0b428SJohn Marino.Bx 4.4
19505a0b428SJohn Marinoas a function to compute \(*G(x).
196