|
Текст подпрограммы и версий sf88r_c.zip sf88d_c.zip sf88c_c.zip |
Тексты тестовых примеров tsf88r_c.zip tsf88d_c.zip tsf88c_c.zip |
Вычисление конфлюентной гипергеометрической функции 1F1 (a, c; z) вещественного переменного z с вещественными параметрами a и c .
Подпрограмма sf88r_c вычисляет значение конфлюентной (вырожденной) гипергеометрической функции(ряда) 1F1 (a, c; z) при заданных значениях вещественного переменного z и вещественных параметров a, c посредством суммирования соответствующего ряда. Если прибавление нового члена ряда к накопленной его частичной сумме не изменяет ее значения, то вычисления заканчиваются, т.к. в этом случае достигнута машинная точность. Если после заданного заранее количества ITMAX таких итераций машинная точность не достигается, то выдается соответствующее диагностическое сообщение. В этом случае подпрограмма получает результат без гарантированной точности. Повторным обращением к подпрограмме с увеличенным значением ITMAX можно попытаться повысить точность результата. Выполненное количество итераций присваивается переменной ITER .
Абрамовиц М., Стиган И. Справочник по специальным функциям. М.: Наука, 1979.
int sf88r_c (real *a, real *c, real *z, integer *itmax,
real *s, integer *iter, integer *ierr)
Параметры
| a, c - | заданные значения параметров конфлюентной гипергеометрической функции (тип: вещественный); |
| z - | заданное значение переменной, при котором требуется вычислить конфлюентную гипергеометрическую функцию (тип: вещественный); |
| itmax - | заданное максимально допустимое количество итераций при суммировании ряда; |
| s - | вещественная переменная, значение которой на выходе полагается равным вычисленному значению функции; |
| iter - | целая переменная, значение которой на выходе полагается равным выполненному количеству итераций, требуемых для достижения машинной точности; |
| ierr - | целая переменная, служащая для сообщения об ошибках, обнаруженных в процессе счета; при этом: |
| ierr=65 - | когда машинная точность не достигается за заданное максимальное количество итераций itmax. |
Версии
| sf88d_c - | вычисление конфлюентной гипергеометрической функции 1F1 (a, c; z) вещественного переменного z с вещественными параметрами a и c в режиме удвоенной точности; при этом параметры a, c, z и s должны иметь тип double; |
| sf88c_c - | вычисление конфлюентной гипергеометрической функции 1F1 (a, c; z) комплексного переменного z с комплексными параметрами a и c; при этом параметры a, c, z и s должны иметь тип complex. |
Вызываемые подпрограммы:
|
utsf12_c - utsf13_c | подпрограммы выдачи диагностических сообщений при работе sf88r_c и sf88d_c соответственно. |
Замечания по использованию: нет
int main(void)
{
/* Local variables */
static int ierr, iter;
extern int sf88r_c(float *, float *, float *, int *,
float *, int *, int *);
static float a, c__, s, z__;
static int itmax;
a = 1.f;
c__ = 1.f;
z__ = -1.f;
itmax = 100;
sf88r_c(&a, &c__, &z__, &itmax, &s, &iter, &ierr);
printf("\n %16.7e \n", s);
printf("\n %5i %5i \n", iter, ierr);
return 0;
} /* main */
Результаты:
s = 0.3678794
iter = 21
ierr = 0