DOKK / manpages / debian 12 / manpages-ru-dev / tgamma.3.ru
tgamma(3) Library Functions Manual tgamma(3)

ИМЯ

tgamma, tgammaf, tgammal - вычисление настоящей гамма-функции

Math library (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), чтобы определить, какие ошибки могут возникать при вызове этих функций.

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

Ошибка области: x отрицательное целое или стремится к минус бесконечности
errno устанавливается в EDOM. Вызывается исключение неправильной плавающей запятой (FE_INVALID)).
Ошибка особой точки: x равно +0 или -0
errno устанавливается в ERANGE. Возникает исключение деления плавающей точки на ноль (FE_DIVBYZERO).
Ошибка диапазона: результат превысил разрядность
Значение errno устанавливается в ERANGE. Возникает исключение переполнения плавающей запятой (FE_OVERFLOW).

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

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

ВЕРСИИ

These functions were added in glibc 2.1.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
tgamma(), tgammaf(), tgammal() Безвредность в нитях MT-Safe

СТАНДАРТЫ

C99, POSIX.1-2001, POSIX.1-2008.

ЗАМЕЧАНИЯ

Эта функция называется «настоящей гамма-функцией» (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 версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

10 февраля 2023 г. Linux man-pages 6.03