Вернуть значение натурального логарифма от гамма-функции
#include <math.h>double gamma( double x );double gamma_r( double x,int *signgam );float gammaf( float x );float gammaf_r( float x,int *signgam );
libm
Функции gamma() и gamma_r() возвращают натуральный логарифм (ln) от gamma() функции и эквивалентны lgamma(). Данные функции возвращают ln|Γ( x )|, где Γ( x ) определена следующим образом:
Для x > 0:
Для x < 1: n / (Γ( 1 - x ) * sin( nx ))
Результаты сходятся, когда x находится в диапазоне от 0
до 1
. Функция Г имеет свойство:
Γ( N ) = Γ( N - 1 ) × N
Функции gamma*() вычисляют логарифм, потому что функция Г растет очень быстро.
Функции gamma() и gammaf() используют внешнее целое число signgam для возвращения знака Γ( x ), в то время как gamma_r() и gammaf_r() используют память, выделенную пользователем по адресу signgamp.
![]() | Переменная signgam не инициализирована до тех пор, пока не завершится gamma() или gammaf(). Например, выражение:
для вычисления g = Γ( x )'. Вместо этого, вычислите сначала gamma():
|
Обратите внимание, что Γ( x ) должна переполниться при больших значениях x, и иметь крайне малые значения при больших значениях -x, и генерировать исключение деления на 0
при случаях, когда x является неположительным целым числом.
ln|Γ( x )|
![]() | В случае возникновения ошибки, эти функции возвращают 0 , который также может быть и достоверным математическим результатом. Если вам необходимо проверить, возникла ли ошибка, установите errno в 0 , вызовите функцию, и затем снова проверьте errno. Эти функции не изменяют errno в случае отсутствия ошибок. |
Legacy Unix
Предыдущий раздел: Описание API математической библиотеки