tgamma(3)

НАИМЕНОВАНИЕ
tgamma, tgammaf, tgammal - вычисление настоящей гамма-функции

БИБЛИОТЕКА
Математическая библиотека (libm, -lm)

СИНТАКСИС
#include <math.h>

double tgamma(double x);
float tgammaf(float x);
long double tgammal(long double x);

    Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

tgamma(), tgammaf(), tgammal():
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

ОПИСАНИЕ
Эти функции вычисляют гамма-функцию от 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), чтобы определить, какие ошибки могут возникать при вызове этих функций.

Могут возникать следующие ошибки:

Domain error: x is a negative integer, or negative infinity
    errno устанавливается в EDOM. Вызывается исключение неправильной плавающей запятой (FE_INVALID)).

Pole error: x is +0 or -0
    errno устанавливается в ERANGE. Возникает исключение деления плавающей точки на ноль (FE_DIVBYZERO).

Ошибка диапазона: результат превысил разрядность
    Значение errno устанавливается в ERANGE. Возникает исключение переполнения плавающей запятой (FE_OVERFLOW).

В glibc также возникает следующая ошибка, которая не определена в C99 или POSIX.1-2001:

Ошибка диапазона: результат исчерпал степень
    Возникает исключение исчерпания степени чисел с плавающей запятой (FE_UNDERFLOW) и errno присваивается ERANGE.

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
tgamma(), tgammaf(), tgammal() | Безвредность в нитях | MT-Safe

СТАНДАРТЫ
C11, POSIX.1-2008.

ИСТОРИЯ
glibc 2.1. C99, POSIX.1-2001.

ПРИМЕЧАНИЯ
Эта функция называется «настоящей гамма-функцией» (true gamma function), так как уже есть функция gamma(3), возвращающая совершенно другое значение (смотрите gamma(3)).

ПРОГРАММНЫЕ ОШИБКИ
Before glibc 2.18, the glibc implementation of these functions did not set errno to EDOM when x is negative infinity.

Before glibc 2.19, the glibc implementation of these functions did not set errno to ERANGE on an underflow range error.

В glibc версии 2.3.3 и старее при значении +0 или -0 некорректно возникает ошибка области (errno присваивается EDOM и возникает исключение FE_INVALID), а не ошибка особой точки.

СМОТРИТЕ ТАКЖЕ
gamma(3), lgamma(3)

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (debian-l10n-russian@lists.debian.org).