Текст подпрограммы и версий sfg4r_c.zip sfg4d_c.zip |
Тексты тестовых примеров tsfg4r_c.zip tsfg4d_c.zip |
Вычисление неполной гамма - функции P (a, x) вещественного аргумента и вещественного параметра.
Подпрограмма - функция sfg4r_c вычисляет неполную гамма - функцию P (a, x):
x P(a, x) = 1/ Г(a) ∫ e -t t a -1 dt ( x ≥ 0 , a > 0 ) , 0
где через Г обозначена гамма - функция.
Если x < a + 1, то используется ряд:
∞ P(a, x) = [ e-x xa / Г(a) ] ∑ [ Г(a) / Г(a+1+n) ] xn n=0
Если x ≥ a + 1, то используется непрерывная дробь
P(a, x) = 1 - e-x xa / Г(a) [ 1 /( x+ (1-a) /(1+ 1 /(x+ (2-a) /(1+ 2 /(x+ ...)))) ] ( x > 0 )
Справочник по специальным функциям. Под ред. Абрамовица М. и Стигана И. Изд - во "Наука", 1979.
real sfg4r_c (real *a, real *x, real *eps, integer *itmax, integer *ierr)
Параметры
a - | заданное значение параметра a (тип: вещественный); |
x - | заданное значение параметра x (тип: вещественный); |
eps - | заданная относительная точность, с которой необходимо вычислить значение P (a, x) (тип: вещественный); |
itmax - | максимально допустимое количество членов ряда или непрерывной дроби, используемых при вычислении P (a, x) (тип: целый); |
ierr - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом |
ierr=65 - | значение аргумента x меньше 0; значение функции полагается равным наибольшему представимому на машине числу; |
ierr=66 - | значение аргумента a меньше или равно 0; значение функции полагается равным наибольшему представимому на машине числу; |
ierr=67 - | заданное максимальное количество итераций недостаточно для заданных значений a и eps; значение функции полагается равным наибольшему представимому на машине числу. |
Версии
sfg4d_c - | вычисление неполной гамма - функции P (a, x) вещественного аргумента и вещественного параметра в режиме удвоенной точности; при этом параметры a, x, eps имеют тип double, а функция sfg4d_c должна быть описана как double. |
Вызываемые подпрограммы
sf66r_c - sf66d_c | вычисление натурального логарифма гамма - функции Г (х) вещественного аргумента в режимах одинарной и удвоенной точности; используются в подпрограммах - функциях sfg4r_c и sfg4d_c соответственно; |
utsf10_c - utsf11_c | подпрограмма выдачи диагностических сообщений при работе подпрограмм - функций sfg4r_c и sfg4d_c соответственно. |
Замечания по использованию
В подпрограммах - функциях sfg4r_c и sfg4d_c используются рабочие подпрограммы sfg4r1_c, sfg4r2_c и sfg4d1_c, sfg4d2_c соответственно. |
int main(void) { /* Local variables */ static int ierr; extern float sfg4r_c(float *, float *, float *, int *, int *); static float a, r__, x; static int itmax; static float eps; a = .5f; x = 6.f; eps = 1e-6f; itmax = 100; r__ = (float)sfg4r_c(&a, &x, &eps, &itmax, &ierr); printf("\n %16.7e %5i \n",r__,ierr); return 0; } /* main */ Результаты: r__ = 0.999468 ierr = 0