Scroll to navigation

TGAMMA(3) Руководство программиста Linux TGAMMA(3)

ИМЯ

tgamma, 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():

_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.

ВЕРСИИ

Эти функции впервые появились в 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.19 при возникновении ошибки исчерпания степени errno не устанавливалось в значение ERANGE. x

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

СМ. ТАКЖЕ

gamma(3), lgamma(3)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан 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.

15 сентября 2017 г. GNU