Текст подпрограммы и версий
sf87r_c.zip  sf87d_c.zip  sf87c_c.zip 
Тексты тестовых примеров
tsf87r_c.zip  tsf87d_c.zip  tsf87c_c.zip 

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

Назначение

Вычисление гипергеометрической функции 2F1 (a, b; c; z) вещественного переменного  z  с вещественными параметрами  a, b, c .

Математическое описание

Подпрограмма sf87r_c вычисляет значение гипергеометрической функции(ряда)  2F1 (a, b; c; z)  при заданных значениях вещественного переменного  z  и вещественных параметров  a, b, c посредством суммирования соответствующего ряда. Если прибавление нового члена ряда к накопленной его частичной сумме не изменяет ее значения, то вычисления заканчиваются, т.к. в этом случае достигнута машинная точность. Если после заданного заранее количества ITMAX таких итераций машинная точность не достигается, то выдается соответствующее диагностическое сообщение. В этом случае подпрограмма получает результат без гарантированной точности. Повторным обращением к подпрограмме с увеличенным значением ITMAX можно попытаться повысить точность результата. Выполненное количество итераций присваивается переменной ITER .

Абрамовиц М., Стиган И. Справочник по специальным функциям. М.: Наука, 1979.

Использование

    int sf87r_c (real *a, real *b, real *c, real *z,
            integer *itmax, real *s, integer *iter, integer *ierr)

Параметры

a,b,c - заданные значения параметров гипергеометрической функции (тип: вещественный);
z - заданное значение переменной, для которой требуется вычислить гипергеометрическую функцию (тип: вещественный);
itmax - заданное максимально допустимое количество итераций при суммировании ряда;
s - вещественная переменная, значение которой на выходе полагается равным вычисленному значению функции;
iter - целая переменная, значение которой на выходе полагается равным выполненному количеству итераций, требуемых для достижения машинной точности;
ierr - целая переменная, служащая для сообщения об ошибках, обнаруженных в процессе счета; при этом:
ierr=65 - когда машинная точность не достигается за заданное максимальное количество итераций itmax.

Версии

sf87d_c - вычисление гипергеометрической функции 2F1 (a, b; c; z) вещественного переменного  z с вещественными параметрами  a, b, c в режиме удвоенной точности; при этом параметры a, b, c, z и s должны иметь тип double;
sf87c_c - вычисление гипергеометрической функции 2F1 (a, b; c; z) комплексного переменного  z с комплексными параметрами  a, b, c; при этом параметры a, b, c, z и s должны иметь тип complex.

Вызываемые подпрограммы:

      utsf12_c -
      utsf13_c  
подпрограммы выдачи диагностических сообщений при работе sf87r_c и sf87d_c соответственно.

Замечания по использованию: нет

Пример использования

int main(void)
{
    /* Local variables */
    static int ierr, iter;
    extern int sf87r_c(float *, float *, float *, float *,
                       int *, float *, int *, int *);
    static float a, b, c__, s, z__;
    static int itmax;

    a = 1.f;
    b = 1.f;
    c__ = 1.f;
    z__ = .5f;
    itmax = 100;
    sf87r_c(&a, &b, &c__, &z__, &itmax, &s, &iter, &ierr);

    printf("\n %16.7e \n", s);
    printf("\n %5i  %5i \n", iter, ierr);
    return 0;
} /* main */


Результаты:

        s = 2.0 
        iter = 62 
        ierr = 0