Other Alias
tgammaf, tgammal
ОБЗОР
#include <math.h>
double tgamma(double x);
float tgammaf(float x);
long double tgammal(long double x);
Компонуется при указании параметра -lm.
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
tgamma(), tgammaf(), tgammal():
_XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;или cc -std=c99
ОПИСАНИЕ
Эти функции вычисляют гамма-функцию от x.
Гамма-функция определяется так:
Gamma(x) = integral from 0 to infinity of t^(x-1) e^-t dt
Она определена для всех действительных чисел кроме не положительных целых. Для не положительных интеграл m получим
Gamma(m+1) = m!
и, в общем случае, для всех x:
Gamma(x+1) = x * Gamma(x)
Кроме это, допустимы все значения x вне особых точек:
Gamma(x) * Gamma(1 - x) = PI / sin(PI * x)
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении данные функции возвращают Gamma(x).
Если x равно NaN, то будет возвращено NaN.
Если x стремится к плюс бесконечности, то будет возвращена плюс бесконечность.
Если x отрицательное целое или стремится к минус бесконечности, то будет сгенерирована ошибка выхода за пределы области, а в качестве результата будет возвращено NaN.
Если происходит переполнение результата, возникает ошибка диапазона, а функция возвращает HUGE_VAL, HUGE_VALF или HUGE_VALL, соответственно, с математически правильным знаком.
Если происходит потеря разрядов, то возникает ошибка диапазона, а функция возвращает 0 с математически правильным знаком.
Если x равно -0 или +0, то генерируется ошибка особой точки, а функции возвращают HUGE_VAL, HUGE_VALF или HUGE_VALL, соответственно, с тем же знаком что и 0.
ОШИБКИ
Смотрите math_error(7), чтобы определить, какие ошибки могут возникать
при вызове этих функций.
Могут возникать следующие ошибки:
Ошибка области: x отрицательное целое или стремится к минус бесконечности errno устанавливается в EDOM. Вызывается исключение неправильной плавающей запятой (FE_INVALID)).
Ошибка особой точки: x равно +0 или -0 errno устанавливается в ERANGE. Возникает исключение деления плавающей точки на ноль (FE_DIVBYZERO).
Ошибка диапазона: результат превысил разрядность Значение errno устанавливается в ERANGE. Возникает исключение переполнения плавающей запятой (FE_OVERFLOW).
В glibc также возникает следующая ошибка, которая не определена в C99 или POSIX.1-2001:
Ошибка диапазона: результат потерял разрядность Возникает исключение исчезновение порядка плавающей запятой (FE_UNDERFLOW). В данном случае errno не изменяется.
ВЕРСИИ
Эти функции впервые появились в glibc 2.1.
АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс Атрибут Значение
tgamma(),
tgammaf(),
tgammal()
безвредность в потоках: безвредно (MT-Safe)
СООТВЕТСТВИЕ СТАНДАРТАМ
C99, POSIX.1-2001, POSIX.1-2008.
ЗАМЕЧАНИЯ
Эта функция называется «настоящей гамма-функцией» (true gamma function), так
как уже есть функция gamma(3), возвращающая совершенно другое значение
(смотрите gamma(3)).
ДЕФЕКТЫ
До версии 2.18 реализации этих функций в glibc при возникновении ошибки потери значимости не присваивали errno значение ERANGE.В glibc версии 2.3.3 и старее при значении +0 или -0 некорректно возникает ошибка области (errno присваивается EDOM и возникает исключение FE_INVALID), а не ошибка особой точки.