Текст подпрограммы и версий
sf88r_c.zip  sf88d_c.zip  sf88c_c.zip 
Тексты тестовых примеров
tsf88r_c.zip  tsf88d_c.zip  tsf88c_c.zip 

Подпрограмма:  sf88r_c

Назначение

Вычисление конфлюентной гипергеометрической функции  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