tgamma(3)
β¨ tgamma, tgammaf, tgammal β the TRUE gamma function π
okay bestie so this is page tgamma(3) from the library functions manual, and it's the math-library baddie that computes the actual, no-impostor Gamma function. Two cousins ride along: tgammaf and tgammal. Let's get into it π«Ά
π LIBRARY
Math library, a.k.a. libm, and you link it with -lm. Yes queen, you actually have to link it. π
πΈ SYNOPSIS
#include <math.h>
double tgamma(double x);
float tgammaf(float x);
long double tgammal(long double x);
π Feature Test Macro Requirements for glibc (see feature_test_macros(7))
tgamma(),tgammaf(),tgammal()β_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
π DESCRIPTION
So these functions calculate the Gamma function of x. That's the whole job. Iconic. π
The Gamma function is defined by
Gamma(x) = integral from 0 to infinity of t^(x-1) e^-t dt
It is defined for every real number except for nonpositive integers. Those are the poles, bestie, and we do NOT go there. π«
For nonnegative integral m one has
Gamma(m+1) = m!
and, more generally, for all x:
Gamma(x+1) = x * Gamma(x)
Furthermore, the following is valid for all values of x outside the poles:
Gamma(x) * Gamma(1 - x) = PI / sin(PI * x)
the way this function just has a reflection formula? obsessed. periodt. β¨
π₯ RETURN VALUE
- On success, these functions return
Gamma(x). - If
xis a NaN, a NaN is returned. - If
xis positive infinity, positive infinity is returned. - If
xis a negative integer, or is negative infinity, a domain error occurs, and a NaN is returned. - If the result overflows, a range error occurs, and the functions return
HUGE_VAL,HUGE_VALF, orHUGE_VALL, respectively, with the correct mathematical sign. - If the result underflows, a range error occurs, and the functions return
0, with the correct mathematical sign. - If
xis-0or+0, a pole error occurs, and the functions returnHUGE_VAL,HUGE_VALF, orHUGE_VALL, respectively, with the same sign as the0.
π ERRORS
See math_error(7) for info on how to figure out whether an error actually happened when you called these functions. Basically the receipts. π§Ύ
The following errors can occur:
- Domain error:
xis a negative integer, or negative infinity βerrnois set toEDOM. An invalid floating-point exception (FE_INVALID) is raised (but see BUGS). - Pole error:
xis+0or-0βerrnois set toERANGE. A divide-by-zero floating-point exception (FE_DIVBYZERO) is raised. - Range error: result overflow β
errnois set toERANGE. An overflow floating-point exception (FE_OVERFLOW) is raised.
glibc also gives the following error which is not specified in C99 or POSIX.1-2001.
- Range error: result underflow β An underflow floating-point exception (
FE_UNDERFLOW) is raised, anderrnois set toERANGE.
π ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).
tgamma(),tgammaf(),tgammal()β Thread safety: MT-Safe π
β STANDARDS
C11, POSIX.1-2008.
π¦ HISTORY
glibc 2.1. C99, POSIX.1-2001.
πΈ NOTES
This function had to be called the "true gamma function" since there is already a function gamma(3) that returns something else (see gamma(3) for details). so yeah, it's giving name collision, and this one is the real one fr fr π
π BUGS
- Before glibc 2.18, the glibc implementation of these functions did not set
errnotoEDOMwhenxis negative infinity. - Before glibc 2.19, the glibc implementation of these functions did not set
errnotoERANGEon an underflow range error. - In glibc versions 2.3.3 and earlier, an argument of
+0or-0incorrectly produced a domain error (errnoset toEDOMand anFE_INVALIDexception raised), rather than a pole error. ancient history bestie, but now you know π
π«Ά SEE ALSO
ok that's the whole page, no cap. go forth and call your true gamma function, it's literally the main character of special functions π β¨
and that's a wrap from the Linux man-pages, version 6.20, dated 2026-02-08 β love u, bye bestie ππ
π¦ where this page comes from
- arch rolling: man-pages 6.20-1 Β· BSD-2-Clause AND BSD-3-Clause AND BSD-4.3TAHOE AND BSD-4-Clause-UC AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-linking-exception AND LGPL-3.0-or-later AND LicenseRef-Public-Domain AND LicenseRef-UltraPermissive AND Linux-man-pages-1-para AND Linux-man-pages-copyleft AND Linux-man-pages-copyleft-2-para AND Linux-man-pages-copyleft-var AND MIT AND Spencer-94
- nixpkgs unstable: man-pages 6.20
- π the page's license: GPL-1.0-or-later
- Copyright 2002, Walter Harms <walter.harms@informatik.uni-oldenburg.de>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms